rn-inputforge 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +909 -20
  2. package/lib/commonjs/adapters/index.js +25 -0
  3. package/lib/commonjs/adapters/index.js.map +1 -0
  4. package/lib/commonjs/adapters/reactHookForm.js +107 -0
  5. package/lib/commonjs/adapters/reactHookForm.js.map +1 -0
  6. package/lib/commonjs/components/FieldFlowAffordance/FieldFlowAffordance.js +104 -0
  7. package/lib/commonjs/components/FieldFlowAffordance/FieldFlowAffordance.js.map +1 -0
  8. package/lib/commonjs/components/FieldFlowAffordance/index.js +13 -0
  9. package/lib/commonjs/components/FieldFlowAffordance/index.js.map +1 -0
  10. package/lib/commonjs/components/FieldFlowCheckbox/FieldFlowCheckbox.js +131 -0
  11. package/lib/commonjs/components/FieldFlowCheckbox/FieldFlowCheckbox.js.map +1 -0
  12. package/lib/commonjs/components/FieldFlowCheckbox/index.js +13 -0
  13. package/lib/commonjs/components/FieldFlowCheckbox/index.js.map +1 -0
  14. package/lib/commonjs/components/FieldFlowCreditCard/FieldFlowCreditCard.js +146 -0
  15. package/lib/commonjs/components/FieldFlowCreditCard/FieldFlowCreditCard.js.map +1 -0
  16. package/lib/commonjs/components/FieldFlowCreditCard/index.js +13 -0
  17. package/lib/commonjs/components/FieldFlowCreditCard/index.js.map +1 -0
  18. package/lib/commonjs/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js +536 -0
  19. package/lib/commonjs/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js.map +1 -0
  20. package/lib/commonjs/components/FieldFlowDateTimePicker/index.js +13 -0
  21. package/lib/commonjs/components/FieldFlowDateTimePicker/index.js.map +1 -0
  22. package/lib/commonjs/components/FieldFlowDateTimePicker/types.js +6 -0
  23. package/lib/commonjs/components/FieldFlowDateTimePicker/types.js.map +1 -0
  24. package/lib/commonjs/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js +156 -0
  25. package/lib/commonjs/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js.map +1 -0
  26. package/lib/commonjs/components/FieldFlowDraftBanner/index.js +13 -0
  27. package/lib/commonjs/components/FieldFlowDraftBanner/index.js.map +1 -0
  28. package/lib/commonjs/components/FieldFlowDropdown/FieldFlowDropdown.js +24 -9
  29. package/lib/commonjs/components/FieldFlowDropdown/FieldFlowDropdown.js.map +1 -1
  30. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +187 -56
  31. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  32. package/lib/commonjs/components/FieldFlowInput/styles.js +48 -11
  33. package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -1
  34. package/lib/commonjs/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js +66 -0
  35. package/lib/commonjs/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js.map +1 -0
  36. package/lib/commonjs/components/FieldFlowMaskedInput/index.js +13 -0
  37. package/lib/commonjs/components/FieldFlowMaskedInput/index.js.map +1 -0
  38. package/lib/commonjs/components/FieldFlowMaskedInput/types.js +6 -0
  39. package/lib/commonjs/components/FieldFlowMaskedInput/types.js.map +1 -0
  40. package/lib/commonjs/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js +136 -0
  41. package/lib/commonjs/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js.map +1 -0
  42. package/lib/commonjs/components/FieldFlowNumberStepper/index.js +13 -0
  43. package/lib/commonjs/components/FieldFlowNumberStepper/index.js.map +1 -0
  44. package/lib/commonjs/components/FieldFlowOTP/FieldFlowOTP.js +255 -0
  45. package/lib/commonjs/components/FieldFlowOTP/FieldFlowOTP.js.map +1 -0
  46. package/lib/commonjs/components/FieldFlowOTP/index.js +13 -0
  47. package/lib/commonjs/components/FieldFlowOTP/index.js.map +1 -0
  48. package/lib/commonjs/components/FieldFlowOTP/types.js +6 -0
  49. package/lib/commonjs/components/FieldFlowOTP/types.js.map +1 -0
  50. package/lib/commonjs/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js +122 -0
  51. package/lib/commonjs/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js.map +1 -0
  52. package/lib/commonjs/components/FieldFlowPasswordStrength/index.js +13 -0
  53. package/lib/commonjs/components/FieldFlowPasswordStrength/index.js.map +1 -0
  54. package/lib/commonjs/components/FieldFlowPhone/FieldFlowPhone.js +263 -0
  55. package/lib/commonjs/components/FieldFlowPhone/FieldFlowPhone.js.map +1 -0
  56. package/lib/commonjs/components/FieldFlowPhone/index.js +13 -0
  57. package/lib/commonjs/components/FieldFlowPhone/index.js.map +1 -0
  58. package/lib/commonjs/components/FieldFlowRadio/FieldFlowRadio.js +164 -0
  59. package/lib/commonjs/components/FieldFlowRadio/FieldFlowRadio.js.map +1 -0
  60. package/lib/commonjs/components/FieldFlowRadio/index.js +13 -0
  61. package/lib/commonjs/components/FieldFlowRadio/index.js.map +1 -0
  62. package/lib/commonjs/components/FieldFlowRating/FieldFlowRating.js +106 -0
  63. package/lib/commonjs/components/FieldFlowRating/FieldFlowRating.js.map +1 -0
  64. package/lib/commonjs/components/FieldFlowRating/index.js +13 -0
  65. package/lib/commonjs/components/FieldFlowRating/index.js.map +1 -0
  66. package/lib/commonjs/components/FieldFlowSection/FieldFlowSection.js +141 -0
  67. package/lib/commonjs/components/FieldFlowSection/FieldFlowSection.js.map +1 -0
  68. package/lib/commonjs/components/FieldFlowSection/index.js +13 -0
  69. package/lib/commonjs/components/FieldFlowSection/index.js.map +1 -0
  70. package/lib/commonjs/components/FieldFlowSegmented/FieldFlowSegmented.js +195 -0
  71. package/lib/commonjs/components/FieldFlowSegmented/FieldFlowSegmented.js.map +1 -0
  72. package/lib/commonjs/components/FieldFlowSegmented/index.js +13 -0
  73. package/lib/commonjs/components/FieldFlowSegmented/index.js.map +1 -0
  74. package/lib/commonjs/components/FieldFlowSignature/FieldFlowSignature.js +200 -0
  75. package/lib/commonjs/components/FieldFlowSignature/FieldFlowSignature.js.map +1 -0
  76. package/lib/commonjs/components/FieldFlowSignature/index.js +13 -0
  77. package/lib/commonjs/components/FieldFlowSignature/index.js.map +1 -0
  78. package/lib/commonjs/components/FieldFlowSlider/FieldFlowSlider.js +178 -0
  79. package/lib/commonjs/components/FieldFlowSlider/FieldFlowSlider.js.map +1 -0
  80. package/lib/commonjs/components/FieldFlowSlider/index.js +13 -0
  81. package/lib/commonjs/components/FieldFlowSlider/index.js.map +1 -0
  82. package/lib/commonjs/components/FieldFlowStepper/FieldFlowStepper.js +166 -0
  83. package/lib/commonjs/components/FieldFlowStepper/FieldFlowStepper.js.map +1 -0
  84. package/lib/commonjs/components/FieldFlowStepper/index.js +13 -0
  85. package/lib/commonjs/components/FieldFlowStepper/index.js.map +1 -0
  86. package/lib/commonjs/components/FieldFlowSwitch/FieldFlowSwitch.js +152 -0
  87. package/lib/commonjs/components/FieldFlowSwitch/FieldFlowSwitch.js.map +1 -0
  88. package/lib/commonjs/components/FieldFlowSwitch/index.js +13 -0
  89. package/lib/commonjs/components/FieldFlowSwitch/index.js.map +1 -0
  90. package/lib/commonjs/components/FieldFlowTags/FieldFlowTags.js +240 -0
  91. package/lib/commonjs/components/FieldFlowTags/FieldFlowTags.js.map +1 -0
  92. package/lib/commonjs/components/FieldFlowTags/index.js +13 -0
  93. package/lib/commonjs/components/FieldFlowTags/index.js.map +1 -0
  94. package/lib/commonjs/components/FieldFlowTypeahead/FieldFlowTypeahead.js +227 -0
  95. package/lib/commonjs/components/FieldFlowTypeahead/FieldFlowTypeahead.js.map +1 -0
  96. package/lib/commonjs/components/FieldFlowTypeahead/index.js +13 -0
  97. package/lib/commonjs/components/FieldFlowTypeahead/index.js.map +1 -0
  98. package/lib/commonjs/components/FieldFlowUpload/FieldFlowUpload.js +191 -0
  99. package/lib/commonjs/components/FieldFlowUpload/FieldFlowUpload.js.map +1 -0
  100. package/lib/commonjs/components/FieldFlowUpload/index.js +13 -0
  101. package/lib/commonjs/components/FieldFlowUpload/index.js.map +1 -0
  102. package/lib/commonjs/hooks/index.js +35 -0
  103. package/lib/commonjs/hooks/index.js.map +1 -1
  104. package/lib/commonjs/hooks/useFieldFlowArray.js +110 -0
  105. package/lib/commonjs/hooks/useFieldFlowArray.js.map +1 -0
  106. package/lib/commonjs/hooks/useFieldFlowDirtyGuard.js +53 -0
  107. package/lib/commonjs/hooks/useFieldFlowDirtyGuard.js.map +1 -0
  108. package/lib/commonjs/hooks/useFieldFlowDraft.js +168 -0
  109. package/lib/commonjs/hooks/useFieldFlowDraft.js.map +1 -0
  110. package/lib/commonjs/hooks/useFieldFlowForm.js +350 -41
  111. package/lib/commonjs/hooks/useFieldFlowForm.js.map +1 -1
  112. package/lib/commonjs/hooks/useFieldFlowSteps.js +77 -0
  113. package/lib/commonjs/hooks/useFieldFlowSteps.js.map +1 -0
  114. package/lib/commonjs/hooks/useFormIntelligence.js +130 -0
  115. package/lib/commonjs/hooks/useFormIntelligence.js.map +1 -0
  116. package/lib/commonjs/i18n/index.js +25 -0
  117. package/lib/commonjs/i18n/index.js.map +1 -0
  118. package/lib/commonjs/i18n/messages.js +88 -0
  119. package/lib/commonjs/i18n/messages.js.map +1 -0
  120. package/lib/commonjs/icons/Icon.js +719 -30
  121. package/lib/commonjs/icons/Icon.js.map +1 -1
  122. package/lib/commonjs/icons/index.js +7 -0
  123. package/lib/commonjs/icons/index.js.map +1 -1
  124. package/lib/commonjs/icons/renderIcon.js +24 -0
  125. package/lib/commonjs/icons/renderIcon.js.map +1 -0
  126. package/lib/commonjs/index.js +449 -0
  127. package/lib/commonjs/index.js.map +1 -1
  128. package/lib/commonjs/intelligence/formAccessibility.js +79 -0
  129. package/lib/commonjs/intelligence/formAccessibility.js.map +1 -0
  130. package/lib/commonjs/intelligence/index.js +31 -0
  131. package/lib/commonjs/intelligence/index.js.map +1 -0
  132. package/lib/commonjs/intelligence/types.js +2 -0
  133. package/lib/commonjs/intelligence/types.js.map +1 -0
  134. package/lib/commonjs/motion/index.js +20 -0
  135. package/lib/commonjs/motion/index.js.map +1 -0
  136. package/lib/commonjs/motion/useFieldMotion.js +111 -0
  137. package/lib/commonjs/motion/useFieldMotion.js.map +1 -0
  138. package/lib/commonjs/motion/useReducedMotion.js +32 -0
  139. package/lib/commonjs/motion/useReducedMotion.js.map +1 -0
  140. package/lib/commonjs/theme/index.js +13 -0
  141. package/lib/commonjs/theme/index.js.map +1 -1
  142. package/lib/commonjs/theme/presets.js +142 -0
  143. package/lib/commonjs/theme/presets.js.map +1 -0
  144. package/lib/commonjs/utils/affordance.js +151 -0
  145. package/lib/commonjs/utils/affordance.js.map +1 -0
  146. package/lib/commonjs/utils/masks.js +130 -0
  147. package/lib/commonjs/utils/masks.js.map +1 -0
  148. package/lib/commonjs/utils/passwordStrength.js +79 -0
  149. package/lib/commonjs/utils/passwordStrength.js.map +1 -0
  150. package/lib/commonjs/utils/phoneCountries.js +119 -0
  151. package/lib/commonjs/utils/phoneCountries.js.map +1 -0
  152. package/lib/commonjs/validation/index.js +25 -0
  153. package/lib/commonjs/validation/index.js.map +1 -1
  154. package/lib/commonjs/validation/validators.js +10 -7
  155. package/lib/commonjs/validation/validators.js.map +1 -1
  156. package/lib/commonjs/validation/zodAdapter.js +91 -0
  157. package/lib/commonjs/validation/zodAdapter.js.map +1 -0
  158. package/lib/module/adapters/index.js +4 -0
  159. package/lib/module/adapters/index.js.map +1 -0
  160. package/lib/module/adapters/reactHookForm.js +100 -0
  161. package/lib/module/adapters/reactHookForm.js.map +1 -0
  162. package/lib/module/components/FieldFlowAffordance/FieldFlowAffordance.js +99 -0
  163. package/lib/module/components/FieldFlowAffordance/FieldFlowAffordance.js.map +1 -0
  164. package/lib/module/components/FieldFlowAffordance/index.js +4 -0
  165. package/lib/module/components/FieldFlowAffordance/index.js.map +1 -0
  166. package/lib/module/components/FieldFlowCheckbox/FieldFlowCheckbox.js +126 -0
  167. package/lib/module/components/FieldFlowCheckbox/FieldFlowCheckbox.js.map +1 -0
  168. package/lib/module/components/FieldFlowCheckbox/index.js +4 -0
  169. package/lib/module/components/FieldFlowCheckbox/index.js.map +1 -0
  170. package/lib/module/components/FieldFlowCreditCard/FieldFlowCreditCard.js +141 -0
  171. package/lib/module/components/FieldFlowCreditCard/FieldFlowCreditCard.js.map +1 -0
  172. package/lib/module/components/FieldFlowCreditCard/index.js +4 -0
  173. package/lib/module/components/FieldFlowCreditCard/index.js.map +1 -0
  174. package/lib/module/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js +531 -0
  175. package/lib/module/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js.map +1 -0
  176. package/lib/module/components/FieldFlowDateTimePicker/index.js +4 -0
  177. package/lib/module/components/FieldFlowDateTimePicker/index.js.map +1 -0
  178. package/lib/module/components/FieldFlowDateTimePicker/types.js +4 -0
  179. package/lib/module/components/FieldFlowDateTimePicker/types.js.map +1 -0
  180. package/lib/module/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js +151 -0
  181. package/lib/module/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js.map +1 -0
  182. package/lib/module/components/FieldFlowDraftBanner/index.js +4 -0
  183. package/lib/module/components/FieldFlowDraftBanner/index.js.map +1 -0
  184. package/lib/module/components/FieldFlowDropdown/FieldFlowDropdown.js +24 -9
  185. package/lib/module/components/FieldFlowDropdown/FieldFlowDropdown.js.map +1 -1
  186. package/lib/module/components/FieldFlowInput/FieldFlowInput.js +190 -59
  187. package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  188. package/lib/module/components/FieldFlowInput/styles.js +48 -11
  189. package/lib/module/components/FieldFlowInput/styles.js.map +1 -1
  190. package/lib/module/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js +61 -0
  191. package/lib/module/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js.map +1 -0
  192. package/lib/module/components/FieldFlowMaskedInput/index.js +4 -0
  193. package/lib/module/components/FieldFlowMaskedInput/index.js.map +1 -0
  194. package/lib/module/components/FieldFlowMaskedInput/types.js +4 -0
  195. package/lib/module/components/FieldFlowMaskedInput/types.js.map +1 -0
  196. package/lib/module/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js +131 -0
  197. package/lib/module/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js.map +1 -0
  198. package/lib/module/components/FieldFlowNumberStepper/index.js +4 -0
  199. package/lib/module/components/FieldFlowNumberStepper/index.js.map +1 -0
  200. package/lib/module/components/FieldFlowOTP/FieldFlowOTP.js +250 -0
  201. package/lib/module/components/FieldFlowOTP/FieldFlowOTP.js.map +1 -0
  202. package/lib/module/components/FieldFlowOTP/index.js +4 -0
  203. package/lib/module/components/FieldFlowOTP/index.js.map +1 -0
  204. package/lib/module/components/FieldFlowOTP/types.js +4 -0
  205. package/lib/module/components/FieldFlowOTP/types.js.map +1 -0
  206. package/lib/module/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js +117 -0
  207. package/lib/module/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js.map +1 -0
  208. package/lib/module/components/FieldFlowPasswordStrength/index.js +4 -0
  209. package/lib/module/components/FieldFlowPasswordStrength/index.js.map +1 -0
  210. package/lib/module/components/FieldFlowPhone/FieldFlowPhone.js +258 -0
  211. package/lib/module/components/FieldFlowPhone/FieldFlowPhone.js.map +1 -0
  212. package/lib/module/components/FieldFlowPhone/index.js +4 -0
  213. package/lib/module/components/FieldFlowPhone/index.js.map +1 -0
  214. package/lib/module/components/FieldFlowRadio/FieldFlowRadio.js +159 -0
  215. package/lib/module/components/FieldFlowRadio/FieldFlowRadio.js.map +1 -0
  216. package/lib/module/components/FieldFlowRadio/index.js +4 -0
  217. package/lib/module/components/FieldFlowRadio/index.js.map +1 -0
  218. package/lib/module/components/FieldFlowRating/FieldFlowRating.js +101 -0
  219. package/lib/module/components/FieldFlowRating/FieldFlowRating.js.map +1 -0
  220. package/lib/module/components/FieldFlowRating/index.js +4 -0
  221. package/lib/module/components/FieldFlowRating/index.js.map +1 -0
  222. package/lib/module/components/FieldFlowSection/FieldFlowSection.js +136 -0
  223. package/lib/module/components/FieldFlowSection/FieldFlowSection.js.map +1 -0
  224. package/lib/module/components/FieldFlowSection/index.js +4 -0
  225. package/lib/module/components/FieldFlowSection/index.js.map +1 -0
  226. package/lib/module/components/FieldFlowSegmented/FieldFlowSegmented.js +190 -0
  227. package/lib/module/components/FieldFlowSegmented/FieldFlowSegmented.js.map +1 -0
  228. package/lib/module/components/FieldFlowSegmented/index.js +4 -0
  229. package/lib/module/components/FieldFlowSegmented/index.js.map +1 -0
  230. package/lib/module/components/FieldFlowSignature/FieldFlowSignature.js +195 -0
  231. package/lib/module/components/FieldFlowSignature/FieldFlowSignature.js.map +1 -0
  232. package/lib/module/components/FieldFlowSignature/index.js +4 -0
  233. package/lib/module/components/FieldFlowSignature/index.js.map +1 -0
  234. package/lib/module/components/FieldFlowSlider/FieldFlowSlider.js +173 -0
  235. package/lib/module/components/FieldFlowSlider/FieldFlowSlider.js.map +1 -0
  236. package/lib/module/components/FieldFlowSlider/index.js +4 -0
  237. package/lib/module/components/FieldFlowSlider/index.js.map +1 -0
  238. package/lib/module/components/FieldFlowStepper/FieldFlowStepper.js +161 -0
  239. package/lib/module/components/FieldFlowStepper/FieldFlowStepper.js.map +1 -0
  240. package/lib/module/components/FieldFlowStepper/index.js +4 -0
  241. package/lib/module/components/FieldFlowStepper/index.js.map +1 -0
  242. package/lib/module/components/FieldFlowSwitch/FieldFlowSwitch.js +147 -0
  243. package/lib/module/components/FieldFlowSwitch/FieldFlowSwitch.js.map +1 -0
  244. package/lib/module/components/FieldFlowSwitch/index.js +4 -0
  245. package/lib/module/components/FieldFlowSwitch/index.js.map +1 -0
  246. package/lib/module/components/FieldFlowTags/FieldFlowTags.js +235 -0
  247. package/lib/module/components/FieldFlowTags/FieldFlowTags.js.map +1 -0
  248. package/lib/module/components/FieldFlowTags/index.js +4 -0
  249. package/lib/module/components/FieldFlowTags/index.js.map +1 -0
  250. package/lib/module/components/FieldFlowTypeahead/FieldFlowTypeahead.js +222 -0
  251. package/lib/module/components/FieldFlowTypeahead/FieldFlowTypeahead.js.map +1 -0
  252. package/lib/module/components/FieldFlowTypeahead/index.js +4 -0
  253. package/lib/module/components/FieldFlowTypeahead/index.js.map +1 -0
  254. package/lib/module/components/FieldFlowUpload/FieldFlowUpload.js +186 -0
  255. package/lib/module/components/FieldFlowUpload/FieldFlowUpload.js.map +1 -0
  256. package/lib/module/components/FieldFlowUpload/index.js +4 -0
  257. package/lib/module/components/FieldFlowUpload/index.js.map +1 -0
  258. package/lib/module/hooks/index.js +5 -0
  259. package/lib/module/hooks/index.js.map +1 -1
  260. package/lib/module/hooks/useFieldFlowArray.js +106 -0
  261. package/lib/module/hooks/useFieldFlowArray.js.map +1 -0
  262. package/lib/module/hooks/useFieldFlowDirtyGuard.js +49 -0
  263. package/lib/module/hooks/useFieldFlowDirtyGuard.js.map +1 -0
  264. package/lib/module/hooks/useFieldFlowDraft.js +165 -0
  265. package/lib/module/hooks/useFieldFlowDraft.js.map +1 -0
  266. package/lib/module/hooks/useFieldFlowForm.js +351 -42
  267. package/lib/module/hooks/useFieldFlowForm.js.map +1 -1
  268. package/lib/module/hooks/useFieldFlowSteps.js +73 -0
  269. package/lib/module/hooks/useFieldFlowSteps.js.map +1 -0
  270. package/lib/module/hooks/useFormIntelligence.js +126 -0
  271. package/lib/module/hooks/useFormIntelligence.js.map +1 -0
  272. package/lib/module/i18n/index.js +4 -0
  273. package/lib/module/i18n/index.js.map +1 -0
  274. package/lib/module/i18n/messages.js +82 -0
  275. package/lib/module/i18n/messages.js.map +1 -0
  276. package/lib/module/icons/Icon.js +720 -31
  277. package/lib/module/icons/Icon.js.map +1 -1
  278. package/lib/module/icons/index.js +1 -0
  279. package/lib/module/icons/index.js.map +1 -1
  280. package/lib/module/icons/renderIcon.js +19 -0
  281. package/lib/module/icons/renderIcon.js.map +1 -0
  282. package/lib/module/index.js +42 -5
  283. package/lib/module/index.js.map +1 -1
  284. package/lib/module/intelligence/formAccessibility.js +72 -0
  285. package/lib/module/intelligence/formAccessibility.js.map +1 -0
  286. package/lib/module/intelligence/index.js +4 -0
  287. package/lib/module/intelligence/index.js.map +1 -0
  288. package/lib/module/intelligence/types.js +2 -0
  289. package/lib/module/intelligence/types.js.map +1 -0
  290. package/lib/module/motion/index.js +5 -0
  291. package/lib/module/motion/index.js.map +1 -0
  292. package/lib/module/motion/useFieldMotion.js +107 -0
  293. package/lib/module/motion/useFieldMotion.js.map +1 -0
  294. package/lib/module/motion/useReducedMotion.js +29 -0
  295. package/lib/module/motion/useReducedMotion.js.map +1 -0
  296. package/lib/module/theme/index.js +1 -0
  297. package/lib/module/theme/index.js.map +1 -1
  298. package/lib/module/theme/presets.js +138 -0
  299. package/lib/module/theme/presets.js.map +1 -0
  300. package/lib/module/utils/affordance.js +140 -0
  301. package/lib/module/utils/affordance.js.map +1 -0
  302. package/lib/module/utils/masks.js +118 -0
  303. package/lib/module/utils/masks.js.map +1 -0
  304. package/lib/module/utils/passwordStrength.js +74 -0
  305. package/lib/module/utils/passwordStrength.js.map +1 -0
  306. package/lib/module/utils/phoneCountries.js +113 -0
  307. package/lib/module/utils/phoneCountries.js.map +1 -0
  308. package/lib/module/validation/index.js +1 -0
  309. package/lib/module/validation/index.js.map +1 -1
  310. package/lib/module/validation/validators.js +10 -7
  311. package/lib/module/validation/validators.js.map +1 -1
  312. package/lib/module/validation/zodAdapter.js +84 -0
  313. package/lib/module/validation/zodAdapter.js.map +1 -0
  314. package/lib/typescript/adapters/index.d.ts +3 -0
  315. package/lib/typescript/adapters/index.d.ts.map +1 -0
  316. package/lib/typescript/adapters/reactHookForm.d.ts +56 -0
  317. package/lib/typescript/adapters/reactHookForm.d.ts.map +1 -0
  318. package/lib/typescript/components/FieldFlowAffordance/FieldFlowAffordance.d.ts +29 -0
  319. package/lib/typescript/components/FieldFlowAffordance/FieldFlowAffordance.d.ts.map +1 -0
  320. package/lib/typescript/components/FieldFlowAffordance/index.d.ts +3 -0
  321. package/lib/typescript/components/FieldFlowAffordance/index.d.ts.map +1 -0
  322. package/lib/typescript/components/FieldFlowCheckbox/FieldFlowCheckbox.d.ts +36 -0
  323. package/lib/typescript/components/FieldFlowCheckbox/FieldFlowCheckbox.d.ts.map +1 -0
  324. package/lib/typescript/components/FieldFlowCheckbox/index.d.ts +3 -0
  325. package/lib/typescript/components/FieldFlowCheckbox/index.d.ts.map +1 -0
  326. package/lib/typescript/components/FieldFlowCreditCard/FieldFlowCreditCard.d.ts +27 -0
  327. package/lib/typescript/components/FieldFlowCreditCard/FieldFlowCreditCard.d.ts.map +1 -0
  328. package/lib/typescript/components/FieldFlowCreditCard/index.d.ts +3 -0
  329. package/lib/typescript/components/FieldFlowCreditCard/index.d.ts.map +1 -0
  330. package/lib/typescript/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.d.ts +4 -0
  331. package/lib/typescript/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.d.ts.map +1 -0
  332. package/lib/typescript/components/FieldFlowDateTimePicker/index.d.ts +3 -0
  333. package/lib/typescript/components/FieldFlowDateTimePicker/index.d.ts.map +1 -0
  334. package/lib/typescript/components/FieldFlowDateTimePicker/types.d.ts +55 -0
  335. package/lib/typescript/components/FieldFlowDateTimePicker/types.d.ts.map +1 -0
  336. package/lib/typescript/components/FieldFlowDraftBanner/FieldFlowDraftBanner.d.ts +24 -0
  337. package/lib/typescript/components/FieldFlowDraftBanner/FieldFlowDraftBanner.d.ts.map +1 -0
  338. package/lib/typescript/components/FieldFlowDraftBanner/index.d.ts +3 -0
  339. package/lib/typescript/components/FieldFlowDraftBanner/index.d.ts.map +1 -0
  340. package/lib/typescript/components/FieldFlowDropdown/FieldFlowDropdown.d.ts.map +1 -1
  341. package/lib/typescript/components/FieldFlowDropdown/types.d.ts +7 -1
  342. package/lib/typescript/components/FieldFlowDropdown/types.d.ts.map +1 -1
  343. package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -1
  344. package/lib/typescript/components/FieldFlowInput/styles.d.ts +35 -2
  345. package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -1
  346. package/lib/typescript/components/FieldFlowInput/types.d.ts +55 -4
  347. package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -1
  348. package/lib/typescript/components/FieldFlowMaskedInput/FieldFlowMaskedInput.d.ts +5 -0
  349. package/lib/typescript/components/FieldFlowMaskedInput/FieldFlowMaskedInput.d.ts.map +1 -0
  350. package/lib/typescript/components/FieldFlowMaskedInput/index.d.ts +3 -0
  351. package/lib/typescript/components/FieldFlowMaskedInput/index.d.ts.map +1 -0
  352. package/lib/typescript/components/FieldFlowMaskedInput/types.d.ts +20 -0
  353. package/lib/typescript/components/FieldFlowMaskedInput/types.d.ts.map +1 -0
  354. package/lib/typescript/components/FieldFlowNumberStepper/FieldFlowNumberStepper.d.ts +34 -0
  355. package/lib/typescript/components/FieldFlowNumberStepper/FieldFlowNumberStepper.d.ts.map +1 -0
  356. package/lib/typescript/components/FieldFlowNumberStepper/index.d.ts +3 -0
  357. package/lib/typescript/components/FieldFlowNumberStepper/index.d.ts.map +1 -0
  358. package/lib/typescript/components/FieldFlowOTP/FieldFlowOTP.d.ts +4 -0
  359. package/lib/typescript/components/FieldFlowOTP/FieldFlowOTP.d.ts.map +1 -0
  360. package/lib/typescript/components/FieldFlowOTP/index.d.ts +3 -0
  361. package/lib/typescript/components/FieldFlowOTP/index.d.ts.map +1 -0
  362. package/lib/typescript/components/FieldFlowOTP/types.d.ts +52 -0
  363. package/lib/typescript/components/FieldFlowOTP/types.d.ts.map +1 -0
  364. package/lib/typescript/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.d.ts +26 -0
  365. package/lib/typescript/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.d.ts.map +1 -0
  366. package/lib/typescript/components/FieldFlowPasswordStrength/index.d.ts +3 -0
  367. package/lib/typescript/components/FieldFlowPasswordStrength/index.d.ts.map +1 -0
  368. package/lib/typescript/components/FieldFlowPhone/FieldFlowPhone.d.ts +40 -0
  369. package/lib/typescript/components/FieldFlowPhone/FieldFlowPhone.d.ts.map +1 -0
  370. package/lib/typescript/components/FieldFlowPhone/index.d.ts +3 -0
  371. package/lib/typescript/components/FieldFlowPhone/index.d.ts.map +1 -0
  372. package/lib/typescript/components/FieldFlowRadio/FieldFlowRadio.d.ts +39 -0
  373. package/lib/typescript/components/FieldFlowRadio/FieldFlowRadio.d.ts.map +1 -0
  374. package/lib/typescript/components/FieldFlowRadio/index.d.ts +3 -0
  375. package/lib/typescript/components/FieldFlowRadio/index.d.ts.map +1 -0
  376. package/lib/typescript/components/FieldFlowRating/FieldFlowRating.d.ts +30 -0
  377. package/lib/typescript/components/FieldFlowRating/FieldFlowRating.d.ts.map +1 -0
  378. package/lib/typescript/components/FieldFlowRating/index.d.ts +3 -0
  379. package/lib/typescript/components/FieldFlowRating/index.d.ts.map +1 -0
  380. package/lib/typescript/components/FieldFlowSection/FieldFlowSection.d.ts +35 -0
  381. package/lib/typescript/components/FieldFlowSection/FieldFlowSection.d.ts.map +1 -0
  382. package/lib/typescript/components/FieldFlowSection/index.d.ts +3 -0
  383. package/lib/typescript/components/FieldFlowSection/index.d.ts.map +1 -0
  384. package/lib/typescript/components/FieldFlowSegmented/FieldFlowSegmented.d.ts +28 -0
  385. package/lib/typescript/components/FieldFlowSegmented/FieldFlowSegmented.d.ts.map +1 -0
  386. package/lib/typescript/components/FieldFlowSegmented/index.d.ts +3 -0
  387. package/lib/typescript/components/FieldFlowSegmented/index.d.ts.map +1 -0
  388. package/lib/typescript/components/FieldFlowSignature/FieldFlowSignature.d.ts +41 -0
  389. package/lib/typescript/components/FieldFlowSignature/FieldFlowSignature.d.ts.map +1 -0
  390. package/lib/typescript/components/FieldFlowSignature/index.d.ts +3 -0
  391. package/lib/typescript/components/FieldFlowSignature/index.d.ts.map +1 -0
  392. package/lib/typescript/components/FieldFlowSlider/FieldFlowSlider.d.ts +30 -0
  393. package/lib/typescript/components/FieldFlowSlider/FieldFlowSlider.d.ts.map +1 -0
  394. package/lib/typescript/components/FieldFlowSlider/index.d.ts +3 -0
  395. package/lib/typescript/components/FieldFlowSlider/index.d.ts.map +1 -0
  396. package/lib/typescript/components/FieldFlowStepper/FieldFlowStepper.d.ts +31 -0
  397. package/lib/typescript/components/FieldFlowStepper/FieldFlowStepper.d.ts.map +1 -0
  398. package/lib/typescript/components/FieldFlowStepper/index.d.ts +3 -0
  399. package/lib/typescript/components/FieldFlowStepper/index.d.ts.map +1 -0
  400. package/lib/typescript/components/FieldFlowSwitch/FieldFlowSwitch.d.ts +31 -0
  401. package/lib/typescript/components/FieldFlowSwitch/FieldFlowSwitch.d.ts.map +1 -0
  402. package/lib/typescript/components/FieldFlowSwitch/index.d.ts +3 -0
  403. package/lib/typescript/components/FieldFlowSwitch/index.d.ts.map +1 -0
  404. package/lib/typescript/components/FieldFlowTags/FieldFlowTags.d.ts +41 -0
  405. package/lib/typescript/components/FieldFlowTags/FieldFlowTags.d.ts.map +1 -0
  406. package/lib/typescript/components/FieldFlowTags/index.d.ts +3 -0
  407. package/lib/typescript/components/FieldFlowTags/index.d.ts.map +1 -0
  408. package/lib/typescript/components/FieldFlowTypeahead/FieldFlowTypeahead.d.ts +43 -0
  409. package/lib/typescript/components/FieldFlowTypeahead/FieldFlowTypeahead.d.ts.map +1 -0
  410. package/lib/typescript/components/FieldFlowTypeahead/index.d.ts +3 -0
  411. package/lib/typescript/components/FieldFlowTypeahead/index.d.ts.map +1 -0
  412. package/lib/typescript/components/FieldFlowUpload/FieldFlowUpload.d.ts +52 -0
  413. package/lib/typescript/components/FieldFlowUpload/FieldFlowUpload.d.ts.map +1 -0
  414. package/lib/typescript/components/FieldFlowUpload/index.d.ts +3 -0
  415. package/lib/typescript/components/FieldFlowUpload/index.d.ts.map +1 -0
  416. package/lib/typescript/hooks/index.d.ts +11 -1
  417. package/lib/typescript/hooks/index.d.ts.map +1 -1
  418. package/lib/typescript/hooks/useFieldFlowArray.d.ts +54 -0
  419. package/lib/typescript/hooks/useFieldFlowArray.d.ts.map +1 -0
  420. package/lib/typescript/hooks/useFieldFlowDirtyGuard.d.ts +26 -0
  421. package/lib/typescript/hooks/useFieldFlowDirtyGuard.d.ts.map +1 -0
  422. package/lib/typescript/hooks/useFieldFlowDraft.d.ts +64 -0
  423. package/lib/typescript/hooks/useFieldFlowDraft.d.ts.map +1 -0
  424. package/lib/typescript/hooks/useFieldFlowForm.d.ts +124 -7
  425. package/lib/typescript/hooks/useFieldFlowForm.d.ts.map +1 -1
  426. package/lib/typescript/hooks/useFieldFlowSteps.d.ts +42 -0
  427. package/lib/typescript/hooks/useFieldFlowSteps.d.ts.map +1 -0
  428. package/lib/typescript/hooks/useFormIntelligence.d.ts +23 -0
  429. package/lib/typescript/hooks/useFormIntelligence.d.ts.map +1 -0
  430. package/lib/typescript/i18n/index.d.ts +3 -0
  431. package/lib/typescript/i18n/index.d.ts.map +1 -0
  432. package/lib/typescript/i18n/messages.d.ts +16 -0
  433. package/lib/typescript/i18n/messages.d.ts.map +1 -0
  434. package/lib/typescript/icons/Icon.d.ts +2 -2
  435. package/lib/typescript/icons/Icon.d.ts.map +1 -1
  436. package/lib/typescript/icons/index.d.ts +2 -0
  437. package/lib/typescript/icons/index.d.ts.map +1 -1
  438. package/lib/typescript/icons/renderIcon.d.ts +6 -0
  439. package/lib/typescript/icons/renderIcon.d.ts.map +1 -0
  440. package/lib/typescript/index.d.ts +67 -9
  441. package/lib/typescript/index.d.ts.map +1 -1
  442. package/lib/typescript/intelligence/formAccessibility.d.ts +21 -0
  443. package/lib/typescript/intelligence/formAccessibility.d.ts.map +1 -0
  444. package/lib/typescript/intelligence/index.d.ts +4 -0
  445. package/lib/typescript/intelligence/index.d.ts.map +1 -0
  446. package/lib/typescript/intelligence/types.d.ts +36 -0
  447. package/lib/typescript/intelligence/types.d.ts.map +1 -0
  448. package/lib/typescript/motion/index.d.ts +4 -0
  449. package/lib/typescript/motion/index.d.ts.map +1 -0
  450. package/lib/typescript/motion/useFieldMotion.d.ts +31 -0
  451. package/lib/typescript/motion/useFieldMotion.d.ts.map +1 -0
  452. package/lib/typescript/motion/useReducedMotion.d.ts +5 -0
  453. package/lib/typescript/motion/useReducedMotion.d.ts.map +1 -0
  454. package/lib/typescript/theme/index.d.ts +2 -0
  455. package/lib/typescript/theme/index.d.ts.map +1 -1
  456. package/lib/typescript/theme/presets.d.ts +134 -0
  457. package/lib/typescript/theme/presets.d.ts.map +1 -0
  458. package/lib/typescript/types/index.d.ts +4 -0
  459. package/lib/typescript/types/index.d.ts.map +1 -1
  460. package/lib/typescript/utils/affordance.d.ts +36 -0
  461. package/lib/typescript/utils/affordance.d.ts.map +1 -0
  462. package/lib/typescript/utils/masks.d.ts +37 -0
  463. package/lib/typescript/utils/masks.d.ts.map +1 -0
  464. package/lib/typescript/utils/passwordStrength.d.ts +26 -0
  465. package/lib/typescript/utils/passwordStrength.d.ts.map +1 -0
  466. package/lib/typescript/utils/phoneCountries.d.ts +12 -0
  467. package/lib/typescript/utils/phoneCountries.d.ts.map +1 -0
  468. package/lib/typescript/validation/index.d.ts +2 -0
  469. package/lib/typescript/validation/index.d.ts.map +1 -1
  470. package/lib/typescript/validation/validators.d.ts +3 -1
  471. package/lib/typescript/validation/validators.d.ts.map +1 -1
  472. package/lib/typescript/validation/zodAdapter.d.ts +53 -0
  473. package/lib/typescript/validation/zodAdapter.d.ts.map +1 -0
  474. package/package.json +34 -3
  475. package/src/adapters/index.ts +9 -0
  476. package/src/adapters/reactHookForm.tsx +152 -0
  477. package/src/components/FieldFlowAffordance/FieldFlowAffordance.tsx +143 -0
  478. package/src/components/FieldFlowAffordance/index.ts +2 -0
  479. package/src/components/FieldFlowCheckbox/FieldFlowCheckbox.tsx +174 -0
  480. package/src/components/FieldFlowCheckbox/index.ts +2 -0
  481. package/src/components/FieldFlowCreditCard/FieldFlowCreditCard.tsx +152 -0
  482. package/src/components/FieldFlowCreditCard/index.ts +2 -0
  483. package/src/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.tsx +585 -0
  484. package/src/components/FieldFlowDateTimePicker/index.ts +2 -0
  485. package/src/components/FieldFlowDateTimePicker/types.ts +57 -0
  486. package/src/components/FieldFlowDraftBanner/FieldFlowDraftBanner.tsx +169 -0
  487. package/src/components/FieldFlowDraftBanner/index.ts +2 -0
  488. package/src/components/FieldFlowDropdown/FieldFlowDropdown.tsx +17 -7
  489. package/src/components/FieldFlowDropdown/types.ts +8 -1
  490. package/src/components/FieldFlowInput/FieldFlowInput.tsx +230 -66
  491. package/src/components/FieldFlowInput/styles.ts +57 -6
  492. package/src/components/FieldFlowInput/types.ts +56 -4
  493. package/src/components/FieldFlowMaskedInput/FieldFlowMaskedInput.tsx +76 -0
  494. package/src/components/FieldFlowMaskedInput/index.ts +2 -0
  495. package/src/components/FieldFlowMaskedInput/types.ts +22 -0
  496. package/src/components/FieldFlowNumberStepper/FieldFlowNumberStepper.tsx +156 -0
  497. package/src/components/FieldFlowNumberStepper/index.ts +2 -0
  498. package/src/components/FieldFlowOTP/FieldFlowOTP.tsx +305 -0
  499. package/src/components/FieldFlowOTP/index.ts +2 -0
  500. package/src/components/FieldFlowOTP/types.ts +57 -0
  501. package/src/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.tsx +148 -0
  502. package/src/components/FieldFlowPasswordStrength/index.ts +2 -0
  503. package/src/components/FieldFlowPhone/FieldFlowPhone.tsx +298 -0
  504. package/src/components/FieldFlowPhone/index.ts +2 -0
  505. package/src/components/FieldFlowRadio/FieldFlowRadio.tsx +215 -0
  506. package/src/components/FieldFlowRadio/index.ts +2 -0
  507. package/src/components/FieldFlowRating/FieldFlowRating.tsx +121 -0
  508. package/src/components/FieldFlowRating/index.ts +2 -0
  509. package/src/components/FieldFlowSection/FieldFlowSection.tsx +176 -0
  510. package/src/components/FieldFlowSection/index.ts +2 -0
  511. package/src/components/FieldFlowSegmented/FieldFlowSegmented.tsx +248 -0
  512. package/src/components/FieldFlowSegmented/index.ts +2 -0
  513. package/src/components/FieldFlowSignature/FieldFlowSignature.tsx +241 -0
  514. package/src/components/FieldFlowSignature/index.ts +7 -0
  515. package/src/components/FieldFlowSlider/FieldFlowSlider.tsx +190 -0
  516. package/src/components/FieldFlowSlider/index.ts +2 -0
  517. package/src/components/FieldFlowStepper/FieldFlowStepper.tsx +190 -0
  518. package/src/components/FieldFlowStepper/index.ts +2 -0
  519. package/src/components/FieldFlowSwitch/FieldFlowSwitch.tsx +172 -0
  520. package/src/components/FieldFlowSwitch/index.ts +2 -0
  521. package/src/components/FieldFlowTags/FieldFlowTags.tsx +319 -0
  522. package/src/components/FieldFlowTags/index.ts +2 -0
  523. package/src/components/FieldFlowTypeahead/FieldFlowTypeahead.tsx +261 -0
  524. package/src/components/FieldFlowTypeahead/index.ts +2 -0
  525. package/src/components/FieldFlowUpload/FieldFlowUpload.tsx +226 -0
  526. package/src/components/FieldFlowUpload/index.ts +6 -0
  527. package/src/hooks/index.ts +34 -0
  528. package/src/hooks/useFieldFlowArray.ts +153 -0
  529. package/src/hooks/useFieldFlowDirtyGuard.ts +70 -0
  530. package/src/hooks/useFieldFlowDraft.ts +221 -0
  531. package/src/hooks/useFieldFlowForm.ts +545 -40
  532. package/src/hooks/useFieldFlowSteps.ts +130 -0
  533. package/src/hooks/useFormIntelligence.ts +207 -0
  534. package/src/i18n/index.ts +6 -0
  535. package/src/i18n/messages.ts +101 -0
  536. package/src/icons/Icon.tsx +451 -5
  537. package/src/icons/index.ts +2 -0
  538. package/src/icons/renderIcon.tsx +17 -0
  539. package/src/index.ts +208 -7
  540. package/src/intelligence/formAccessibility.ts +87 -0
  541. package/src/intelligence/index.ts +12 -0
  542. package/src/intelligence/types.ts +34 -0
  543. package/src/motion/index.ts +3 -0
  544. package/src/motion/useFieldMotion.ts +120 -0
  545. package/src/motion/useReducedMotion.ts +31 -0
  546. package/src/theme/index.ts +2 -0
  547. package/src/theme/presets.ts +120 -0
  548. package/src/types/index.ts +5 -0
  549. package/src/utils/affordance.ts +138 -0
  550. package/src/utils/masks.ts +137 -0
  551. package/src/utils/passwordStrength.ts +109 -0
  552. package/src/utils/phoneCountries.ts +44 -0
  553. package/src/validation/index.ts +7 -0
  554. package/src/validation/validators.ts +17 -7
  555. package/src/validation/zodAdapter.ts +103 -0
