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
@@ -7,6 +7,18 @@ import { resolveFieldConfig, implicitRulesForType } from '../../utils/keyboardTy
7
7
  import { sanitizeNumeric, sanitizePhone, truncate } from '../../utils/formatters';
8
8
  import { runRules } from '../../validation/validators';
9
9
  import { renderFieldFlowIcon } from '../../icons/renderIcon';
10
+ import { useFieldMotion } from '../../motion/useFieldMotion';
11
+ import { FieldFlowAffordance } from '../FieldFlowAffordance';
12
+ import { FieldFlowPasswordStrength } from '../FieldFlowPasswordStrength';
13
+ import { FieldFlowInfoTip } from '../FieldFlowInfoTip';
14
+ import {
15
+ affordanceKindFromFieldType,
16
+ type FieldFlowAffordanceKind,
17
+ } from '../../utils/affordance';
18
+ import {
19
+ autofillRoleFromFieldType,
20
+ getAutofillProps,
21
+ } from '../../autofill/profiles';
10
22
  import { createStyles, iconColorFor, labelColorFor } from './styles';
11
23
  import type { FieldFlowInputProps } from './types';
12
24
 
@@ -45,6 +57,16 @@ export const FieldFlowInput = forwardRef<TextInput, FieldFlowInputProps>(functio
45
57
  onRightIconPress,
46
58
  iconSize = 18,
47
59
  clearable,
60
+ suggestions,
61
+ suggestionsAlwaysVisible = false,
62
+ showStrength,
63
+ prefix,
64
+ suffix,
65
+ motion = true,
66
+ autofill,
67
+ inputAccessoryViewID,
68
+ helperStatus,
69
+ infoTip,
48
70
  maxLength,
49
71
  showCharacterCount,
50
72
  onSubmitEditing,
@@ -84,6 +106,11 @@ export const FieldFlowInput = forwardRef<TextInput, FieldFlowInputProps>(functio
84
106
  [type, required, rules],
85
107
  );
86
108
 
109
+ const autofillProps = useMemo(() => {
110
+ const role = autofill ?? autofillRoleFromFieldType(type);
111
+ return role ? getAutofillProps(role) : undefined;
112
+ }, [autofill, type]);
113
+
87
114
  const resolvedError = errorText ?? localError;
88
115
  const state = useFieldState({
89
116
  isFocused,
@@ -100,6 +127,14 @@ export const FieldFlowInput = forwardRef<TextInput, FieldFlowInputProps>(functio
100
127
  );
101
128
  const iconColor = iconColorFor(theme, state);
102
129
 
130
+ const fieldMotion = useFieldMotion({
131
+ enabled: motion,
132
+ isFocused,
133
+ hasError: Boolean(hasError || resolvedError),
134
+ isSuccess: Boolean(isSuccess || successText),
135
+ duration: theme.animation.duration,
136
+ });
137
+
103
138
  const isFloating = variant === 'floating';
104
139
  const floatUp = isFocused || currentValue.length > 0;
105
140
  const floatAnim = useRef(new Animated.Value(floatUp ? 1 : 0)).current;
@@ -138,17 +173,34 @@ export const FieldFlowInput = forwardRef<TextInput, FieldFlowInputProps>(functio
138
173
  [type, maxLength, isControlled, onChangeText, validateOnChange, runValidation],
139
174
  );
140
175
 
176
+ const blurHideTimer = useRef<ReturnType<typeof setTimeout> | null>(null);
177
+
141
178
  const handleFocus = useCallback(() => {
179
+ if (blurHideTimer.current) {
180
+ clearTimeout(blurHideTimer.current);
181
+ blurHideTimer.current = null;
182
+ }
142
183
  setIsFocused(true);
143
184
  onFocus?.();
144
185
  }, [onFocus]);
145
186
 
146
187
  const handleBlur = useCallback(() => {
147
- setIsFocused(false);
188
+ // Delay hiding suggestion chips so a chip press can register first
189
+ blurHideTimer.current = setTimeout(() => {
190
+ setIsFocused(false);
191
+ blurHideTimer.current = null;
192
+ }, 180);
148
193
  runValidation(currentValue);
149
194
  onBlur?.();
150
195
  }, [runValidation, currentValue, onBlur]);
151
196
 
197
+ useEffect(
198
+ () => () => {
199
+ if (blurHideTimer.current) clearTimeout(blurHideTimer.current);
200
+ },
201
+ [],
202
+ );
203
+
152
204
  const handleClear = useCallback(() => {
153
205
  if (!isControlled) setInternalValue('');
154
206
  onChangeText?.('');
@@ -197,78 +249,205 @@ export const FieldFlowInput = forwardRef<TextInput, FieldFlowInputProps>(functio
197
249
 
198
250
  const showExternalLabel = Boolean(label) && !isFloating;
199
251
 
252
+ const affordanceConfig = useMemo(() => {
253
+ if (!suggestions) return null;
254
+ if (suggestions === true) {
255
+ const kind = affordanceKindFromFieldType(type);
256
+ return kind ? { kind, chips: undefined as undefined } : null;
257
+ }
258
+ if (typeof suggestions === 'string') {
259
+ return { kind: suggestions as FieldFlowAffordanceKind, chips: undefined as undefined };
260
+ }
261
+ return { kind: 'custom' as FieldFlowAffordanceKind, chips: suggestions };
262
+ }, [suggestions, type]);
263
+
264
+ const showAffordance =
265
+ Boolean(affordanceConfig) &&
266
+ !disabled &&
267
+ !readOnly &&
268
+ (suggestionsAlwaysVisible || isFocused);
269
+
270
+ const renderAffix = (affix: string | React.ReactNode | undefined, side: 'left' | 'right') => {
271
+ if (affix == null || affix === false) return null;
272
+ if (typeof affix === 'string') {
273
+ return (
274
+ <Text
275
+ style={[
276
+ styles.affixText,
277
+ side === 'left' ? styles.iconSlotLeft : styles.iconSlotRight,
278
+ ]}
279
+ numberOfLines={1}
280
+ >
281
+ {affix}
282
+ </Text>
283
+ );
284
+ }
285
+ return <View style={side === 'left' ? styles.iconSlotLeft : styles.iconSlotRight}>{affix}</View>;
286
+ };
287
+
288
+ const focusRing = theme.appearance?.focusRing ?? 'softGlow';
289
+ const showFocusRing = motion && focusRing !== 'underlinePulse';
290
+ const resolvedHelperStatus =
291
+ helperStatus ??
292
+ (resolvedError ? 'error' : successText ? 'success' : helperText ? 'info' : 'none');
293
+
294
+ const helperIconName =
295
+ resolvedHelperStatus === 'success'
296
+ ? 'check'
297
+ : resolvedHelperStatus === 'error' || resolvedHelperStatus === 'warning'
298
+ ? 'alert'
299
+ : resolvedHelperStatus === 'info'
300
+ ? 'info'
301
+ : null;
302
+
303
+ const helperIconColor =
304
+ resolvedHelperStatus === 'success'
305
+ ? theme.colors.success
306
+ : resolvedHelperStatus === 'error'
307
+ ? theme.colors.error
308
+ : resolvedHelperStatus === 'warning'
309
+ ? theme.colors.warning
310
+ : theme.colors.info;
311
+
312
+ const helperTextStyle =
313
+ resolvedError
314
+ ? styles.errorText
315
+ : successText
316
+ ? styles.successText
317
+ : resolvedHelperStatus === 'warning'
318
+ ? styles.warningText
319
+ : resolvedHelperStatus === 'info' && helperText
320
+ ? styles.infoText
321
+ : styles.helperText;
322
+
200
323
  return (
201
324
  <View style={[styles.wrapper, containerStyle]} testID={testID}>
202
325
  {showExternalLabel ? (
203
- <Text style={[styles.label, labelStyle]}>
204
- {label}
205
- {required ? ' *' : ''}
206
- </Text>
207
- ) : null}
208
-
209
- <View style={[styles.inputContainer, inputContainerStyle]}>
210
- {isFloating && label ? (
211
- <Animated.Text style={[styles.floatingLabel, floatingLabelStyle, labelStyle]} pointerEvents="none">
326
+ <View style={styles.labelRow}>
327
+ <Text style={[styles.label, labelStyle]}>
212
328
  {label}
213
329
  {required ? ' *' : ''}
214
- </Animated.Text>
215
- ) : null}
216
-
217
- {resolvedLeftIcon ? (
218
- <Pressable
219
- onPress={onLeftIconPress}
220
- disabled={!onLeftIconPress}
221
- style={[styles.iconSlot, styles.iconSlotLeft]}
222
- hitSlop={8}
223
- accessibilityRole={onLeftIconPress ? 'button' : undefined}
224
- >
225
- {renderFieldFlowIcon(resolvedLeftIcon, iconColor, iconSize)}
226
- </Pressable>
227
- ) : null}
228
-
229
- <TextInput
230
- ref={innerRef}
330
+ </Text>
331
+ {infoTip ? <FieldFlowInfoTip tip={infoTip} theme={themeOverride} /> : null}
332
+ </View>
333
+ ) : null}
334
+
335
+ <Animated.View style={fieldMotion.containerStyle}>
336
+ <View style={[styles.inputContainer, inputContainerStyle]}>
337
+ {showFocusRing ? (
338
+ <Animated.View
339
+ pointerEvents="none"
340
+ style={[
341
+ styles.focusGlow,
342
+ {
343
+ opacity: fieldMotion.glowOpacity.interpolate({
344
+ inputRange: [0, 1],
345
+ outputRange: [0, focusRing === 'solid' ? 1 : 0.22],
346
+ }),
347
+ borderColor: theme.colors.borderFocused,
348
+ },
349
+ ]}
350
+ />
351
+ ) : null}
352
+
353
+ {isFloating && label ? (
354
+ <Animated.Text style={[styles.floatingLabel, floatingLabelStyle, labelStyle]} pointerEvents="none">
355
+ {label}
356
+ {required ? ' *' : ''}
357
+ </Animated.Text>
358
+ ) : null}
359
+
360
+ {resolvedLeftIcon ? (
361
+ <Pressable
362
+ onPress={onLeftIconPress}
363
+ disabled={!onLeftIconPress}
364
+ style={[styles.iconSlot, styles.iconSlotLeft]}
365
+ hitSlop={8}
366
+ accessibilityRole={onLeftIconPress ? 'button' : undefined}
367
+ >
368
+ {renderFieldFlowIcon(resolvedLeftIcon, iconColor, iconSize)}
369
+ </Pressable>
370
+ ) : null}
371
+
372
+ {renderAffix(prefix, 'left')}
373
+
374
+ <TextInput
375
+ ref={innerRef}
376
+ value={currentValue}
377
+ onChangeText={handleChangeText}
378
+ onFocus={handleFocus}
379
+ onBlur={handleBlur}
380
+ onSubmitEditing={onSubmitEditing}
381
+ editable={!disabled && !readOnly && !loading}
382
+ placeholder={isFloating ? (floatUp ? placeholder : undefined) : placeholder}
383
+ placeholderTextColor={theme.colors.placeholder}
384
+ keyboardType={fieldConfig.keyboardType}
385
+ secureTextEntry={fieldConfig.secureTextEntry && !showPassword}
386
+ autoCapitalize={autofillProps?.autoCapitalize ?? fieldConfig.autoCapitalize}
387
+ autoCorrect={autofillProps?.autoCorrect ?? fieldConfig.autoCorrect}
388
+ multiline={fieldConfig.multiline && type !== 'chat'}
389
+ maxLength={maxLength}
390
+ returnKeyType={fieldConfig.multiline ? 'default' : 'done'}
391
+ inputAccessoryViewID={inputAccessoryViewID}
392
+ style={[styles.input, inputStyle]}
393
+ {...autofillProps}
394
+ {...rest}
395
+ />
396
+
397
+ {renderAffix(suffix, 'right')}
398
+
399
+ {resolvedRightIcon ? (
400
+ <Animated.View style={{ transform: [{ scale: fieldMotion.successScale }] }}>
401
+ <Pressable
402
+ onPress={rightIconPress}
403
+ disabled={!rightIconPress}
404
+ style={[styles.iconSlot, styles.iconSlotRight]}
405
+ hitSlop={8}
406
+ accessibilityRole={rightIconPress ? 'button' : undefined}
407
+ >
408
+ {renderFieldFlowIcon(resolvedRightIcon, iconColor, iconSize)}
409
+ </Pressable>
410
+ </Animated.View>
411
+ ) : null}
412
+ </View>
413
+ </Animated.View>
414
+
415
+ {showAffordance && affordanceConfig ? (
416
+ <FieldFlowAffordance
417
+ kind={affordanceConfig.kind}
418
+ chips={affordanceConfig.chips}
231
419
  value={currentValue}
232
- onChangeText={handleChangeText}
233
- onFocus={handleFocus}
234
- onBlur={handleBlur}
235
- onSubmitEditing={onSubmitEditing}
236
- editable={!disabled && !readOnly && !loading}
237
- placeholder={isFloating ? (floatUp ? placeholder : undefined) : placeholder}
238
- placeholderTextColor={theme.colors.placeholder}
239
- keyboardType={fieldConfig.keyboardType}
240
- secureTextEntry={fieldConfig.secureTextEntry && !showPassword}
241
- autoCapitalize={fieldConfig.autoCapitalize}
242
- autoCorrect={fieldConfig.autoCorrect}
243
- multiline={fieldConfig.multiline && type !== 'chat'}
244
- maxLength={maxLength}
245
- returnKeyType={fieldConfig.multiline ? 'default' : 'done'}
246
- style={[styles.input, inputStyle]}
247
- {...rest}
420
+ onSelect={next => {
421
+ handleChangeText(next);
422
+ innerRef.current?.focus();
423
+ }}
424
+ theme={themeOverride}
248
425
  />
426
+ ) : null}
249
427
 
250
- {resolvedRightIcon ? (
251
- <Pressable
252
- onPress={rightIconPress}
253
- disabled={!rightIconPress}
254
- style={[styles.iconSlot, styles.iconSlotRight]}
255
- hitSlop={8}
256
- accessibilityRole={rightIconPress ? 'button' : undefined}
257
- >
258
- {renderFieldFlowIcon(resolvedRightIcon, iconColor, iconSize)}
259
- </Pressable>
260
- ) : null}
261
- </View>
428
+ {type === 'password' && showStrength ? (
429
+ <FieldFlowPasswordStrength
430
+ password={currentValue}
431
+ showRules={typeof showStrength === 'object' ? showStrength.showRules : true}
432
+ rules={typeof showStrength === 'object' ? showStrength.rules : undefined}
433
+ theme={themeOverride}
434
+ />
435
+ ) : null}
262
436
 
263
437
  {(helperText || resolvedError || successText || (showCharacterCount && maxLength)) && (
264
- <View style={styles.footerRow}>
265
- <View style={{ flex: 1 }}>
438
+ <Animated.View style={[styles.footerRow, { opacity: fieldMotion.messageOpacity }]}>
439
+ <View style={styles.helperRow}>
440
+ {helperIconName && (resolvedError || successText || helperText) ? (
441
+ <View style={{ marginTop: 1 }}>
442
+ {renderFieldFlowIcon(helperIconName, helperIconColor, 13)}
443
+ </View>
444
+ ) : null}
266
445
  {resolvedError ? (
267
- <Text style={[styles.errorText, errorStyle, helperStyle]}>{resolvedError}</Text>
446
+ <Text style={[helperTextStyle, errorStyle, helperStyle]}>{resolvedError}</Text>
268
447
  ) : successText ? (
269
- <Text style={[styles.successText, helperStyle]}>{successText}</Text>
448
+ <Text style={[helperTextStyle, helperStyle]}>{successText}</Text>
270
449
  ) : helperText ? (
271
- <Text style={[styles.helperText, helperStyle]}>{helperText}</Text>
450
+ <Text style={[helperTextStyle, helperStyle]}>{helperText}</Text>
272
451
  ) : null}
273
452
  </View>
274
453
  {showCharacterCount && maxLength ? (
@@ -276,7 +455,7 @@ export const FieldFlowInput = forwardRef<TextInput, FieldFlowInputProps>(functio
276
455
  {currentValue.length}/{maxLength}
277
456
  </Text>
278
457
  ) : null}
279
- </View>
458
+ </Animated.View>
280
459
  )}
281
460
  </View>
282
461
  );
@@ -1,5 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import type { FieldFlowState, FieldFlowTheme, FieldFlowVariant } from '../../types';
3
+ import { surfaceShadow } from '../../theme/appearance';
3
4
 
4
5
  export function borderColorFor(theme: FieldFlowTheme, state: FieldFlowState): string {
5
6
  switch (state) {
@@ -33,32 +34,51 @@ export function createStyles(
33
34
  const isUnderline = variant === 'underline';
34
35
  const isFilled = variant === 'filled';
35
36
  const isFloating = variant === 'floating';
37
+ const appearance = theme.appearance;
38
+ const surface = appearance?.surface ?? 'flat';
39
+ const focusRing = appearance?.focusRing ?? 'softGlow';
36
40
  const borderW = state === 'focused' ? theme.spacing.borderWidthFocused : theme.spacing.borderWidth;
41
+ const shadow = !isUnderline ? surfaceShadow(surface) : null;
42
+
43
+ let backgroundColor = theme.colors.background;
44
+ if (state === 'disabled') backgroundColor = theme.colors.backgroundDisabled;
45
+ else if (isFilled || surface === 'soft') backgroundColor = theme.colors.surfaceMuted ?? theme.colors.backgroundDisabled;
46
+ else if (surface === 'inset') backgroundColor = theme.colors.surfaceMuted ?? theme.colors.backgroundDisabled;
47
+ else if (surface === 'elevated') backgroundColor = theme.colors.surfaceElevated ?? theme.colors.background;
48
+ else if (isUnderline) backgroundColor = 'transparent';
49
+
50
+ const glowPad = focusRing === 'solid' ? 2 : focusRing === 'softGlow' ? 3 : 0;
37
51
 
38
52
  return StyleSheet.create({
39
53
  wrapper: {
40
54
  marginBottom: theme.spacing.gap * 2,
41
55
  },
56
+ labelRow: {
57
+ flexDirection: 'row',
58
+ alignItems: 'center',
59
+ gap: 6,
60
+ marginBottom: theme.spacing.gap / 1.5,
61
+ },
42
62
  label: {
43
63
  fontSize: theme.typography.labelFontSize,
44
- marginBottom: theme.spacing.gap / 1.5,
45
64
  color: labelColorFor(theme, state),
46
65
  fontWeight: '500',
47
66
  fontFamily: theme.typography.fontFamily,
67
+ flexShrink: 1,
48
68
  },
49
69
  inputContainer: {
70
+ position: 'relative',
71
+ overflow: 'visible',
50
72
  flexDirection: 'row',
51
73
  alignItems: multiline ? 'flex-start' : 'center',
52
- backgroundColor: state === 'disabled'
53
- ? theme.colors.backgroundDisabled
54
- : isFilled
55
- ? theme.colors.backgroundDisabled
56
- : isUnderline
57
- ? 'transparent'
58
- : theme.colors.background,
74
+ backgroundColor,
59
75
  borderRadius: isUnderline ? 0 : theme.spacing.borderRadius,
60
- borderWidth: isUnderline ? 0 : isFilled ? 0 : borderW,
61
- borderBottomWidth: isUnderline ? borderW + (state === 'focused' ? 0.5 : 0) : isFilled ? 0 : borderW,
76
+ borderWidth: isUnderline ? 0 : isFilled && surface !== 'inset' ? 0 : borderW,
77
+ borderBottomWidth: isUnderline
78
+ ? borderW + (state === 'focused' && focusRing === 'underlinePulse' ? 1 : state === 'focused' ? 0.5 : 0)
79
+ : isFilled && surface !== 'inset'
80
+ ? 0
81
+ : borderW,
62
82
  borderColor: borderColorFor(theme, state),
63
83
  paddingHorizontal: theme.spacing.paddingHorizontal,
64
84
  paddingVertical: multiline ? theme.spacing.paddingVertical : 0,
@@ -66,11 +86,29 @@ export function createStyles(
66
86
  ? undefined
67
87
  : theme.spacing.paddingVertical * 2 + theme.typography.fontSize + 6 + (isFloating ? 6 : 0),
68
88
  paddingTop: isFloating && !multiline ? theme.spacing.paddingVertical + 6 : undefined,
89
+ ...(shadow ?? null),
90
+ },
91
+ focusGlow: {
92
+ position: 'absolute',
93
+ top: -glowPad,
94
+ left: -glowPad,
95
+ right: -glowPad,
96
+ bottom: -glowPad,
97
+ borderWidth: focusRing === 'solid' ? 2 : focusRing === 'softGlow' ? 3 : 0,
98
+ borderRadius: theme.spacing.borderRadius + glowPad,
99
+ },
100
+ affixText: {
101
+ fontSize: theme.typography.fontSize,
102
+ color: theme.colors.label,
103
+ fontFamily: theme.typography.fontFamily,
104
+ fontWeight: '500',
69
105
  },
70
106
  floatingLabel: {
71
107
  position: 'absolute',
72
108
  left: theme.spacing.paddingHorizontal,
73
- backgroundColor: isFilled ? theme.colors.backgroundDisabled : theme.colors.background,
109
+ backgroundColor: isFilled || surface === 'soft' || surface === 'inset'
110
+ ? theme.colors.surfaceMuted ?? theme.colors.backgroundDisabled
111
+ : theme.colors.background,
74
112
  paddingHorizontal: 4,
75
113
  zIndex: 2,
76
114
  fontFamily: theme.typography.fontFamily,
@@ -98,8 +136,16 @@ export function createStyles(
98
136
  },
99
137
  footerRow: {
100
138
  flexDirection: 'row',
139
+ alignItems: 'flex-start',
101
140
  justifyContent: 'space-between',
102
141
  marginTop: theme.spacing.gap / 1.5,
142
+ gap: 6,
143
+ },
144
+ helperRow: {
145
+ flex: 1,
146
+ flexDirection: 'row',
147
+ alignItems: 'flex-start',
148
+ gap: 6,
103
149
  },
104
150
  helperText: {
105
151
  fontSize: theme.typography.helperFontSize,
@@ -119,6 +165,18 @@ export function createStyles(
119
165
  flexShrink: 1,
120
166
  fontFamily: theme.typography.fontFamily,
121
167
  },
168
+ warningText: {
169
+ fontSize: theme.typography.helperFontSize,
170
+ color: theme.colors.warning,
171
+ flexShrink: 1,
172
+ fontFamily: theme.typography.fontFamily,
173
+ },
174
+ infoText: {
175
+ fontSize: theme.typography.helperFontSize,
176
+ color: theme.colors.info,
177
+ flexShrink: 1,
178
+ fontFamily: theme.typography.fontFamily,
179
+ },
122
180
  charCount: {
123
181
  fontSize: theme.typography.helperFontSize,
124
182
  color: theme.colors.placeholder,
@@ -1,6 +1,10 @@
1
+ import type React from 'react';
1
2
  import type { TextInputProps, ViewStyle, TextStyle } from 'react-native';
2
3
  import type { FieldFlowFieldType, FieldFlowRules, FieldFlowVariant, DeepPartial, FieldFlowTheme } from '../../types';
3
4
  import type { FieldFlowIconSource } from '../../icons';
5
+ import type { FieldFlowAffordanceChip, FieldFlowAffordanceKind } from '../../utils/affordance';
6
+ import type { PasswordStrengthRule } from '../../utils/passwordStrength';
7
+ import type { FieldFlowAutofillRole } from '../../autofill/profiles';
4
8
 
5
9
  export interface FieldFlowInputProps
6
10
  extends Omit<TextInputProps, 'style' | 'onChangeText' | 'onFocus' | 'onBlur' | 'onSubmitEditing'> {
@@ -56,6 +60,56 @@ export interface FieldFlowInputProps
56
60
  /** Shows an "x" clear button when there's text (defaults to true for `search`, false otherwise). */
57
61
  clearable?: boolean;
58
62
 
63
+ /**
64
+ * Smart suggestion chips shown while the field is focused.
65
+ * - `true` — infer from `type` (email → domains, phone → dial codes, number/decimal → currency)
66
+ * - `'email' | 'phone' | 'currency'` — force a preset
67
+ * - `string[]` / chip objects — fully custom list
68
+ */
69
+ suggestions?: boolean | FieldFlowAffordanceKind | FieldFlowAffordanceChip[] | string[];
70
+ /** Keep suggestion chips visible even when blurred. Default: false. */
71
+ suggestionsAlwaysVisible?: boolean;
72
+
73
+ /**
74
+ * Show a password strength meter under the field (only meaningful for `type="password"`).
75
+ * Pass `true` for defaults, or `{ showRules?: boolean; rules?: PasswordStrengthRule[] }`.
76
+ */
77
+ showStrength?: boolean | { showRules?: boolean; rules?: PasswordStrengthRule[] };
78
+
79
+ /**
80
+ * Text or node rendered inside the field before the value (e.g. `+92`, `$`, `https://`).
81
+ * Shown in addition to `leftIcon` when both are set.
82
+ */
83
+ prefix?: string | React.ReactNode;
84
+ /** Text or node rendered inside the field after the value (e.g. `kg`, `.com`). */
85
+ suffix?: string | React.ReactNode;
86
+
87
+ /**
88
+ * Micro-interactions: focus glow, error shake, message fade, success pop.
89
+ * Respects OS Reduce Motion. Default: true.
90
+ */
91
+ motion?: boolean;
92
+
93
+ /**
94
+ * Platform autofill role (`email`, `password`, `oneTimeCode`, …).
95
+ * When omitted, a sensible default is inferred from `type` (email/phone/password).
96
+ * Pass `off` to disable. See `autofillProfiles` for screen bundles.
97
+ */
98
+ autofill?: FieldFlowAutofillRole;
99
+
100
+ /**
101
+ * iOS keyboard accessory id — pair with `FieldFlowKeyboardToolbar` `nativeID`.
102
+ */
103
+ inputAccessoryViewID?: string;
104
+
105
+ /**
106
+ * Soft status icon beside helper / success / warning copy.
107
+ * Error state always shows an alert icon when helperStatus is unset.
108
+ */
109
+ helperStatus?: 'info' | 'success' | 'warning' | 'error' | 'none';
110
+ /** Tip text — renders a `FieldFlowInfoTip` next to the label. */
111
+ infoTip?: string;
112
+
59
113
  maxLength?: number;
60
114
  showCharacterCount?: boolean;
61
115