rn-inputforge 0.1.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 (193) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +273 -0
  3. package/lib/commonjs/components/ChatInput/ChatInput.js +170 -0
  4. package/lib/commonjs/components/ChatInput/ChatInput.js.map +1 -0
  5. package/lib/commonjs/components/ChatInput/index.js +13 -0
  6. package/lib/commonjs/components/ChatInput/index.js.map +1 -0
  7. package/lib/commonjs/components/ChatInput/types.js +6 -0
  8. package/lib/commonjs/components/ChatInput/types.js.map +1 -0
  9. package/lib/commonjs/components/DescriptionField/DescriptionField.js +40 -0
  10. package/lib/commonjs/components/DescriptionField/DescriptionField.js.map +1 -0
  11. package/lib/commonjs/components/DescriptionField/index.js +13 -0
  12. package/lib/commonjs/components/DescriptionField/index.js.map +1 -0
  13. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +207 -0
  14. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -0
  15. package/lib/commonjs/components/FieldFlowInput/index.js +13 -0
  16. package/lib/commonjs/components/FieldFlowInput/index.js.map +1 -0
  17. package/lib/commonjs/components/FieldFlowInput/styles.js +99 -0
  18. package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -0
  19. package/lib/commonjs/components/FieldFlowInput/types.js +6 -0
  20. package/lib/commonjs/components/FieldFlowInput/types.js.map +1 -0
  21. package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +44 -0
  22. package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -0
  23. package/lib/commonjs/components/KeyboardAwareFormWrapper/index.js +13 -0
  24. package/lib/commonjs/components/KeyboardAwareFormWrapper/index.js.map +1 -0
  25. package/lib/commonjs/hooks/index.js +27 -0
  26. package/lib/commonjs/hooks/index.js.map +1 -0
  27. package/lib/commonjs/hooks/useFieldFlowForm.js +108 -0
  28. package/lib/commonjs/hooks/useFieldFlowForm.js.map +1 -0
  29. package/lib/commonjs/hooks/useFieldState.js +27 -0
  30. package/lib/commonjs/hooks/useFieldState.js.map +1 -0
  31. package/lib/commonjs/hooks/useKeyboardManager.js +68 -0
  32. package/lib/commonjs/hooks/useKeyboardManager.js.map +1 -0
  33. package/lib/commonjs/icons/Icon.js +388 -0
  34. package/lib/commonjs/icons/Icon.js.map +1 -0
  35. package/lib/commonjs/icons/index.js +13 -0
  36. package/lib/commonjs/icons/index.js.map +1 -0
  37. package/lib/commonjs/index.js +158 -0
  38. package/lib/commonjs/index.js.map +1 -0
  39. package/lib/commonjs/package.json +1 -0
  40. package/lib/commonjs/theme/ThemeProvider.js +48 -0
  41. package/lib/commonjs/theme/ThemeProvider.js.map +1 -0
  42. package/lib/commonjs/theme/defaultTheme.js +62 -0
  43. package/lib/commonjs/theme/defaultTheme.js.map +1 -0
  44. package/lib/commonjs/theme/index.js +38 -0
  45. package/lib/commonjs/theme/index.js.map +1 -0
  46. package/lib/commonjs/types/index.js +6 -0
  47. package/lib/commonjs/types/index.js.map +1 -0
  48. package/lib/commonjs/utils/formatters.js +25 -0
  49. package/lib/commonjs/utils/formatters.js.map +1 -0
  50. package/lib/commonjs/utils/keyboardTypes.js +103 -0
  51. package/lib/commonjs/utils/keyboardTypes.js.map +1 -0
  52. package/lib/commonjs/validation/index.js +80 -0
  53. package/lib/commonjs/validation/index.js.map +1 -0
  54. package/lib/commonjs/validation/useValidation.js +34 -0
  55. package/lib/commonjs/validation/useValidation.js.map +1 -0
  56. package/lib/commonjs/validation/validators.js +118 -0
  57. package/lib/commonjs/validation/validators.js.map +1 -0
  58. package/lib/module/components/ChatInput/ChatInput.js +165 -0
  59. package/lib/module/components/ChatInput/ChatInput.js.map +1 -0
  60. package/lib/module/components/ChatInput/index.js +4 -0
  61. package/lib/module/components/ChatInput/index.js.map +1 -0
  62. package/lib/module/components/ChatInput/types.js +4 -0
  63. package/lib/module/components/ChatInput/types.js.map +1 -0
  64. package/lib/module/components/DescriptionField/DescriptionField.js +35 -0
  65. package/lib/module/components/DescriptionField/DescriptionField.js.map +1 -0
  66. package/lib/module/components/DescriptionField/index.js +4 -0
  67. package/lib/module/components/DescriptionField/index.js.map +1 -0
  68. package/lib/module/components/FieldFlowInput/FieldFlowInput.js +202 -0
  69. package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -0
  70. package/lib/module/components/FieldFlowInput/index.js +4 -0
  71. package/lib/module/components/FieldFlowInput/index.js.map +1 -0
  72. package/lib/module/components/FieldFlowInput/styles.js +92 -0
  73. package/lib/module/components/FieldFlowInput/styles.js.map +1 -0
  74. package/lib/module/components/FieldFlowInput/types.js +4 -0
  75. package/lib/module/components/FieldFlowInput/types.js.map +1 -0
  76. package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +39 -0
  77. package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -0
  78. package/lib/module/components/KeyboardAwareFormWrapper/index.js +4 -0
  79. package/lib/module/components/KeyboardAwareFormWrapper/index.js.map +1 -0
  80. package/lib/module/hooks/index.js +6 -0
  81. package/lib/module/hooks/index.js.map +1 -0
  82. package/lib/module/hooks/useFieldFlowForm.js +104 -0
  83. package/lib/module/hooks/useFieldFlowForm.js.map +1 -0
  84. package/lib/module/hooks/useFieldState.js +23 -0
  85. package/lib/module/hooks/useFieldState.js.map +1 -0
  86. package/lib/module/hooks/useKeyboardManager.js +64 -0
  87. package/lib/module/hooks/useKeyboardManager.js.map +1 -0
  88. package/lib/module/icons/Icon.js +383 -0
  89. package/lib/module/icons/Icon.js.map +1 -0
  90. package/lib/module/icons/index.js +4 -0
  91. package/lib/module/icons/index.js.map +1 -0
  92. package/lib/module/index.js +18 -0
  93. package/lib/module/index.js.map +1 -0
  94. package/lib/module/theme/ThemeProvider.js +42 -0
  95. package/lib/module/theme/ThemeProvider.js.map +1 -0
  96. package/lib/module/theme/defaultTheme.js +58 -0
  97. package/lib/module/theme/defaultTheme.js.map +1 -0
  98. package/lib/module/theme/index.js +5 -0
  99. package/lib/module/theme/index.js.map +1 -0
  100. package/lib/module/types/index.js +4 -0
  101. package/lib/module/types/index.js.map +1 -0
  102. package/lib/module/utils/formatters.js +19 -0
  103. package/lib/module/utils/formatters.js.map +1 -0
  104. package/lib/module/utils/keyboardTypes.js +98 -0
  105. package/lib/module/utils/keyboardTypes.js.map +1 -0
  106. package/lib/module/validation/index.js +5 -0
  107. package/lib/module/validation/index.js.map +1 -0
  108. package/lib/module/validation/useValidation.js +30 -0
  109. package/lib/module/validation/useValidation.js.map +1 -0
  110. package/lib/module/validation/validators.js +103 -0
  111. package/lib/module/validation/validators.js.map +1 -0
  112. package/lib/typescript/components/ChatInput/ChatInput.d.ts +10 -0
  113. package/lib/typescript/components/ChatInput/ChatInput.d.ts.map +1 -0
  114. package/lib/typescript/components/ChatInput/index.d.ts +3 -0
  115. package/lib/typescript/components/ChatInput/index.d.ts.map +1 -0
  116. package/lib/typescript/components/ChatInput/types.d.ts +30 -0
  117. package/lib/typescript/components/ChatInput/types.d.ts.map +1 -0
  118. package/lib/typescript/components/DescriptionField/DescriptionField.d.ts +16 -0
  119. package/lib/typescript/components/DescriptionField/DescriptionField.d.ts.map +1 -0
  120. package/lib/typescript/components/DescriptionField/index.d.ts +3 -0
  121. package/lib/typescript/components/DescriptionField/index.d.ts.map +1 -0
  122. package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts +5 -0
  123. package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -0
  124. package/lib/typescript/components/FieldFlowInput/index.d.ts +3 -0
  125. package/lib/typescript/components/FieldFlowInput/index.d.ts.map +1 -0
  126. package/lib/typescript/components/FieldFlowInput/styles.d.ts +71 -0
  127. package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -0
  128. package/lib/typescript/components/FieldFlowInput/types.d.ts +50 -0
  129. package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -0
  130. package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts +17 -0
  131. package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts.map +1 -0
  132. package/lib/typescript/components/KeyboardAwareFormWrapper/index.d.ts +3 -0
  133. package/lib/typescript/components/KeyboardAwareFormWrapper/index.d.ts.map +1 -0
  134. package/lib/typescript/hooks/index.d.ts +7 -0
  135. package/lib/typescript/hooks/index.d.ts.map +1 -0
  136. package/lib/typescript/hooks/useFieldFlowForm.d.ts +31 -0
  137. package/lib/typescript/hooks/useFieldFlowForm.d.ts.map +1 -0
  138. package/lib/typescript/hooks/useFieldState.d.ts +12 -0
  139. package/lib/typescript/hooks/useFieldState.d.ts.map +1 -0
  140. package/lib/typescript/hooks/useKeyboardManager.d.ts +35 -0
  141. package/lib/typescript/hooks/useKeyboardManager.d.ts.map +1 -0
  142. package/lib/typescript/icons/Icon.d.ts +17 -0
  143. package/lib/typescript/icons/Icon.d.ts.map +1 -0
  144. package/lib/typescript/icons/index.d.ts +3 -0
  145. package/lib/typescript/icons/index.d.ts.map +1 -0
  146. package/lib/typescript/index.d.ts +18 -0
  147. package/lib/typescript/index.d.ts.map +1 -0
  148. package/lib/typescript/theme/ThemeProvider.d.ts +16 -0
  149. package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -0
  150. package/lib/typescript/theme/defaultTheme.d.ts +4 -0
  151. package/lib/typescript/theme/defaultTheme.d.ts.map +1 -0
  152. package/lib/typescript/theme/index.d.ts +4 -0
  153. package/lib/typescript/theme/index.d.ts.map +1 -0
  154. package/lib/typescript/types/index.d.ts +79 -0
  155. package/lib/typescript/types/index.d.ts.map +1 -0
  156. package/lib/typescript/utils/formatters.d.ts +5 -0
  157. package/lib/typescript/utils/formatters.d.ts.map +1 -0
  158. package/lib/typescript/utils/keyboardTypes.d.ts +18 -0
  159. package/lib/typescript/utils/keyboardTypes.d.ts.map +1 -0
  160. package/lib/typescript/validation/index.d.ts +4 -0
  161. package/lib/typescript/validation/index.d.ts.map +1 -0
  162. package/lib/typescript/validation/useValidation.d.ts +14 -0
  163. package/lib/typescript/validation/useValidation.d.ts.map +1 -0
  164. package/lib/typescript/validation/validators.d.ts +17 -0
  165. package/lib/typescript/validation/validators.d.ts.map +1 -0
  166. package/package.json +80 -0
  167. package/src/components/ChatInput/ChatInput.tsx +178 -0
  168. package/src/components/ChatInput/index.ts +2 -0
  169. package/src/components/ChatInput/types.ts +35 -0
  170. package/src/components/DescriptionField/DescriptionField.tsx +39 -0
  171. package/src/components/DescriptionField/index.ts +2 -0
  172. package/src/components/FieldFlowInput/FieldFlowInput.tsx +240 -0
  173. package/src/components/FieldFlowInput/index.ts +2 -0
  174. package/src/components/FieldFlowInput/styles.ts +94 -0
  175. package/src/components/FieldFlowInput/types.ts +55 -0
  176. package/src/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.tsx +45 -0
  177. package/src/components/KeyboardAwareFormWrapper/index.ts +2 -0
  178. package/src/hooks/index.ts +12 -0
  179. package/src/hooks/useFieldFlowForm.ts +133 -0
  180. package/src/hooks/useFieldState.ts +31 -0
  181. package/src/hooks/useKeyboardManager.ts +105 -0
  182. package/src/icons/Icon.tsx +338 -0
  183. package/src/icons/index.ts +2 -0
  184. package/src/index.ts +63 -0
  185. package/src/theme/ThemeProvider.tsx +49 -0
  186. package/src/theme/defaultTheme.ts +58 -0
  187. package/src/theme/index.ts +3 -0
  188. package/src/types/index.ts +98 -0
  189. package/src/utils/formatters.ts +18 -0
  190. package/src/utils/keyboardTypes.ts +85 -0
  191. package/src/validation/index.ts +15 -0
  192. package/src/validation/useValidation.ts +37 -0
  193. package/src/validation/validators.ts +93 -0
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export { useKeyboardManager } from './useKeyboardManager';
4
+ export { useFieldFlowForm } from './useFieldFlowForm';
5
+ export { useFieldState } from './useFieldState';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useKeyboardManager","useFieldFlowForm","useFieldState"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,sBAAsB;AAGzD,SAASC,gBAAgB,QAAQ,oBAAoB;AAOrD,SAASC,aAAa,QAAQ,iBAAiB","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useMemo, useState } from 'react';
4
+ import { runRules } from '../validation/validators';
5
+ /**
6
+ * Drop-in form state manager for a set of FieldFlow inputs. Handles values,
7
+ * per-field + whole-form validation (via the same `FieldFlowRules` used by
8
+ * the input components), touched-state, and submission.
9
+ */
10
+ export function useFieldFlowForm({
11
+ initialValues,
12
+ rules,
13
+ onSubmit
14
+ }) {
15
+ const [values, setValues] = useState(initialValues);
16
+ const [errors, setErrors] = useState({});
17
+ const [touched, setTouched] = useState({});
18
+ const [isSubmitting, setIsSubmitting] = useState(false);
19
+ const validateField = useCallback(field => {
20
+ const fieldRules = rules?.[field];
21
+ const result = runRules(values[field] ?? '', fieldRules);
22
+ setErrors(prev => ({
23
+ ...prev,
24
+ [field]: result.valid ? undefined : result.message
25
+ }));
26
+ return result.valid;
27
+ }, [rules, values]);
28
+ const validateAll = useCallback(() => {
29
+ if (!rules) return true;
30
+ let allValid = true;
31
+ const nextErrors = {};
32
+ for (const key of Object.keys(rules)) {
33
+ const result = runRules(values[key] ?? '', rules[key]);
34
+ if (!result.valid) {
35
+ allValid = false;
36
+ nextErrors[key] = result.message;
37
+ }
38
+ }
39
+ setErrors(nextErrors);
40
+ setTouched(prev => {
41
+ const next = {
42
+ ...prev
43
+ };
44
+ for (const key of Object.keys(rules)) next[key] = true;
45
+ return next;
46
+ });
47
+ return allValid;
48
+ }, [rules, values]);
49
+ const setValue = useCallback((field, value) => {
50
+ setValues(prev => ({
51
+ ...prev,
52
+ [field]: value
53
+ }));
54
+ }, []);
55
+ const handleChange = useCallback(field => value => {
56
+ setValue(field, value);
57
+ if (touched[field]) {
58
+ // live-validate once the user has already blurred this field once
59
+ const result = runRules(value, rules?.[field]);
60
+ setErrors(prev => ({
61
+ ...prev,
62
+ [field]: result.valid ? undefined : result.message
63
+ }));
64
+ }
65
+ }, [rules, setValue, touched]);
66
+ const handleBlur = useCallback(field => () => {
67
+ setTouched(prev => ({
68
+ ...prev,
69
+ [field]: true
70
+ }));
71
+ validateField(field);
72
+ }, [validateField]);
73
+ const submit = useCallback(async () => {
74
+ const valid = validateAll();
75
+ if (!valid) return;
76
+ setIsSubmitting(true);
77
+ try {
78
+ await onSubmit?.(values);
79
+ } finally {
80
+ setIsSubmitting(false);
81
+ }
82
+ }, [onSubmit, validateAll, values]);
83
+ const reset = useCallback(() => {
84
+ setValues(initialValues);
85
+ setErrors({});
86
+ setTouched({});
87
+ }, [initialValues]);
88
+ const isValid = useMemo(() => Object.values(errors).every(e => !e), [errors]);
89
+ return {
90
+ values,
91
+ errors,
92
+ touched,
93
+ isSubmitting,
94
+ isValid,
95
+ setValue,
96
+ handleChange,
97
+ handleBlur,
98
+ validateField,
99
+ validateAll,
100
+ submit,
101
+ reset
102
+ };
103
+ }
104
+ //# sourceMappingURL=useFieldFlowForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useMemo","useState","runRules","useFieldFlowForm","initialValues","rules","onSubmit","values","setValues","errors","setErrors","touched","setTouched","isSubmitting","setIsSubmitting","validateField","field","fieldRules","result","prev","valid","undefined","message","validateAll","allValid","nextErrors","key","Object","keys","next","setValue","value","handleChange","handleBlur","submit","reset","isValid","every","e"],"sourceRoot":"../../../src","sources":["hooks/useFieldFlowForm.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAEtD,SAASC,QAAQ,QAAQ,0BAA0B;AA4BnD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAmC;EACjEC,aAAa;EACbC,KAAK;EACLC;AAC0B,CAAC,EAA6B;EACxD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGP,QAAQ,CAAIG,aAAa,CAAC;EACtD,MAAM,CAACK,MAAM,EAAEC,SAAS,CAAC,GAAGT,QAAQ,CAAmC,CAAC,CAAC,CAAC;EAC1E,MAAM,CAACU,OAAO,EAAEC,UAAU,CAAC,GAAGX,QAAQ,CAAoC,CAAC,CAAC,CAAC;EAC7E,MAAM,CAACY,YAAY,EAAEC,eAAe,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAEvD,MAAMc,aAAa,GAAGhB,WAAW,CAC9BiB,KAAc,IAAc;IAC3B,MAAMC,UAAU,GAAGZ,KAAK,GAAGW,KAAK,CAAC;IACjC,MAAME,MAAM,GAAGhB,QAAQ,CAACK,MAAM,CAACS,KAAK,CAAC,IAAI,EAAE,EAAEC,UAAU,CAAC;IACxDP,SAAS,CAACS,IAAI,KAAK;MAAE,GAAGA,IAAI;MAAE,CAACH,KAAK,GAAGE,MAAM,CAACE,KAAK,GAAGC,SAAS,GAAGH,MAAM,CAACI;IAAQ,CAAC,CAAC,CAAC;IACpF,OAAOJ,MAAM,CAACE,KAAK;EACrB,CAAC,EACD,CAACf,KAAK,EAAEE,MAAM,CAChB,CAAC;EAED,MAAMgB,WAAW,GAAGxB,WAAW,CAAC,MAAe;IAC7C,IAAI,CAACM,KAAK,EAAE,OAAO,IAAI;IACvB,IAAImB,QAAQ,GAAG,IAAI;IACnB,MAAMC,UAA4C,GAAG,CAAC,CAAC;IACvD,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACvB,KAAK,CAAC,EAAiB;MACnD,MAAMa,MAAM,GAAGhB,QAAQ,CAACK,MAAM,CAACmB,GAAG,CAAC,IAAI,EAAE,EAAErB,KAAK,CAACqB,GAAG,CAAC,CAAC;MACtD,IAAI,CAACR,MAAM,CAACE,KAAK,EAAE;QACjBI,QAAQ,GAAG,KAAK;QAChBC,UAAU,CAACC,GAAG,CAAC,GAAGR,MAAM,CAACI,OAAO;MAClC;IACF;IACAZ,SAAS,CAACe,UAAU,CAAC;IACrBb,UAAU,CAACO,IAAI,IAAI;MACjB,MAAMU,IAAI,GAAG;QAAE,GAAGV;MAAK,CAAC;MACxB,KAAK,MAAMO,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACvB,KAAK,CAAC,EAAEwB,IAAI,CAACH,GAAG,CAAY,GAAG,IAAI;MACjE,OAAOG,IAAI;IACb,CAAC,CAAC;IACF,OAAOL,QAAQ;EACjB,CAAC,EAAE,CAACnB,KAAK,EAAEE,MAAM,CAAC,CAAC;EAEnB,MAAMuB,QAAQ,GAAG/B,WAAW,CAAC,CAACiB,KAAc,EAAEe,KAAa,KAAK;IAC9DvB,SAAS,CAACW,IAAI,KAAK;MAAE,GAAGA,IAAI;MAAE,CAACH,KAAK,GAAGe;IAAM,CAAC,CAAC,CAAC;EAClD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,YAAY,GAAGjC,WAAW,CAC7BiB,KAAc,IAAMe,KAAa,IAAK;IACrCD,QAAQ,CAACd,KAAK,EAAEe,KAAK,CAAC;IACtB,IAAIpB,OAAO,CAACK,KAAK,CAAC,EAAE;MAClB;MACA,MAAME,MAAM,GAAGhB,QAAQ,CAAC6B,KAAK,EAAE1B,KAAK,GAAGW,KAAK,CAAC,CAAC;MAC9CN,SAAS,CAACS,IAAI,KAAK;QAAE,GAAGA,IAAI;QAAE,CAACH,KAAK,GAAGE,MAAM,CAACE,KAAK,GAAGC,SAAS,GAAGH,MAAM,CAACI;MAAQ,CAAC,CAAC,CAAC;IACtF;EACF,CAAC,EACD,CAACjB,KAAK,EAAEyB,QAAQ,EAAEnB,OAAO,CAC3B,CAAC;EAED,MAAMsB,UAAU,GAAGlC,WAAW,CAC3BiB,KAAc,IAAK,MAAM;IACxBJ,UAAU,CAACO,IAAI,KAAK;MAAE,GAAGA,IAAI;MAAE,CAACH,KAAK,GAAG;IAAK,CAAC,CAAC,CAAC;IAChDD,aAAa,CAACC,KAAK,CAAC;EACtB,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAMmB,MAAM,GAAGnC,WAAW,CAAC,YAAY;IACrC,MAAMqB,KAAK,GAAGG,WAAW,CAAC,CAAC;IAC3B,IAAI,CAACH,KAAK,EAAE;IACZN,eAAe,CAAC,IAAI,CAAC;IACrB,IAAI;MACF,MAAMR,QAAQ,GAAGC,MAAM,CAAC;IAC1B,CAAC,SAAS;MACRO,eAAe,CAAC,KAAK,CAAC;IACxB;EACF,CAAC,EAAE,CAACR,QAAQ,EAAEiB,WAAW,EAAEhB,MAAM,CAAC,CAAC;EAEnC,MAAM4B,KAAK,GAAGpC,WAAW,CAAC,MAAM;IAC9BS,SAAS,CAACJ,aAAa,CAAC;IACxBM,SAAS,CAAC,CAAC,CAAC,CAAC;IACbE,UAAU,CAAC,CAAC,CAAC,CAAC;EAChB,CAAC,EAAE,CAACR,aAAa,CAAC,CAAC;EAEnB,MAAMgC,OAAO,GAAGpC,OAAO,CAAC,MAAM2B,MAAM,CAACpB,MAAM,CAACE,MAAM,CAAC,CAAC4B,KAAK,CAACC,CAAC,IAAI,CAACA,CAAC,CAAC,EAAE,CAAC7B,MAAM,CAAC,CAAC;EAE7E,OAAO;IACLF,MAAM;IACNE,MAAM;IACNE,OAAO;IACPE,YAAY;IACZuB,OAAO;IACPN,QAAQ;IACRE,YAAY;IACZC,UAAU;IACVlB,aAAa;IACbQ,WAAW;IACXW,MAAM;IACNC;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ /** Resolves the many boolean flags a field can have into one canonical visual state. */
5
+ export function useFieldState({
6
+ isFocused,
7
+ hasError,
8
+ isSuccess,
9
+ disabled,
10
+ readOnly,
11
+ loading
12
+ }) {
13
+ return useMemo(() => {
14
+ if (disabled) return 'disabled';
15
+ if (readOnly) return 'readonly';
16
+ if (loading) return 'loading';
17
+ if (hasError) return 'error';
18
+ if (isSuccess) return 'success';
19
+ if (isFocused) return 'focused';
20
+ return 'idle';
21
+ }, [disabled, readOnly, loading, hasError, isSuccess, isFocused]);
22
+ }
23
+ //# sourceMappingURL=useFieldState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useFieldState","isFocused","hasError","isSuccess","disabled","readOnly","loading"],"sourceRoot":"../../../src","sources":["hooks/useFieldState.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAY/B;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,SAAS;EACTC,QAAQ;EACRC,SAAS;EACTC,QAAQ;EACRC,QAAQ;EACRC;AACoB,CAAC,EAAkB;EACvC,OAAOP,OAAO,CAAiB,MAAM;IACnC,IAAIK,QAAQ,EAAE,OAAO,UAAU;IAC/B,IAAIC,QAAQ,EAAE,OAAO,UAAU;IAC/B,IAAIC,OAAO,EAAE,OAAO,SAAS;IAC7B,IAAIJ,QAAQ,EAAE,OAAO,OAAO;IAC5B,IAAIC,SAAS,EAAE,OAAO,SAAS;IAC/B,IAAIF,SAAS,EAAE,OAAO,SAAS;IAC/B,OAAO,MAAM;EACf,CAAC,EAAE,CAACG,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEJ,QAAQ,EAAEC,SAAS,EAAEF,SAAS,CAAC,CAAC;AACnE","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useRef } from 'react';
4
+ /**
5
+ * Coordinates focus across many inputs in a form: pressing "Next" on the keyboard
6
+ * moves to the next field automatically, "Done" on the last field fires onSubmit,
7
+ * and the surrounding ScrollView auto-scrolls so the focused field stays visible
8
+ * above the keyboard.
9
+ */
10
+ export function useKeyboardManager({
11
+ order,
12
+ onSubmit,
13
+ scrollOffset = 24
14
+ }) {
15
+ const fields = useRef(new Map());
16
+ const scrollViewRef = useRef(null);
17
+ const registerField = useCallback((id, ref, offsetY) => {
18
+ fields.current.set(id, {
19
+ ref,
20
+ offsetY
21
+ });
22
+ }, []);
23
+ const unregisterField = useCallback(id => {
24
+ fields.current.delete(id);
25
+ }, []);
26
+ const scrollToField = useCallback(id => {
27
+ const field = fields.current.get(id);
28
+ if (field?.offsetY !== undefined && scrollViewRef.current) {
29
+ scrollViewRef.current.scrollTo({
30
+ y: Math.max(0, field.offsetY - scrollOffset),
31
+ animated: true
32
+ });
33
+ }
34
+ }, [scrollOffset]);
35
+ const focusField = useCallback(id => {
36
+ const field = fields.current.get(id);
37
+ field?.ref.current?.focus();
38
+ scrollToField(id);
39
+ }, [scrollToField]);
40
+ const focusNext = useCallback(id => {
41
+ const currentIndex = order.indexOf(id);
42
+ const nextId = order[currentIndex + 1];
43
+ if (nextId) {
44
+ focusField(nextId);
45
+ } else {
46
+ fields.current.get(id)?.ref.current?.blur();
47
+ onSubmit?.();
48
+ }
49
+ }, [order, focusField, onSubmit]);
50
+ const getReturnKeyType = useCallback(id => {
51
+ const isLast = order.indexOf(id) === order.length - 1;
52
+ return isLast ? 'done' : 'next';
53
+ }, [order]);
54
+ return {
55
+ registerField,
56
+ unregisterField,
57
+ focusNext,
58
+ focusField,
59
+ scrollViewRef,
60
+ getReturnKeyType,
61
+ onSubmit: () => onSubmit?.()
62
+ };
63
+ }
64
+ //# sourceMappingURL=useKeyboardManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useRef","useKeyboardManager","order","onSubmit","scrollOffset","fields","Map","scrollViewRef","registerField","id","ref","offsetY","current","set","unregisterField","delete","scrollToField","field","get","undefined","scrollTo","y","Math","max","animated","focusField","focus","focusNext","currentIndex","indexOf","nextId","blur","getReturnKeyType","isLast","length"],"sourceRoot":"../../../src","sources":["hooks/useKeyboardManager.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAgC3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,KAAK;EACLC,QAAQ;EACRC,YAAY,GAAG;AACU,CAAC,EAA4B;EACtD,MAAMC,MAAM,GAAGL,MAAM,CAAoC,IAAIM,GAAG,CAAC,CAAC,CAAC;EACnE,MAAMC,aAAa,GAAGP,MAAM,CAAa,IAAI,CAAC;EAE9C,MAAMQ,aAAa,GAAGT,WAAW,CAAC,CAACU,EAAU,EAAEC,GAAsC,EAAEC,OAAgB,KAAK;IAC1GN,MAAM,CAACO,OAAO,CAACC,GAAG,CAACJ,EAAE,EAAE;MAAEC,GAAG;MAAEC;IAAQ,CAAC,CAAC;EAC1C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,eAAe,GAAGf,WAAW,CAAEU,EAAU,IAAK;IAClDJ,MAAM,CAACO,OAAO,CAACG,MAAM,CAACN,EAAE,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMO,aAAa,GAAGjB,WAAW,CAC9BU,EAAU,IAAK;IACd,MAAMQ,KAAK,GAAGZ,MAAM,CAACO,OAAO,CAACM,GAAG,CAACT,EAAE,CAAC;IACpC,IAAIQ,KAAK,EAAEN,OAAO,KAAKQ,SAAS,IAAIZ,aAAa,CAACK,OAAO,EAAE;MACzDL,aAAa,CAACK,OAAO,CAACQ,QAAQ,CAAC;QAAEC,CAAC,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEN,KAAK,CAACN,OAAO,GAAGP,YAAY,CAAC;QAAEoB,QAAQ,EAAE;MAAK,CAAC,CAAC;IAClG;EACF,CAAC,EACD,CAACpB,YAAY,CACf,CAAC;EAED,MAAMqB,UAAU,GAAG1B,WAAW,CAC3BU,EAAU,IAAK;IACd,MAAMQ,KAAK,GAAGZ,MAAM,CAACO,OAAO,CAACM,GAAG,CAACT,EAAE,CAAC;IACpCQ,KAAK,EAAEP,GAAG,CAACE,OAAO,EAAEc,KAAK,CAAC,CAAC;IAC3BV,aAAa,CAACP,EAAE,CAAC;EACnB,CAAC,EACD,CAACO,aAAa,CAChB,CAAC;EAED,MAAMW,SAAS,GAAG5B,WAAW,CAC1BU,EAAU,IAAK;IACd,MAAMmB,YAAY,GAAG1B,KAAK,CAAC2B,OAAO,CAACpB,EAAE,CAAC;IACtC,MAAMqB,MAAM,GAAG5B,KAAK,CAAC0B,YAAY,GAAG,CAAC,CAAC;IACtC,IAAIE,MAAM,EAAE;MACVL,UAAU,CAACK,MAAM,CAAC;IACpB,CAAC,MAAM;MACLzB,MAAM,CAACO,OAAO,CAACM,GAAG,CAACT,EAAE,CAAC,EAAEC,GAAG,CAACE,OAAO,EAAEmB,IAAI,CAAC,CAAC;MAC3C5B,QAAQ,GAAG,CAAC;IACd;EACF,CAAC,EACD,CAACD,KAAK,EAAEuB,UAAU,EAAEtB,QAAQ,CAC9B,CAAC;EAED,MAAM6B,gBAAgB,GAAGjC,WAAW,CACjCU,EAAU,IAAsB;IAC/B,MAAMwB,MAAM,GAAG/B,KAAK,CAAC2B,OAAO,CAACpB,EAAE,CAAC,KAAKP,KAAK,CAACgC,MAAM,GAAG,CAAC;IACrD,OAAOD,MAAM,GAAG,MAAM,GAAG,MAAM;EACjC,CAAC,EACD,CAAC/B,KAAK,CACR,CAAC;EAED,OAAO;IACLM,aAAa;IACbM,eAAe;IACfa,SAAS;IACTF,UAAU;IACVlB,aAAa;IACbyB,gBAAgB;IAChB7B,QAAQ,EAAEA,CAAA,KAAMA,QAAQ,GAAG;EAC7B,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useRef } from 'react';
4
+ import { Animated, Easing, View } from 'react-native';
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ /**
7
+ * A minimal, dependency-free icon set built out of basic Views. Ships so consumers
8
+ * don't need to install react-native-svg / vector-icons just to use FieldFlow.
9
+ * Every icon accepts `size` and `color`, and you can always render your own
10
+ * icon via the `leftIcon` / `rightIcon` props on any FieldFlow component instead.
11
+ */
12
+ export function FieldFlowIcon({
13
+ name,
14
+ size = 18,
15
+ color = '#6B7280',
16
+ style
17
+ }) {
18
+ if (name === 'spinner') {
19
+ return /*#__PURE__*/_jsx(SpinnerIcon, {
20
+ size: size,
21
+ color: color,
22
+ style: style
23
+ });
24
+ }
25
+ const stroke = Math.max(1.5, size * 0.09);
26
+ const box = {
27
+ width: size,
28
+ height: size,
29
+ alignItems: 'center',
30
+ justifyContent: 'center'
31
+ };
32
+ switch (name) {
33
+ case 'eye':
34
+ return /*#__PURE__*/_jsxs(View, {
35
+ style: [box, style],
36
+ children: [/*#__PURE__*/_jsx(View, {
37
+ style: {
38
+ width: size,
39
+ height: size * 0.55,
40
+ borderRadius: size * 0.55,
41
+ borderWidth: stroke,
42
+ borderColor: color
43
+ }
44
+ }), /*#__PURE__*/_jsx(View, {
45
+ style: {
46
+ position: 'absolute',
47
+ width: size * 0.3,
48
+ height: size * 0.3,
49
+ borderRadius: size * 0.15,
50
+ backgroundColor: color
51
+ }
52
+ })]
53
+ });
54
+ case 'eyeOff':
55
+ return /*#__PURE__*/_jsxs(View, {
56
+ style: [box, style],
57
+ children: [/*#__PURE__*/_jsx(View, {
58
+ style: {
59
+ width: size,
60
+ height: size * 0.55,
61
+ borderRadius: size * 0.55,
62
+ borderWidth: stroke,
63
+ borderColor: color,
64
+ opacity: 0.6
65
+ }
66
+ }), /*#__PURE__*/_jsx(View, {
67
+ style: {
68
+ position: 'absolute',
69
+ width: size * 1.15,
70
+ height: stroke,
71
+ backgroundColor: color,
72
+ transform: [{
73
+ rotate: '45deg'
74
+ }]
75
+ }
76
+ })]
77
+ });
78
+ case 'clear':
79
+ return /*#__PURE__*/_jsxs(View, {
80
+ style: [box, style],
81
+ children: [/*#__PURE__*/_jsx(View, {
82
+ style: {
83
+ width: size,
84
+ height: size,
85
+ borderRadius: size / 2,
86
+ backgroundColor: color,
87
+ opacity: 0.15,
88
+ position: 'absolute'
89
+ }
90
+ }), /*#__PURE__*/_jsx(View, {
91
+ style: {
92
+ width: size * 0.5,
93
+ height: stroke,
94
+ backgroundColor: color,
95
+ transform: [{
96
+ rotate: '45deg'
97
+ }],
98
+ position: 'absolute'
99
+ }
100
+ }), /*#__PURE__*/_jsx(View, {
101
+ style: {
102
+ width: size * 0.5,
103
+ height: stroke,
104
+ backgroundColor: color,
105
+ transform: [{
106
+ rotate: '-45deg'
107
+ }],
108
+ position: 'absolute'
109
+ }
110
+ })]
111
+ });
112
+ case 'check':
113
+ return /*#__PURE__*/_jsxs(View, {
114
+ style: [box, style],
115
+ children: [/*#__PURE__*/_jsx(View, {
116
+ style: {
117
+ width: size * 0.55,
118
+ height: stroke,
119
+ backgroundColor: color,
120
+ transform: [{
121
+ rotate: '45deg'
122
+ }, {
123
+ translateY: size * 0.12
124
+ }, {
125
+ translateX: -size * 0.08
126
+ }],
127
+ position: 'absolute'
128
+ }
129
+ }), /*#__PURE__*/_jsx(View, {
130
+ style: {
131
+ width: size * 0.3,
132
+ height: stroke,
133
+ backgroundColor: color,
134
+ transform: [{
135
+ rotate: '-45deg'
136
+ }, {
137
+ translateY: size * 0.05
138
+ }, {
139
+ translateX: -size * 0.22
140
+ }],
141
+ position: 'absolute'
142
+ }
143
+ })]
144
+ });
145
+ case 'alert':
146
+ return /*#__PURE__*/_jsx(View, {
147
+ style: [box, style],
148
+ children: /*#__PURE__*/_jsxs(View, {
149
+ style: {
150
+ width: size,
151
+ height: size,
152
+ borderRadius: size / 2,
153
+ borderWidth: stroke,
154
+ borderColor: color,
155
+ alignItems: 'center',
156
+ justifyContent: 'center'
157
+ },
158
+ children: [/*#__PURE__*/_jsx(View, {
159
+ style: {
160
+ width: stroke,
161
+ height: size * 0.32,
162
+ backgroundColor: color,
163
+ borderRadius: stroke,
164
+ marginBottom: size * 0.08
165
+ }
166
+ }), /*#__PURE__*/_jsx(View, {
167
+ style: {
168
+ width: stroke,
169
+ height: stroke,
170
+ borderRadius: stroke / 2,
171
+ backgroundColor: color
172
+ }
173
+ })]
174
+ })
175
+ });
176
+ case 'search':
177
+ return /*#__PURE__*/_jsxs(View, {
178
+ style: [box, style],
179
+ children: [/*#__PURE__*/_jsx(View, {
180
+ style: {
181
+ width: size * 0.7,
182
+ height: size * 0.7,
183
+ borderRadius: size * 0.35,
184
+ borderWidth: stroke,
185
+ borderColor: color,
186
+ position: 'absolute',
187
+ top: 0,
188
+ left: 0
189
+ }
190
+ }), /*#__PURE__*/_jsx(View, {
191
+ style: {
192
+ width: size * 0.4,
193
+ height: stroke,
194
+ backgroundColor: color,
195
+ position: 'absolute',
196
+ bottom: 0,
197
+ right: 0,
198
+ borderRadius: stroke,
199
+ transform: [{
200
+ rotate: '45deg'
201
+ }]
202
+ }
203
+ })]
204
+ });
205
+ case 'send':
206
+ return /*#__PURE__*/_jsx(View, {
207
+ style: [box, style],
208
+ children: /*#__PURE__*/_jsx(View, {
209
+ style: {
210
+ width: 0,
211
+ height: 0,
212
+ borderTopWidth: size * 0.5,
213
+ borderBottomWidth: size * 0.5,
214
+ borderLeftWidth: size * 0.7,
215
+ borderTopColor: 'transparent',
216
+ borderBottomColor: 'transparent',
217
+ borderLeftColor: color,
218
+ transform: [{
219
+ rotate: '0deg'
220
+ }]
221
+ }
222
+ })
223
+ });
224
+ case 'camera':
225
+ return /*#__PURE__*/_jsx(View, {
226
+ style: [box, style],
227
+ children: /*#__PURE__*/_jsx(View, {
228
+ style: {
229
+ width: size,
230
+ height: size * 0.75,
231
+ borderRadius: size * 0.15,
232
+ borderWidth: stroke,
233
+ borderColor: color,
234
+ alignItems: 'center',
235
+ justifyContent: 'center'
236
+ },
237
+ children: /*#__PURE__*/_jsx(View, {
238
+ style: {
239
+ width: size * 0.36,
240
+ height: size * 0.36,
241
+ borderRadius: size * 0.18,
242
+ borderWidth: stroke,
243
+ borderColor: color
244
+ }
245
+ })
246
+ })
247
+ });
248
+ case 'image':
249
+ return /*#__PURE__*/_jsx(View, {
250
+ style: [box, style],
251
+ children: /*#__PURE__*/_jsxs(View, {
252
+ style: {
253
+ width: size,
254
+ height: size * 0.8,
255
+ borderRadius: size * 0.12,
256
+ borderWidth: stroke,
257
+ borderColor: color,
258
+ overflow: 'hidden'
259
+ },
260
+ children: [/*#__PURE__*/_jsx(View, {
261
+ style: {
262
+ position: 'absolute',
263
+ bottom: 0,
264
+ left: size * 0.1,
265
+ width: size * 0.3,
266
+ height: size * 0.35,
267
+ backgroundColor: color,
268
+ opacity: 0.8
269
+ }
270
+ }), /*#__PURE__*/_jsx(View, {
271
+ style: {
272
+ position: 'absolute',
273
+ top: size * 0.12,
274
+ right: size * 0.15,
275
+ width: size * 0.16,
276
+ height: size * 0.16,
277
+ borderRadius: size * 0.08,
278
+ backgroundColor: color
279
+ }
280
+ })]
281
+ })
282
+ });
283
+ case 'paperclip':
284
+ return /*#__PURE__*/_jsx(View, {
285
+ style: [box, style],
286
+ children: /*#__PURE__*/_jsx(View, {
287
+ style: {
288
+ width: size * 0.36,
289
+ height: size * 0.9,
290
+ borderRadius: size * 0.18,
291
+ borderWidth: stroke,
292
+ borderColor: color,
293
+ transform: [{
294
+ rotate: '20deg'
295
+ }]
296
+ }
297
+ })
298
+ });
299
+ case 'mic':
300
+ return /*#__PURE__*/_jsxs(View, {
301
+ style: [box, style],
302
+ children: [/*#__PURE__*/_jsx(View, {
303
+ style: {
304
+ width: size * 0.4,
305
+ height: size * 0.65,
306
+ borderRadius: size * 0.2,
307
+ borderWidth: stroke,
308
+ borderColor: color,
309
+ marginBottom: size * 0.05
310
+ }
311
+ }), /*#__PURE__*/_jsx(View, {
312
+ style: {
313
+ width: size * 0.6,
314
+ height: stroke,
315
+ backgroundColor: color,
316
+ borderRadius: stroke
317
+ }
318
+ })]
319
+ });
320
+ case 'mapPin':
321
+ return /*#__PURE__*/_jsx(View, {
322
+ style: [box, style],
323
+ children: /*#__PURE__*/_jsx(View, {
324
+ style: {
325
+ width: size * 0.7,
326
+ height: size * 0.7,
327
+ borderRadius: size * 0.35,
328
+ borderWidth: stroke,
329
+ borderColor: color,
330
+ alignItems: 'center',
331
+ justifyContent: 'center'
332
+ },
333
+ children: /*#__PURE__*/_jsx(View, {
334
+ style: {
335
+ width: size * 0.2,
336
+ height: size * 0.2,
337
+ borderRadius: size * 0.1,
338
+ backgroundColor: color
339
+ }
340
+ })
341
+ })
342
+ });
343
+ default:
344
+ return /*#__PURE__*/_jsx(View, {
345
+ style: [box, style]
346
+ });
347
+ }
348
+ }
349
+ function SpinnerIcon({
350
+ size,
351
+ color,
352
+ style
353
+ }) {
354
+ const spin = useRef(new Animated.Value(0)).current;
355
+ useEffect(() => {
356
+ const loop = Animated.loop(Animated.timing(spin, {
357
+ toValue: 1,
358
+ duration: 800,
359
+ easing: Easing.linear,
360
+ useNativeDriver: true
361
+ }));
362
+ loop.start();
363
+ return () => loop.stop();
364
+ }, [spin]);
365
+ const rotate = spin.interpolate({
366
+ inputRange: [0, 1],
367
+ outputRange: ['0deg', '360deg']
368
+ });
369
+ return /*#__PURE__*/_jsx(Animated.View, {
370
+ style: [{
371
+ width: size,
372
+ height: size,
373
+ borderRadius: size / 2,
374
+ borderWidth: Math.max(1.5, size * 0.12),
375
+ borderColor: color,
376
+ borderTopColor: 'transparent',
377
+ transform: [{
378
+ rotate
379
+ }]
380
+ }, style]
381
+ });
382
+ }
383
+ //# sourceMappingURL=Icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","Animated","Easing","View","jsx","_jsx","jsxs","_jsxs","FieldFlowIcon","name","size","color","style","SpinnerIcon","stroke","Math","max","box","width","height","alignItems","justifyContent","children","borderRadius","borderWidth","borderColor","position","backgroundColor","opacity","transform","rotate","translateY","translateX","marginBottom","top","left","bottom","right","borderTopWidth","borderBottomWidth","borderLeftWidth","borderTopColor","borderBottomColor","borderLeftColor","overflow","spin","Value","current","loop","timing","toValue","duration","easing","linear","useNativeDriver","start","stop","interpolate","inputRange","outputRange"],"sourceRoot":"../../../src","sources":["icons/Icon.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { FieldFlowIcon } from './Icon';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FieldFlowIcon"],"sourceRoot":"../../../src","sources":["icons/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,QAAQ","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ // Components
4
+ export { FieldFlowInput } from './components/FieldFlowInput';
5
+ export { DescriptionField } from './components/DescriptionField';
6
+ export { ChatInput } from './components/ChatInput';
7
+ export { KeyboardAwareFormWrapper } from './components/KeyboardAwareFormWrapper';
8
+ // Theming
9
+ export { FieldFlowThemeProvider, useFieldFlowTheme, defaultTheme, darkTheme } from './theme';
10
+ // Hooks
11
+ export { useFieldFlowForm, useKeyboardManager, useFieldState } from './hooks';
12
+ // Validation
13
+ export { useValidation, runRules, isValidEmail, isValidNumber, isValidPhone, requiredValidator, emailValidator, numberValidator, phoneValidator, minLengthValidator, maxLengthValidator, patternValidator } from './validation';
14
+ // Icons (in case consumers want to reuse FieldFlow's built-in icon set elsewhere)
15
+ export { FieldFlowIcon } from './icons';
16
+
17
+ // Types
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FieldFlowInput","DescriptionField","ChatInput","KeyboardAwareFormWrapper","FieldFlowThemeProvider","useFieldFlowTheme","defaultTheme","darkTheme","useFieldFlowForm","useKeyboardManager","useFieldState","useValidation","runRules","isValidEmail","isValidNumber","isValidPhone","requiredValidator","emailValidator","numberValidator","phoneValidator","minLengthValidator","maxLengthValidator","patternValidator","FieldFlowIcon"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,SAAS,QAAQ,wBAAwB;AAGlD,SAASC,wBAAwB,QAAQ,uCAAuC;AAGhF;AACA,SAASC,sBAAsB,EAAEC,iBAAiB,EAAEC,YAAY,EAAEC,SAAS,QAAQ,SAAS;AAG5F;AACA,SAASC,gBAAgB,EAAEC,kBAAkB,EAAEC,aAAa,QAAQ,SAAS;AAU7E;AACA,SACEC,aAAa,EACbC,QAAQ,EACRC,YAAY,EACZC,aAAa,EACbC,YAAY,EACZC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,cAAc,EACdC,kBAAkB,EAClBC,kBAAkB,EAClBC,gBAAgB,QACX,cAAc;AAGrB;AACA,SAASC,aAAa,QAAQ,SAAS;;AAGvC","ignoreList":[]}