package/src/index.ts CHANGED
@@ -19,21 +19,162 @@ export type {
19
19
  FieldFlowDropdownPresentation,
20
20
  } from './components/FieldFlowDropdown';
21
21
 
22
+ export { FieldFlowOTP } from './components/FieldFlowOTP';
23
+ export type { FieldFlowOTPProps } from './components/FieldFlowOTP';
24
+
25
+ export { FieldFlowMaskedInput } from './components/FieldFlowMaskedInput';
26
+ export type { FieldFlowMaskedInputProps } from './components/FieldFlowMaskedInput';
27
+
28
+ export { FieldFlowCheckbox } from './components/FieldFlowCheckbox';
29
+ export type { FieldFlowCheckboxProps } from './components/FieldFlowCheckbox';
30
+
31
+ export { FieldFlowRadio } from './components/FieldFlowRadio';
32
+ export type { FieldFlowRadioProps } from './components/FieldFlowRadio';
33
+
34
+ export { FieldFlowSwitch } from './components/FieldFlowSwitch';
35
+ export type { FieldFlowSwitchProps } from './components/FieldFlowSwitch';
36
+
37
+ export { FieldFlowDateTimePicker } from './components/FieldFlowDateTimePicker';
38
+ export type {
39
+ FieldFlowDateTimePickerProps,
40
+ FieldFlowDateTimeMode,
41
+ } from './components/FieldFlowDateTimePicker';
42
+
43
+ export { FieldFlowAffordance } from './components/FieldFlowAffordance';
44
+ export type { FieldFlowAffordanceProps } from './components/FieldFlowAffordance';
45
+
46
+ export { FieldFlowDraftBanner } from './components/FieldFlowDraftBanner';
47
+ export type { FieldFlowDraftBannerProps } from './components/FieldFlowDraftBanner';
48
+
49
+ export { FieldFlowTags } from './components/FieldFlowTags';
50
+ export type { FieldFlowTagsProps } from './components/FieldFlowTags';
51
+
52
+ export { FieldFlowPasswordStrength } from './components/FieldFlowPasswordStrength';
53
+ export type { FieldFlowPasswordStrengthProps } from './components/FieldFlowPasswordStrength';
54
+
55
+ export { FieldFlowSection } from './components/FieldFlowSection';
56
+ export type { FieldFlowSectionProps } from './components/FieldFlowSection';
57
+
58
+ export { FieldFlowSegmented } from './components/FieldFlowSegmented';
59
+ export type { FieldFlowSegmentedProps } from './components/FieldFlowSegmented';
60
+
61
+ export { FieldFlowStepper } from './components/FieldFlowStepper';
62
+ export type { FieldFlowStepperProps, FieldFlowStepRenderContext } from './components/FieldFlowStepper';
63
+
64
+ export { FieldFlowPhone } from './components/FieldFlowPhone';
65
+ export type { FieldFlowPhoneProps, FieldFlowPhoneValue } from './components/FieldFlowPhone';
66
+
67
+ export { FieldFlowUpload } from './components/FieldFlowUpload';
68
+ export type {
69
+ FieldFlowUploadProps,
70
+ FieldFlowUploadFile,
71
+ FieldFlowUploadPicker,
72
+ } from './components/FieldFlowUpload';
73
+
74
+ export { FieldFlowTypeahead } from './components/FieldFlowTypeahead';
75
+ export type { FieldFlowTypeaheadProps, FieldFlowTypeaheadFetcher } from './components/FieldFlowTypeahead';
76
+
77
+ export { FieldFlowRating } from './components/FieldFlowRating';
78
+ export type { FieldFlowRatingProps } from './components/FieldFlowRating';
79
+
80
+ export { FieldFlowSlider } from './components/FieldFlowSlider';
81
+ export type { FieldFlowSliderProps } from './components/FieldFlowSlider';
82
+
83
+ export { FieldFlowNumberStepper } from './components/FieldFlowNumberStepper';
84
+ export type { FieldFlowNumberStepperProps } from './components/FieldFlowNumberStepper';
85
+
86
+ export { FieldFlowCreditCard } from './components/FieldFlowCreditCard';
87
+ export type { FieldFlowCreditCardProps, FieldFlowCreditCardValue } from './components/FieldFlowCreditCard';
88
+
89
+ export { FieldFlowSignature } from './components/FieldFlowSignature';
90
+ export type {
91
+ FieldFlowSignatureProps,
92
+ FieldFlowSignatureValue,
93
+ FieldFlowStroke,
94
+ FieldFlowPoint,
95
+ } from './components/FieldFlowSignature';
96
+
97
+ // Adapters (optional peers: react-hook-form)
98
+ export {
99
+ FieldFlowController,
100
+ FieldFlowTagsController,
101
+ mapRhfToFieldFlowProps,
102
+ } from './adapters';
103
+ export type {
104
+ FieldFlowControllerProps,
105
+ FieldFlowTagsControllerProps,
106
+ } from './adapters';
107
+
22
108
  // Theming
23
- export { FieldFlowThemeProvider, useFieldFlowTheme, defaultTheme, darkTheme } from './theme';
24
- export type { FieldFlowThemeProviderProps } from './theme';
109
+ export {
110
+ FieldFlowThemeProvider,
111
+ useFieldFlowTheme,
112
+ defaultTheme,
113
+ darkTheme,
114
+ themePresets,
115
+ getThemePreset,
116
+ } from './theme';
117
+ export type { FieldFlowThemeProviderProps, FieldFlowThemePresetName } from './theme';
118
+
119
+ // Motion
120
+ export { useFieldMotion, useReducedMotion } from './motion';
121
+ export type { UseFieldMotionOptions, UseFieldMotionResult } from './motion';
25
122
 
26
123
  // Hooks
27
- export { useFieldFlowForm, useKeyboardManager, useFieldState } from './hooks';
124
+ export {
125
+ useFieldFlowForm,
126
+ useKeyboardManager,
127
+ useFieldState,
128
+ useFormIntelligence,
129
+ useFieldFlowArray,
130
+ useFieldFlowDraft,
131
+ useFieldFlowSteps,
132
+ useFieldFlowDirtyGuard,
133
+ } from './hooks';
28
134
  export type {
29
135
  UseFieldFlowFormOptions,
30
136
  UseFieldFlowFormResult,
31
137
  FieldFlowFormRules,
138
+ AsyncFieldValidator,
139
+ AsyncFieldValidators,
140
+ CrossFieldRule,
141
+ FieldConditionFn,
142
+ FieldConditionConfig,
143
+ FieldConditions,
144
+ FieldVisibilityState,
32
145
  UseKeyboardManagerOptions,
33
146
  UseKeyboardManagerResult,
34
147
  UseFieldStateOptions,
148
+ UseFormIntelligenceResult,
149
+ UseFieldFlowArrayOptions,
150
+ UseFieldFlowArrayResult,
151
+ FieldFlowDraftStorage,
152
+ FieldFlowDraftPayload,
153
+ UseFieldFlowDraftOptions,
154
+ UseFieldFlowDraftResult,
155
+ FieldFlowStepDefinition,
156
+ UseFieldFlowStepsOptions,
157
+ UseFieldFlowStepsResult,
158
+ UseFieldFlowDirtyGuardOptions,
159
+ UseFieldFlowDirtyGuardResult,
35
160
  } from './hooks';
36
161
 
162
+ // i18n
163
+ export {
164
+ validationMessageCatalogs,
165
+ getValidationMessages,
166
+ createValidationMessages,
167
+ } from './i18n';
168
+ export type { FieldFlowLocale, FieldFlowValidationMessages } from './i18n';
169
+
170
+ // Phone helpers
171
+ export {
172
+ DEFAULT_COUNTRY_DIALS,
173
+ findCountryByCode,
174
+ composeE164,
175
+ } from './utils/phoneCountries';
176
+ export type { FieldFlowCountryDial } from './utils/phoneCountries';
177
+
37
178
  // Validation
38
179
  export {
39
180
  useValidation,
@@ -48,12 +189,71 @@ export {
48
189
  minLengthValidator,
49
190
  maxLengthValidator,
50
191
  patternValidator,
192
+ zodToFormErrors,
193
+ zodFormValidate,
194
+ createZodSubmitGuard,
195
+ fieldRulesFromZodString,
51
196
  } from './validation';
52
- export type { UseValidationResult } from './validation';
197
+ export type { UseValidationResult, ZodSchemaLike, ZodIssueLike, ZodErrorLike } from './validation';
198
+
199
+ // Masks
200
+ export {
201
+ applyMask,
202
+ applyPattern,
203
+ formatMasked,
204
+ unmask,
205
+ digitsOnly,
206
+ applyPhoneMask,
207
+ applyCardMask,
208
+ applyDateMask,
209
+ applyCurrencyMask,
210
+ } from './utils/masks';
211
+ export type { FieldFlowMaskType, MaskResult, ApplyMaskOptions } from './utils/masks';
212
+
213
+ // Affordance helpers
214
+ export {
215
+ applyEmailDomainSuggestion,
216
+ applyPhoneDialSuggestion,
217
+ applyCurrencySymbolSuggestion,
218
+ applyAffordanceSuggestion,
219
+ resolveAffordanceChips,
220
+ emailDomainsToChips,
221
+ affordanceKindFromFieldType,
222
+ DEFAULT_EMAIL_DOMAINS,
223
+ DEFAULT_PHONE_DIAL_CODES,
224
+ DEFAULT_CURRENCY_SYMBOLS,
225
+ } from './utils/affordance';
226
+ export type { FieldFlowAffordanceKind, FieldFlowAffordanceChip } from './utils/affordance';
227
+
228
+ // Password strength
229
+ export {
230
+ evaluatePasswordStrength,
231
+ DEFAULT_PASSWORD_RULES,
232
+ PASSWORD_STRENGTH_COLORS,
233
+ } from './utils/passwordStrength';
234
+ export type {
235
+ PasswordStrengthLevel,
236
+ PasswordStrengthRule,
237
+ PasswordStrengthResult,
238
+ } from './utils/passwordStrength';
239
+
240
+ // Form intelligence / a11y
241
+ export {
242
+ focusFirstError,
243
+ announceForAccessibility,
244
+ buildValidationAnnouncement,
245
+ setAccessibilityFocus,
246
+ } from './intelligence';
247
+ export type {
248
+ FieldRefMap,
249
+ FieldFrictionStats,
250
+ FormHealthReport,
251
+ FormIntelligenceOptions,
252
+ } from './intelligence';
53
253
 
54
- // Icons (in case consumers want to reuse FieldFlow's built-in icon set elsewhere)
55
- export { FieldFlowIcon } from './icons';
56
- export type { FieldFlowIconName, FieldFlowIconProps } from './icons';
254
+ // Icons
255
+ export { FieldFlowIcon, renderFieldFlowIcon } from './icons';
256
+ export type { FieldFlowIconName, FieldFlowIconProps, FieldFlowIconSource } from './icons';
57
257
 
58
258
  // Types
59
259
  export type {
@@ -61,6 +261,7 @@ export type {
61
261
  FieldFlowState,
62
262
  FieldFlowRules,
63
263
  FieldFlowOption,
264
+ FieldFlowVariant,
64
265
  ValidationResult,
65
266
  Validator,
66
267
  FieldFlowColors,
@@ -0,0 +1,87 @@
1
+ import { AccessibilityInfo, findNodeHandle, type TextInput } from 'react-native';
2
+
3
+ export type FieldRefMap<T extends string = string> = Partial<
4
+ Record<T, { current: TextInput | null } | TextInput | null>
5
+ >;
6
+
7
+ function resolveNode(ref: FieldRefMap[string]): TextInput | null {
8
+ if (!ref) return null;
9
+ if (typeof ref === 'object' && 'current' in ref) return ref.current ?? null;
10
+ return ref;
11
+ }
12
+
13
+ /**
14
+ * Focus the first field (in `order` or object key order) that has an error.
15
+ * Returns the field key that was focused, or `undefined` if none.
16
+ */
17
+ export function focusFirstError<T extends string>(
18
+ errors: Partial<Record<T, string | undefined>>,
19
+ refs: FieldRefMap<T>,
20
+ order?: T[],
21
+ ): T | undefined {
22
+ const keys = order ?? (Object.keys(errors) as T[]);
23
+ for (const key of keys) {
24
+ if (!errors[key]) continue;
25
+ const node = resolveNode(refs[key]);
26
+ if (node && typeof node.focus === 'function') {
27
+ node.focus();
28
+ return key;
29
+ }
30
+ }
31
+ // Fallback: any field with an error that has a ref, even if not in order
32
+ for (const key of Object.keys(errors) as T[]) {
33
+ if (!errors[key]) continue;
34
+ const node = resolveNode(refs[key]);
35
+ if (node && typeof node.focus === 'function') {
36
+ node.focus();
37
+ return key;
38
+ }
39
+ }
40
+ return undefined;
41
+ }
42
+
43
+ /** Announce a short message to VoiceOver / TalkBack when available. */
44
+ export function announceForAccessibility(message: string): void {
45
+ if (!message) return;
46
+ try {
47
+ AccessibilityInfo.announceForAccessibility(message);
48
+ } catch {
49
+ // Older RN / platforms without announce support — silently ignore.
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Build a concise announcement for failed validation, e.g.
55
+ * "Form has 2 errors. Email is required."
56
+ */
57
+ export function buildValidationAnnouncement(
58
+ errors: Partial<Record<string, string | undefined>>,
59
+ ): string {
60
+ const entries = Object.entries(errors).filter(([, msg]) => Boolean(msg)) as Array<
61
+ [string, string]
62
+ >;
63
+ if (entries.length === 0) return '';
64
+ const [firstField, firstMessage] = entries[0];
65
+ if (entries.length === 1) {
66
+ return `${formatFieldName(firstField)}: ${firstMessage}`;
67
+ }
68
+ return `Form has ${entries.length} errors. ${formatFieldName(firstField)}: ${firstMessage}`;
69
+ }
70
+
71
+ function formatFieldName(field: string): string {
72
+ return field
73
+ .replace(/([A-Z])/g, ' $1')
74
+ .replace(/[_-]/g, ' ')
75
+ .replace(/^\w/, c => c.toUpperCase())
76
+ .trim();
77
+ }
78
+
79
+ /** Best-effort: mark a native view as accessibility-focused (Android). */
80
+ export function setAccessibilityFocus(ref: { current: TextInput | null } | TextInput | null): void {
81
+ const node = resolveNode(ref);
82
+ if (!node) return;
83
+ const handle = findNodeHandle(node);
84
+ if (handle != null) {
85
+ AccessibilityInfo.setAccessibilityFocus?.(handle);
86
+ }
87
+ }
@@ -0,0 +1,12 @@
1
+ export {
2
+ focusFirstError,
3
+ announceForAccessibility,
4
+ buildValidationAnnouncement,
5
+ setAccessibilityFocus,
6
+ } from './formAccessibility';
7
+ export type { FieldRefMap } from './formAccessibility';
8
+ export type {
9
+ FieldFrictionStats,
10
+ FormHealthReport,
11
+ FormIntelligenceOptions,
12
+ } from './types';
@@ -0,0 +1,34 @@
1
+ export interface FieldFrictionStats {
2
+ focusCount: number;
3
+ /** Cumulative milliseconds the field was focused. */
4
+ totalFocusMs: number;
5
+ errorCount: number;
6
+ changeCount: number;
7
+ blurCount: number;
8
+ lastFocusedAt?: number;
9
+ /** Running focus session start (ms since epoch); cleared on blur. */
10
+ focusStartedAt?: number;
11
+ }
12
+
13
+ export interface FormHealthReport {
14
+ /** Wall-clock ms from first interaction to this report. */
15
+ sessionMs: number;
16
+ submitAttempts: number;
17
+ successfulSubmits: number;
18
+ fields: Record<string, FieldFrictionStats>;
19
+ /**
20
+ * Fields sorted by estimated friction (errors × 3 + focusCount + changeCount / 10).
21
+ * Useful for product analytics / debugging onboarding drop-off.
22
+ */
23
+ mostFriction: Array<{ field: string; score: number }>;
24
+ generatedAt: number;
25
+ }
26
+
27
+ export interface FormIntelligenceOptions {
28
+ /** Called whenever a new report is produced (submit attempt, or `flush()`). */
29
+ onReport?: (report: FormHealthReport) => void;
30
+ /** When true (default), failed submit focuses & announces the first invalid field. */
31
+ focusFirstError?: boolean;
32
+ /** Announce errors via `AccessibilityInfo.announceForAccessibility`. Default: true. */
33
+ announceErrors?: boolean;
34
+ }
@@ -0,0 +1,3 @@
1
+ export { useReducedMotion } from './useReducedMotion';
2
+ export { useFieldMotion } from './useFieldMotion';
3
+ export type { UseFieldMotionOptions, UseFieldMotionResult } from './useFieldMotion';
@@ -0,0 +1,120 @@
1
+ import { useEffect, useMemo, useRef } from 'react';
2
+ import { Animated, Easing } from 'react-native';
3
+ import { useReducedMotion } from './useReducedMotion';
4
+
5
+ export interface UseFieldMotionOptions {
6
+ /** Master switch. Default: true. */
7
+ enabled?: boolean;
8
+ isFocused: boolean;
9
+ hasError: boolean;
10
+ isSuccess?: boolean;
11
+ /** Base duration from theme. */
12
+ duration?: number;
13
+ }
14
+
15
+ export interface UseFieldMotionResult {
16
+ /** Apply to the field chrome (input container). */
17
+ containerStyle: {
18
+ transform: Array<{ translateX: Animated.AnimatedInterpolation<string | number> }>;
19
+ };
20
+ /** Soft focus glow overlay opacity (0–1). */
21
+ glowOpacity: Animated.Value;
22
+ /** Footer message fade. */
23
+ messageOpacity: Animated.Value;
24
+ /** Success check scale pop. */
25
+ successScale: Animated.Value;
26
+ reducedMotion: boolean;
27
+ }
28
+
29
+ /**
30
+ * Field micro-interactions: error shake, focus glow, message cross-fade, success pop.
31
+ * Uses RN Animated only (no Reanimated) and respects Reduce Motion.
32
+ */
33
+ export function useFieldMotion({
34
+ enabled = true,
35
+ isFocused,
36
+ hasError,
37
+ isSuccess,
38
+ duration = 180,
39
+ }: UseFieldMotionOptions): UseFieldMotionResult {
40
+ const reducedMotion = useReducedMotion();
41
+ const active = enabled && !reducedMotion;
42
+
43
+ const shake = useRef(new Animated.Value(0)).current;
44
+ const glowOpacity = useRef(new Animated.Value(0)).current;
45
+ const messageOpacity = useRef(new Animated.Value(1)).current;
46
+ const successScale = useRef(new Animated.Value(1)).current;
47
+ const prevError = useRef(hasError);
48
+
49
+ // Focus glow
50
+ useEffect(() => {
51
+ if (!active) {
52
+ glowOpacity.setValue(isFocused ? 0.35 : 0);
53
+ return;
54
+ }
55
+ Animated.timing(glowOpacity, {
56
+ toValue: isFocused ? 1 : 0,
57
+ duration,
58
+ easing: Easing.out(Easing.cubic),
59
+ useNativeDriver: true,
60
+ }).start();
61
+ }, [active, isFocused, glowOpacity, duration]);
62
+
63
+ // Error shake when error turns on
64
+ useEffect(() => {
65
+ const justErrored = hasError && !prevError.current;
66
+ prevError.current = hasError;
67
+ if (!justErrored) return;
68
+
69
+ if (!active) return;
70
+
71
+ shake.setValue(0);
72
+ Animated.sequence([
73
+ Animated.timing(shake, { toValue: 1, duration: 40, useNativeDriver: true }),
74
+ Animated.timing(shake, { toValue: -1, duration: 40, useNativeDriver: true }),
75
+ Animated.timing(shake, { toValue: 1, duration: 40, useNativeDriver: true }),
76
+ Animated.timing(shake, { toValue: -1, duration: 40, useNativeDriver: true }),
77
+ Animated.timing(shake, { toValue: 0, duration: 40, useNativeDriver: true }),
78
+ ]).start();
79
+
80
+ messageOpacity.setValue(0);
81
+ Animated.timing(messageOpacity, {
82
+ toValue: 1,
83
+ duration: duration + 40,
84
+ easing: Easing.out(Easing.cubic),
85
+ useNativeDriver: true,
86
+ }).start();
87
+ }, [hasError, active, shake, messageOpacity, duration]);
88
+
89
+ // Success pop
90
+ useEffect(() => {
91
+ if (!isSuccess) {
92
+ successScale.setValue(1);
93
+ return;
94
+ }
95
+ if (!active) return;
96
+ successScale.setValue(0.6);
97
+ Animated.spring(successScale, {
98
+ toValue: 1,
99
+ friction: 5,
100
+ tension: 140,
101
+ useNativeDriver: true,
102
+ }).start();
103
+ }, [isSuccess, active, successScale]);
104
+
105
+ const translateX = shake.interpolate({
106
+ inputRange: [-1, 0, 1],
107
+ outputRange: [-6, 0, 6],
108
+ });
109
+
110
+ return useMemo(
111
+ () => ({
112
+ containerStyle: { transform: [{ translateX }] },
113
+ glowOpacity,
114
+ messageOpacity,
115
+ successScale,
116
+ reducedMotion,
117
+ }),
118
+ [translateX, glowOpacity, messageOpacity, successScale, reducedMotion],
119
+ );
120
+ }
@@ -0,0 +1,31 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { AccessibilityInfo } from 'react-native';
3
+
4
+ /**
5
+ * Tracks the OS “Reduce Motion” preference so FieldFlow can skip decorative animation.
6
+ */
7
+ export function useReducedMotion(): boolean {
8
+ const [reduced, setReduced] = useState(false);
9
+
10
+ useEffect(() => {
11
+ let mounted = true;
12
+ AccessibilityInfo.isReduceMotionEnabled?.()
13
+ .then(value => {
14
+ if (mounted) setReduced(Boolean(value));
15
+ })
16
+ .catch(() => {
17
+ /* older RN */
18
+ });
19
+
20
+ const sub = AccessibilityInfo.addEventListener?.('reduceMotionChanged', setReduced);
21
+ return () => {
22
+ mounted = false;
23
+ // RN versions differ: subscription may be `{ remove }` or a legacy remover fn
24
+ if (sub && typeof (sub as { remove?: () => void }).remove === 'function') {
25
+ (sub as { remove: () => void }).remove();
26
+ }
27
+ };
28
+ }, []);
29
+
30
+ return reduced;
31
+ }
@@ -1,3 +1,5 @@
1
1
  export { defaultTheme, darkTheme } from './defaultTheme';
2
2
  export { FieldFlowThemeProvider, useFieldFlowTheme, mergeDeep } from './ThemeProvider';
3
3
  export type { FieldFlowThemeProviderProps } from './ThemeProvider';
4
+ export { themePresets, getThemePreset } from './presets';
5
+ export type { FieldFlowThemePresetName } from './presets';
@@ -0,0 +1,120 @@
1
+ import type { DeepPartial, FieldFlowTheme } from '../types';
2
+ import { defaultTheme, darkTheme } from './defaultTheme';
3
+
4
+ /**
5
+ * Curated one-liner themes for demos and brand starts.
6
+ * Pass into `FieldFlowThemeProvider theme={themePresets.soft}`.
7
+ */
8
+ export const themePresets = {
9
+ /** Default FieldFlow blue. */
10
+ default: defaultTheme as DeepPartial<FieldFlowTheme>,
11
+ /** Bundled dark palette. */
12
+ dark: darkTheme as DeepPartial<FieldFlowTheme>,
13
+ /** Soft rounded surfaces, indigo accent. */
14
+ soft: {
15
+ colors: {
16
+ background: '#F8FAFC',
17
+ backgroundDisabled: '#EEF2F7',
18
+ border: '#E2E8F0',
19
+ borderFocused: '#6366F1',
20
+ borderError: '#F43F5E',
21
+ borderSuccess: '#10B981',
22
+ text: '#0F172A',
23
+ placeholder: '#94A3B8',
24
+ label: '#475569',
25
+ labelFocused: '#6366F1',
26
+ error: '#F43F5E',
27
+ success: '#10B981',
28
+ icon: '#64748B',
29
+ iconFocused: '#6366F1',
30
+ },
31
+ spacing: { borderRadius: 16, paddingHorizontal: 16, paddingVertical: 14 },
32
+ typography: { fontSize: 16, labelFontSize: 13, helperFontSize: 12 },
33
+ } satisfies DeepPartial<FieldFlowTheme>,
34
+ /** High-contrast ink on white — docs / legal forms. */
35
+ contrast: {
36
+ colors: {
37
+ background: '#FFFFFF',
38
+ backgroundDisabled: '#F3F4F6',
39
+ border: '#111827',
40
+ borderFocused: '#111827',
41
+ borderError: '#B91C1C',
42
+ borderSuccess: '#047857',
43
+ text: '#111827',
44
+ placeholder: '#6B7280',
45
+ label: '#111827',
46
+ labelFocused: '#111827',
47
+ error: '#B91C1C',
48
+ success: '#047857',
49
+ icon: '#374151',
50
+ iconFocused: '#111827',
51
+ },
52
+ spacing: { borderRadius: 4, borderWidth: 1.5, borderWidthFocused: 2 },
53
+ } satisfies DeepPartial<FieldFlowTheme>,
54
+ /** Warm coral accent, cream surfaces. */
55
+ warm: {
56
+ colors: {
57
+ background: '#FFFBF7',
58
+ backgroundDisabled: '#F5EDE4',
59
+ border: '#E8D5C4',
60
+ borderFocused: '#E11D48',
61
+ borderError: '#DC2626',
62
+ borderSuccess: '#059669',
63
+ text: '#1C1917',
64
+ placeholder: '#A8A29E',
65
+ label: '#57534E',
66
+ labelFocused: '#E11D48',
67
+ error: '#DC2626',
68
+ success: '#059669',
69
+ icon: '#78716C',
70
+ iconFocused: '#E11D48',
71
+ },
72
+ spacing: { borderRadius: 12 },
73
+ } satisfies DeepPartial<FieldFlowTheme>,
74
+ /** Cool teal — fintech / health. */
75
+ teal: {
76
+ colors: {
77
+ background: '#FFFFFF',
78
+ backgroundDisabled: '#F0FDFA',
79
+ border: '#CCFBF1',
80
+ borderFocused: '#0D9488',
81
+ borderError: '#E11D48',
82
+ borderSuccess: '#059669',
83
+ text: '#134E4A',
84
+ placeholder: '#5EEAD4',
85
+ label: '#0F766E',
86
+ labelFocused: '#0D9488',
87
+ error: '#E11D48',
88
+ success: '#059669',
89
+ icon: '#14B8A6',
90
+ iconFocused: '#0D9488',
91
+ },
92
+ spacing: { borderRadius: 14, paddingHorizontal: 16 },
93
+ } satisfies DeepPartial<FieldFlowTheme>,
94
+ /** Midnight elevated cards. */
95
+ midnight: {
96
+ colors: {
97
+ background: '#0B1220',
98
+ backgroundDisabled: '#111827',
99
+ border: '#1F2937',
100
+ borderFocused: '#818CF8',
101
+ borderError: '#FB7185',
102
+ borderSuccess: '#34D399',
103
+ text: '#F9FAFB',
104
+ placeholder: '#6B7280',
105
+ label: '#9CA3AF',
106
+ labelFocused: '#A5B4FC',
107
+ error: '#FB7185',
108
+ success: '#34D399',
109
+ icon: '#9CA3AF',
110
+ iconFocused: '#A5B4FC',
111
+ },
112
+ spacing: { borderRadius: 14 },
113
+ } satisfies DeepPartial<FieldFlowTheme>,
114
+ } as const;
115
+
116
+ export type FieldFlowThemePresetName = keyof typeof themePresets;
117
+
118
+ export function getThemePreset(name: FieldFlowThemePresetName): DeepPartial<FieldFlowTheme> {
119
+ return themePresets[name];
120
+ }
@@ -7,8 +7,13 @@ export interface FieldFlowOption {
7
7
  disabled?: boolean;
8
8
  /** Optional secondary line of text shown under the label in the option list. */
9
9
  description?: string;
10
+ /** Built-in icon name or a custom React node shown beside the option. */
11
+ icon?: import('../icons').FieldFlowIconSource;
10
12
  }
11
13
 
14
+ /** Visual style for text-like FieldFlow fields. */
15
+ export type FieldFlowVariant = 'outlined' | 'filled' | 'underline' | 'floating';
16
+
12
17
  export type FieldFlowFieldType =
13
18
  | 'text'
14
19
  | 'email'