rn-inputforge 0.3.1 → 0.4.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 (196) hide show
  1. package/README.md +224 -19
  2. package/lib/commonjs/components/FieldFlowCheckbox/FieldFlowCheckbox.js +131 -0
  3. package/lib/commonjs/components/FieldFlowCheckbox/FieldFlowCheckbox.js.map +1 -0
  4. package/lib/commonjs/components/FieldFlowCheckbox/index.js +13 -0
  5. package/lib/commonjs/components/FieldFlowCheckbox/index.js.map +1 -0
  6. package/lib/commonjs/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js +536 -0
  7. package/lib/commonjs/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js.map +1 -0
  8. package/lib/commonjs/components/FieldFlowDateTimePicker/index.js +13 -0
  9. package/lib/commonjs/components/FieldFlowDateTimePicker/index.js.map +1 -0
  10. package/lib/commonjs/components/FieldFlowDateTimePicker/types.js +6 -0
  11. package/lib/commonjs/components/FieldFlowDateTimePicker/types.js.map +1 -0
  12. package/lib/commonjs/components/FieldFlowDropdown/FieldFlowDropdown.js +24 -9
  13. package/lib/commonjs/components/FieldFlowDropdown/FieldFlowDropdown.js.map +1 -1
  14. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +55 -24
  15. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  16. package/lib/commonjs/components/FieldFlowInput/styles.js +32 -11
  17. package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -1
  18. package/lib/commonjs/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js +66 -0
  19. package/lib/commonjs/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js.map +1 -0
  20. package/lib/commonjs/components/FieldFlowMaskedInput/index.js +13 -0
  21. package/lib/commonjs/components/FieldFlowMaskedInput/index.js.map +1 -0
  22. package/lib/commonjs/components/FieldFlowMaskedInput/types.js +6 -0
  23. package/lib/commonjs/components/FieldFlowMaskedInput/types.js.map +1 -0
  24. package/lib/commonjs/components/FieldFlowOTP/FieldFlowOTP.js +255 -0
  25. package/lib/commonjs/components/FieldFlowOTP/FieldFlowOTP.js.map +1 -0
  26. package/lib/commonjs/components/FieldFlowOTP/index.js +13 -0
  27. package/lib/commonjs/components/FieldFlowOTP/index.js.map +1 -0
  28. package/lib/commonjs/components/FieldFlowOTP/types.js +6 -0
  29. package/lib/commonjs/components/FieldFlowOTP/types.js.map +1 -0
  30. package/lib/commonjs/components/FieldFlowRadio/FieldFlowRadio.js +164 -0
  31. package/lib/commonjs/components/FieldFlowRadio/FieldFlowRadio.js.map +1 -0
  32. package/lib/commonjs/components/FieldFlowRadio/index.js +13 -0
  33. package/lib/commonjs/components/FieldFlowRadio/index.js.map +1 -0
  34. package/lib/commonjs/components/FieldFlowSwitch/FieldFlowSwitch.js +152 -0
  35. package/lib/commonjs/components/FieldFlowSwitch/FieldFlowSwitch.js.map +1 -0
  36. package/lib/commonjs/components/FieldFlowSwitch/index.js +13 -0
  37. package/lib/commonjs/components/FieldFlowSwitch/index.js.map +1 -0
  38. package/lib/commonjs/hooks/index.js.map +1 -1
  39. package/lib/commonjs/hooks/useFieldFlowForm.js +146 -31
  40. package/lib/commonjs/hooks/useFieldFlowForm.js.map +1 -1
  41. package/lib/commonjs/icons/Icon.js +719 -30
  42. package/lib/commonjs/icons/Icon.js.map +1 -1
  43. package/lib/commonjs/icons/index.js +7 -0
  44. package/lib/commonjs/icons/index.js.map +1 -1
  45. package/lib/commonjs/icons/renderIcon.js +24 -0
  46. package/lib/commonjs/icons/renderIcon.js.map +1 -0
  47. package/lib/commonjs/index.js +127 -0
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/utils/masks.js +130 -0
  50. package/lib/commonjs/utils/masks.js.map +1 -0
  51. package/lib/commonjs/validation/index.js +25 -0
  52. package/lib/commonjs/validation/index.js.map +1 -1
  53. package/lib/commonjs/validation/zodAdapter.js +91 -0
  54. package/lib/commonjs/validation/zodAdapter.js.map +1 -0
  55. package/lib/module/components/FieldFlowCheckbox/FieldFlowCheckbox.js +126 -0
  56. package/lib/module/components/FieldFlowCheckbox/FieldFlowCheckbox.js.map +1 -0
  57. package/lib/module/components/FieldFlowCheckbox/index.js +4 -0
  58. package/lib/module/components/FieldFlowCheckbox/index.js.map +1 -0
  59. package/lib/module/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js +531 -0
  60. package/lib/module/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.js.map +1 -0
  61. package/lib/module/components/FieldFlowDateTimePicker/index.js +4 -0
  62. package/lib/module/components/FieldFlowDateTimePicker/index.js.map +1 -0
  63. package/lib/module/components/FieldFlowDateTimePicker/types.js +4 -0
  64. package/lib/module/components/FieldFlowDateTimePicker/types.js.map +1 -0
  65. package/lib/module/components/FieldFlowDropdown/FieldFlowDropdown.js +24 -9
  66. package/lib/module/components/FieldFlowDropdown/FieldFlowDropdown.js.map +1 -1
  67. package/lib/module/components/FieldFlowInput/FieldFlowInput.js +59 -28
  68. package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  69. package/lib/module/components/FieldFlowInput/styles.js +32 -11
  70. package/lib/module/components/FieldFlowInput/styles.js.map +1 -1
  71. package/lib/module/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js +61 -0
  72. package/lib/module/components/FieldFlowMaskedInput/FieldFlowMaskedInput.js.map +1 -0
  73. package/lib/module/components/FieldFlowMaskedInput/index.js +4 -0
  74. package/lib/module/components/FieldFlowMaskedInput/index.js.map +1 -0
  75. package/lib/module/components/FieldFlowMaskedInput/types.js +4 -0
  76. package/lib/module/components/FieldFlowMaskedInput/types.js.map +1 -0
  77. package/lib/module/components/FieldFlowOTP/FieldFlowOTP.js +250 -0
  78. package/lib/module/components/FieldFlowOTP/FieldFlowOTP.js.map +1 -0
  79. package/lib/module/components/FieldFlowOTP/index.js +4 -0
  80. package/lib/module/components/FieldFlowOTP/index.js.map +1 -0
  81. package/lib/module/components/FieldFlowOTP/types.js +4 -0
  82. package/lib/module/components/FieldFlowOTP/types.js.map +1 -0
  83. package/lib/module/components/FieldFlowRadio/FieldFlowRadio.js +159 -0
  84. package/lib/module/components/FieldFlowRadio/FieldFlowRadio.js.map +1 -0
  85. package/lib/module/components/FieldFlowRadio/index.js +4 -0
  86. package/lib/module/components/FieldFlowRadio/index.js.map +1 -0
  87. package/lib/module/components/FieldFlowSwitch/FieldFlowSwitch.js +147 -0
  88. package/lib/module/components/FieldFlowSwitch/FieldFlowSwitch.js.map +1 -0
  89. package/lib/module/components/FieldFlowSwitch/index.js +4 -0
  90. package/lib/module/components/FieldFlowSwitch/index.js.map +1 -0
  91. package/lib/module/hooks/index.js.map +1 -1
  92. package/lib/module/hooks/useFieldFlowForm.js +147 -32
  93. package/lib/module/hooks/useFieldFlowForm.js.map +1 -1
  94. package/lib/module/icons/Icon.js +720 -31
  95. package/lib/module/icons/Icon.js.map +1 -1
  96. package/lib/module/icons/index.js +1 -0
  97. package/lib/module/icons/index.js.map +1 -1
  98. package/lib/module/icons/renderIcon.js +19 -0
  99. package/lib/module/icons/renderIcon.js.map +1 -0
  100. package/lib/module/index.js +11 -3
  101. package/lib/module/index.js.map +1 -1
  102. package/lib/module/utils/masks.js +118 -0
  103. package/lib/module/utils/masks.js.map +1 -0
  104. package/lib/module/validation/index.js +1 -0
  105. package/lib/module/validation/index.js.map +1 -1
  106. package/lib/module/validation/zodAdapter.js +84 -0
  107. package/lib/module/validation/zodAdapter.js.map +1 -0
  108. package/lib/typescript/components/FieldFlowCheckbox/FieldFlowCheckbox.d.ts +36 -0
  109. package/lib/typescript/components/FieldFlowCheckbox/FieldFlowCheckbox.d.ts.map +1 -0
  110. package/lib/typescript/components/FieldFlowCheckbox/index.d.ts +3 -0
  111. package/lib/typescript/components/FieldFlowCheckbox/index.d.ts.map +1 -0
  112. package/lib/typescript/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.d.ts +4 -0
  113. package/lib/typescript/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.d.ts.map +1 -0
  114. package/lib/typescript/components/FieldFlowDateTimePicker/index.d.ts +3 -0
  115. package/lib/typescript/components/FieldFlowDateTimePicker/index.d.ts.map +1 -0
  116. package/lib/typescript/components/FieldFlowDateTimePicker/types.d.ts +55 -0
  117. package/lib/typescript/components/FieldFlowDateTimePicker/types.d.ts.map +1 -0
  118. package/lib/typescript/components/FieldFlowDropdown/FieldFlowDropdown.d.ts.map +1 -1
  119. package/lib/typescript/components/FieldFlowDropdown/types.d.ts +7 -1
  120. package/lib/typescript/components/FieldFlowDropdown/types.d.ts.map +1 -1
  121. package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -1
  122. package/lib/typescript/components/FieldFlowInput/styles.d.ts +19 -2
  123. package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -1
  124. package/lib/typescript/components/FieldFlowInput/types.d.ts +24 -5
  125. package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -1
  126. package/lib/typescript/components/FieldFlowMaskedInput/FieldFlowMaskedInput.d.ts +5 -0
  127. package/lib/typescript/components/FieldFlowMaskedInput/FieldFlowMaskedInput.d.ts.map +1 -0
  128. package/lib/typescript/components/FieldFlowMaskedInput/index.d.ts +3 -0
  129. package/lib/typescript/components/FieldFlowMaskedInput/index.d.ts.map +1 -0
  130. package/lib/typescript/components/FieldFlowMaskedInput/types.d.ts +20 -0
  131. package/lib/typescript/components/FieldFlowMaskedInput/types.d.ts.map +1 -0
  132. package/lib/typescript/components/FieldFlowOTP/FieldFlowOTP.d.ts +4 -0
  133. package/lib/typescript/components/FieldFlowOTP/FieldFlowOTP.d.ts.map +1 -0
  134. package/lib/typescript/components/FieldFlowOTP/index.d.ts +3 -0
  135. package/lib/typescript/components/FieldFlowOTP/index.d.ts.map +1 -0
  136. package/lib/typescript/components/FieldFlowOTP/types.d.ts +52 -0
  137. package/lib/typescript/components/FieldFlowOTP/types.d.ts.map +1 -0
  138. package/lib/typescript/components/FieldFlowRadio/FieldFlowRadio.d.ts +39 -0
  139. package/lib/typescript/components/FieldFlowRadio/FieldFlowRadio.d.ts.map +1 -0
  140. package/lib/typescript/components/FieldFlowRadio/index.d.ts +3 -0
  141. package/lib/typescript/components/FieldFlowRadio/index.d.ts.map +1 -0
  142. package/lib/typescript/components/FieldFlowSwitch/FieldFlowSwitch.d.ts +31 -0
  143. package/lib/typescript/components/FieldFlowSwitch/FieldFlowSwitch.d.ts.map +1 -0
  144. package/lib/typescript/components/FieldFlowSwitch/index.d.ts +3 -0
  145. package/lib/typescript/components/FieldFlowSwitch/index.d.ts.map +1 -0
  146. package/lib/typescript/hooks/index.d.ts +1 -1
  147. package/lib/typescript/hooks/index.d.ts.map +1 -1
  148. package/lib/typescript/hooks/useFieldFlowForm.d.ts +46 -7
  149. package/lib/typescript/hooks/useFieldFlowForm.d.ts.map +1 -1
  150. package/lib/typescript/icons/Icon.d.ts +2 -2
  151. package/lib/typescript/icons/Icon.d.ts.map +1 -1
  152. package/lib/typescript/icons/index.d.ts +2 -0
  153. package/lib/typescript/icons/index.d.ts.map +1 -1
  154. package/lib/typescript/icons/renderIcon.d.ts +6 -0
  155. package/lib/typescript/icons/renderIcon.d.ts.map +1 -0
  156. package/lib/typescript/index.d.ts +20 -6
  157. package/lib/typescript/index.d.ts.map +1 -1
  158. package/lib/typescript/types/index.d.ts +4 -0
  159. package/lib/typescript/types/index.d.ts.map +1 -1
  160. package/lib/typescript/utils/masks.d.ts +37 -0
  161. package/lib/typescript/utils/masks.d.ts.map +1 -0
  162. package/lib/typescript/validation/index.d.ts +2 -0
  163. package/lib/typescript/validation/index.d.ts.map +1 -1
  164. package/lib/typescript/validation/zodAdapter.d.ts +53 -0
  165. package/lib/typescript/validation/zodAdapter.d.ts.map +1 -0
  166. package/package.json +17 -3
  167. package/src/components/FieldFlowCheckbox/FieldFlowCheckbox.tsx +174 -0
  168. package/src/components/FieldFlowCheckbox/index.ts +2 -0
  169. package/src/components/FieldFlowDateTimePicker/FieldFlowDateTimePicker.tsx +585 -0
  170. package/src/components/FieldFlowDateTimePicker/index.ts +2 -0
  171. package/src/components/FieldFlowDateTimePicker/types.ts +57 -0
  172. package/src/components/FieldFlowDropdown/FieldFlowDropdown.tsx +17 -7
  173. package/src/components/FieldFlowDropdown/types.ts +8 -1
  174. package/src/components/FieldFlowInput/FieldFlowInput.tsx +69 -26
  175. package/src/components/FieldFlowInput/styles.ts +41 -6
  176. package/src/components/FieldFlowInput/types.ts +24 -5
  177. package/src/components/FieldFlowMaskedInput/FieldFlowMaskedInput.tsx +76 -0
  178. package/src/components/FieldFlowMaskedInput/index.ts +2 -0
  179. package/src/components/FieldFlowMaskedInput/types.ts +22 -0
  180. package/src/components/FieldFlowOTP/FieldFlowOTP.tsx +305 -0
  181. package/src/components/FieldFlowOTP/index.ts +2 -0
  182. package/src/components/FieldFlowOTP/types.ts +57 -0
  183. package/src/components/FieldFlowRadio/FieldFlowRadio.tsx +215 -0
  184. package/src/components/FieldFlowRadio/index.ts +2 -0
  185. package/src/components/FieldFlowSwitch/FieldFlowSwitch.tsx +172 -0
  186. package/src/components/FieldFlowSwitch/index.ts +2 -0
  187. package/src/hooks/index.ts +3 -0
  188. package/src/hooks/useFieldFlowForm.ts +209 -33
  189. package/src/icons/Icon.tsx +451 -5
  190. package/src/icons/index.ts +2 -0
  191. package/src/icons/renderIcon.tsx +17 -0
  192. package/src/index.ts +47 -4
  193. package/src/types/index.ts +5 -0
  194. package/src/utils/masks.ts +137 -0
  195. package/src/validation/index.ts +7 -0
  196. package/src/validation/zodAdapter.ts +103 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","useCallback","useMemo","useState","FieldFlowInput","applyMask","jsx","_jsx","keyboardForMask","mask","DEFAULT_MASK_ICONS","phone","card","currency","date","custom","FieldFlowMaskedInput","maskOptions","value","defaultValue","onChangeText","valueMode","leftIcon","rest","ref","isControlled","undefined","internal","setInternal","formatted","displayValue","source","handleChange","rawInput","result","primary","raw","type","keyboardType","autoCapitalize","autoCorrect"],"sourceRoot":"../../../../src","sources":["components/FieldFlowMaskedInput/FieldFlowMaskedInput.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAEzE,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,SAAS,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI9C,SAASC,eAAeA,CAACC,IAAuC,EAAE;EAChE,QAAQA,IAAI;IACV,KAAK,UAAU;MACb,OAAO,aAAa;IACtB,KAAK,OAAO;MACV,OAAO,WAAW;IACpB;MACE,OAAO,YAAY;EACvB;AACF;AAEA,MAAMC,kBAAkF,GAAG;EACzFC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,YAAY;EAClBC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,UAAU;EAChBC,MAAM,EAAE;AACV,CAAC;AAED,OAAO,MAAMC,oBAAoB,gBAAGhB,UAAU,CAC5C,SAASgB,oBAAoBA,CAC3B;EACEP,IAAI;EACJQ,WAAW;EACXC,KAAK;EACLC,YAAY;EACZC,YAAY;EACZC,SAAS,GAAG,WAAW;EACvBC,QAAQ;EACR,GAAGC;AACL,CAAC,EACDC,GAAG,EACH;EACA,MAAMC,YAAY,GAAGP,KAAK,KAAKQ,SAAS;EACxC,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGzB,QAAQ,CAAC,MAAM;IAC7C,IAAIgB,YAAY,KAAKO,SAAS,EAAE,OAAO,EAAE;IACzC,OAAOrB,SAAS,CAACc,YAAY,EAAEV,IAAI,EAAEQ,WAAW,CAAC,CAACY,SAAS;EAC7D,CAAC,CAAC;EAEF,MAAMC,YAAY,GAAG5B,OAAO,CAAC,MAAM;IACjC,MAAM6B,MAAM,GAAGN,YAAY,GAAGP,KAAK,IAAI,EAAE,GAAGS,QAAQ;IACpD,OAAOtB,SAAS,CAAC0B,MAAM,EAAEtB,IAAI,EAAEQ,WAAW,CAAC,CAACY,SAAS;EACvD,CAAC,EAAE,CAACJ,YAAY,EAAEP,KAAK,EAAES,QAAQ,EAAElB,IAAI,EAAEQ,WAAW,CAAC,CAAC;EAEtD,MAAMe,YAAY,GAAG/B,WAAW,CAC7BgC,QAAgB,IAAK;IACpB,MAAMC,MAAM,GAAG7B,SAAS,CAAC4B,QAAQ,EAAExB,IAAI,EAAEQ,WAAW,CAAC;IACrD,IAAI,CAACQ,YAAY,EAAEG,WAAW,CAACM,MAAM,CAACL,SAAS,CAAC;IAChD,MAAMM,OAAO,GAAGd,SAAS,KAAK,KAAK,GAAGa,MAAM,CAACE,GAAG,GAAGF,MAAM,CAACL,SAAS;IACnET,YAAY,GAAGe,OAAO,EAAED,MAAM,CAACE,GAAG,CAAC;EACrC,CAAC,EACD,CAACX,YAAY,EAAEhB,IAAI,EAAEQ,WAAW,EAAEG,YAAY,EAAEC,SAAS,CAC3D,CAAC;EAED,oBACEd,IAAA,CAACH,cAAc;IACboB,GAAG,EAAEA,GAAI;IAAA,GACLD,IAAI;IACRc,IAAI,EAAC,MAAM;IACXnB,KAAK,EAAEY,YAAa;IACpBV,YAAY,EAAEY,YAAa;IAC3BM,YAAY,EAAE9B,eAAe,CAACC,IAAI,CAAE;IACpC8B,cAAc,EAAC,MAAM;IACrBC,WAAW,EAAE,KAAM;IACnBlB,QAAQ,EAAEA,QAAQ,KAAKI,SAAS,GAAGJ,QAAQ,GAAGZ,kBAAkB,CAACD,IAAI;EAAE,CACxE,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { FieldFlowMaskedInput } from './FieldFlowMaskedInput';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FieldFlowMaskedInput"],"sourceRoot":"../../../../src","sources":["components/FieldFlowMaskedInput/index.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,wBAAwB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/FieldFlowMaskedInput/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
4
+ import { Pressable, StyleSheet, Text, TextInput, View } from 'react-native';
5
+ import { useFieldFlowTheme, mergeDeep } from '../../theme/ThemeProvider';
6
+ import { defaultTheme } from '../../theme/defaultTheme';
7
+ import { useFieldState } from '../../hooks/useFieldState';
8
+ import { borderColorFor, labelColorFor } from '../FieldFlowInput/styles';
9
+ import { digitsOnly } from '../../utils/masks';
10
+ import { renderFieldFlowIcon } from '../../icons/renderIcon';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ export function FieldFlowOTP({
13
+ length = 6,
14
+ value,
15
+ onChangeText,
16
+ onComplete,
17
+ label,
18
+ helperText,
19
+ errorText,
20
+ hasError,
21
+ successText,
22
+ isSuccess,
23
+ disabled,
24
+ required,
25
+ secure = false,
26
+ autoFocus = true,
27
+ leftIcon = 'otp',
28
+ rightIcon,
29
+ iconSize = 18,
30
+ onLeftIconPress,
31
+ onRightIconPress,
32
+ cellGap,
33
+ cellSize,
34
+ containerStyle,
35
+ rowStyle,
36
+ cellStyle,
37
+ cellFocusedStyle,
38
+ cellTextStyle,
39
+ labelStyle,
40
+ helperStyle,
41
+ errorStyle,
42
+ theme: themeOverride,
43
+ testID,
44
+ renderCell
45
+ }) {
46
+ const contextTheme = useFieldFlowTheme();
47
+ const theme = useMemo(() => themeOverride ? mergeDeep(contextTheme ?? defaultTheme, themeOverride) : contextTheme ?? defaultTheme, [contextTheme, themeOverride]);
48
+ const isControlled = value !== undefined;
49
+ const [internal, setInternal] = useState('');
50
+ const code = (isControlled ? value ?? '' : internal).slice(0, length);
51
+ const digits = code.padEnd(length, ' ').split('').map(c => c === ' ' ? '' : c);
52
+ const [focusedIndex, setFocusedIndex] = useState(autoFocus ? 0 : null);
53
+ const refs = useRef([]);
54
+ const state = useFieldState({
55
+ isFocused: focusedIndex !== null,
56
+ hasError: Boolean(hasError || errorText),
57
+ isSuccess,
58
+ disabled
59
+ });
60
+ const styles = useMemo(() => createStyles(theme, state, cellGap ?? theme.spacing.gap, cellSize), [theme, state, cellGap, cellSize]);
61
+ const iconColor = state === 'focused' ? theme.colors.iconFocused : theme.colors.icon;
62
+ const commit = useCallback(next => {
63
+ const clipped = digitsOnly(next).slice(0, length);
64
+ if (!isControlled) setInternal(clipped);
65
+ onChangeText?.(clipped);
66
+ if (clipped.length === length) onComplete?.(clipped);
67
+ }, [isControlled, length, onChangeText, onComplete]);
68
+ const focusAt = useCallback(index => {
69
+ const clamped = Math.max(0, Math.min(length - 1, index));
70
+ refs.current[clamped]?.focus();
71
+ setFocusedIndex(clamped);
72
+ }, [length]);
73
+ const handleChangeAt = useCallback((index, text) => {
74
+ if (disabled) return;
75
+ const incoming = digitsOnly(text);
76
+ if (incoming.length > 1) {
77
+ commit(incoming);
78
+ focusAt(Math.min(incoming.length, length) - 1);
79
+ return;
80
+ }
81
+ const next = digits.slice();
82
+ next[index] = incoming.slice(-1);
83
+ commit(next.join(''));
84
+ if (incoming && index < length - 1) focusAt(index + 1);
85
+ }, [commit, digits, disabled, focusAt, length]);
86
+ const handleKeyPress = useCallback((index, e) => {
87
+ if (e.nativeEvent.key !== 'Backspace') return;
88
+ if (digits[index]) {
89
+ const next = digits.slice();
90
+ next[index] = '';
91
+ commit(next.join(''));
92
+ return;
93
+ }
94
+ if (index > 0) {
95
+ const next = digits.slice();
96
+ next[index - 1] = '';
97
+ commit(next.join(''));
98
+ focusAt(index - 1);
99
+ }
100
+ }, [commit, digits, focusAt]);
101
+ return /*#__PURE__*/_jsxs(View, {
102
+ style: [styles.wrapper, containerStyle],
103
+ testID: testID,
104
+ accessibilityLabel: label ?? 'One-time code',
105
+ children: [(label || leftIcon || rightIcon) && /*#__PURE__*/_jsxs(View, {
106
+ style: styles.labelRow,
107
+ children: [leftIcon ? /*#__PURE__*/_jsx(Pressable, {
108
+ onPress: onLeftIconPress,
109
+ disabled: !onLeftIconPress,
110
+ hitSlop: 8,
111
+ style: styles.labelIcon,
112
+ children: renderFieldFlowIcon(leftIcon, iconColor, iconSize)
113
+ }) : null, label ? /*#__PURE__*/_jsxs(Text, {
114
+ style: [styles.label, labelStyle],
115
+ children: [label, required ? ' *' : '']
116
+ }) : /*#__PURE__*/_jsx(View, {
117
+ style: {
118
+ flex: 1
119
+ }
120
+ }), rightIcon ? /*#__PURE__*/_jsx(Pressable, {
121
+ onPress: onRightIconPress,
122
+ disabled: !onRightIconPress,
123
+ hitSlop: 8,
124
+ style: styles.labelIcon,
125
+ children: renderFieldFlowIcon(rightIcon, iconColor, iconSize)
126
+ }) : null]
127
+ }), /*#__PURE__*/_jsx(View, {
128
+ style: [styles.row, rowStyle],
129
+ children: digits.map((digit, index) => {
130
+ const isFocused = focusedIndex === index;
131
+ if (renderCell) {
132
+ return /*#__PURE__*/_jsx(View, {
133
+ children: renderCell({
134
+ index,
135
+ digit,
136
+ isFocused,
137
+ onChangeText: text => handleChangeAt(index, text)
138
+ })
139
+ }, index);
140
+ }
141
+ return /*#__PURE__*/_jsx(Pressable, {
142
+ onPress: () => !disabled && focusAt(index),
143
+ style: [styles.cell, {
144
+ borderColor: borderColorFor(theme, isFocused ? 'focused' : state),
145
+ borderWidth: isFocused ? theme.spacing.borderWidthFocused : theme.spacing.borderWidth
146
+ }, cellStyle, isFocused ? cellFocusedStyle : null],
147
+ children: /*#__PURE__*/_jsx(TextInput, {
148
+ ref: r => {
149
+ refs.current[index] = r;
150
+ },
151
+ value: digit,
152
+ onChangeText: text => handleChangeAt(index, text),
153
+ onKeyPress: e => handleKeyPress(index, e),
154
+ onFocus: () => setFocusedIndex(index),
155
+ onBlur: () => setFocusedIndex(prev => prev === index ? null : prev),
156
+ editable: !disabled,
157
+ keyboardType: "number-pad",
158
+ textContentType: "oneTimeCode",
159
+ autoComplete: "sms-otp",
160
+ secureTextEntry: secure,
161
+ maxLength: length,
162
+ selectTextOnFocus: true,
163
+ autoFocus: autoFocus && index === 0,
164
+ style: [styles.cellInput, cellTextStyle],
165
+ caretHidden: true,
166
+ accessibilityLabel: `Digit ${index + 1} of ${length}`
167
+ })
168
+ }, index);
169
+ })
170
+ }), (helperText || errorText || successText) && /*#__PURE__*/_jsx(View, {
171
+ style: styles.footer,
172
+ children: errorText ? /*#__PURE__*/_jsx(Text, {
173
+ style: [styles.errorText, errorStyle, helperStyle],
174
+ children: errorText
175
+ }) : successText ? /*#__PURE__*/_jsx(Text, {
176
+ style: [styles.successText, helperStyle],
177
+ children: successText
178
+ }) : helperText ? /*#__PURE__*/_jsx(Text, {
179
+ style: [styles.helperText, helperStyle],
180
+ children: helperText
181
+ }) : null
182
+ })]
183
+ });
184
+ }
185
+ function createStyles(theme, state, gap, cellSize) {
186
+ return StyleSheet.create({
187
+ wrapper: {
188
+ marginBottom: theme.spacing.gap * 2
189
+ },
190
+ labelRow: {
191
+ flexDirection: 'row',
192
+ alignItems: 'center',
193
+ marginBottom: theme.spacing.gap / 1.5,
194
+ gap: theme.spacing.gap
195
+ },
196
+ labelIcon: {
197
+ alignItems: 'center',
198
+ justifyContent: 'center'
199
+ },
200
+ label: {
201
+ flex: 1,
202
+ fontSize: theme.typography.labelFontSize,
203
+ color: labelColorFor(theme, state),
204
+ fontWeight: '500',
205
+ fontFamily: theme.typography.fontFamily
206
+ },
207
+ row: {
208
+ flexDirection: 'row',
209
+ justifyContent: 'space-between',
210
+ gap
211
+ },
212
+ cell: {
213
+ flex: cellSize ? undefined : 1,
214
+ width: cellSize,
215
+ height: cellSize,
216
+ aspectRatio: cellSize ? undefined : 0.9,
217
+ maxWidth: cellSize ?? 56,
218
+ borderRadius: theme.spacing.borderRadius,
219
+ backgroundColor: state === 'disabled' ? theme.colors.backgroundDisabled : theme.colors.background,
220
+ alignItems: 'center',
221
+ justifyContent: 'center'
222
+ },
223
+ cellInput: {
224
+ width: '100%',
225
+ height: '100%',
226
+ textAlign: 'center',
227
+ fontSize: theme.typography.fontSize + 4,
228
+ fontWeight: '600',
229
+ color: theme.colors.text,
230
+ padding: 0,
231
+ fontFamily: theme.typography.fontFamily
232
+ },
233
+ footer: {
234
+ marginTop: theme.spacing.gap / 1.5
235
+ },
236
+ helperText: {
237
+ fontSize: theme.typography.helperFontSize,
238
+ color: theme.colors.label
239
+ },
240
+ errorText: {
241
+ fontSize: theme.typography.helperFontSize,
242
+ color: theme.colors.error
243
+ },
244
+ successText: {
245
+ fontSize: theme.typography.helperFontSize,
246
+ color: theme.colors.success
247
+ }
248
+ });
249
+ }
250
+ //# sourceMappingURL=FieldFlowOTP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useMemo","useRef","useState","Pressable","StyleSheet","Text","TextInput","View","useFieldFlowTheme","mergeDeep","defaultTheme","useFieldState","borderColorFor","labelColorFor","digitsOnly","renderFieldFlowIcon","jsx","_jsx","jsxs","_jsxs","FieldFlowOTP","length","value","onChangeText","onComplete","label","helperText","errorText","hasError","successText","isSuccess","disabled","required","secure","autoFocus","leftIcon","rightIcon","iconSize","onLeftIconPress","onRightIconPress","cellGap","cellSize","containerStyle","rowStyle","cellStyle","cellFocusedStyle","cellTextStyle","labelStyle","helperStyle","errorStyle","theme","themeOverride","testID","renderCell","contextTheme","isControlled","undefined","internal","setInternal","code","slice","digits","padEnd","split","map","c","focusedIndex","setFocusedIndex","refs","state","isFocused","Boolean","styles","createStyles","spacing","gap","iconColor","colors","iconFocused","icon","commit","next","clipped","focusAt","index","clamped","Math","max","min","current","focus","handleChangeAt","text","incoming","join","handleKeyPress","e","nativeEvent","key","style","wrapper","accessibilityLabel","children","labelRow","onPress","hitSlop","labelIcon","flex","row","digit","cell","borderColor","borderWidth","borderWidthFocused","ref","r","onKeyPress","onFocus","onBlur","prev","editable","keyboardType","textContentType","autoComplete","secureTextEntry","maxLength","selectTextOnFocus","cellInput","caretHidden","footer","create","marginBottom","flexDirection","alignItems","justifyContent","fontSize","typography","labelFontSize","color","fontWeight","fontFamily","width","height","aspectRatio","maxWidth","borderRadius","backgroundColor","backgroundDisabled","background","textAlign","padding","marginTop","helperFontSize","error","success"],"sourceRoot":"../../../../src","sources":["components/FieldFlowOTP/FieldFlowOTP.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { FieldFlowOTP } from './FieldFlowOTP';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FieldFlowOTP"],"sourceRoot":"../../../../src","sources":["components/FieldFlowOTP/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gBAAgB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/FieldFlowOTP/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo } from 'react';
4
+ import { Pressable, StyleSheet, Text, View } from 'react-native';
5
+ import { useFieldFlowTheme, mergeDeep } from '../../theme/ThemeProvider';
6
+ import { defaultTheme } from '../../theme/defaultTheme';
7
+ import { renderFieldFlowIcon } from '../../icons';
8
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
9
+ export function FieldFlowRadio({
10
+ options,
11
+ value,
12
+ onChange,
13
+ label,
14
+ helperText,
15
+ errorText,
16
+ disabled,
17
+ required,
18
+ direction = 'vertical',
19
+ leftIcon,
20
+ selectedIcon = 'radioFilled',
21
+ unselectedIcon = 'radio',
22
+ iconSize = 20,
23
+ selectedColor,
24
+ containerStyle,
25
+ optionStyle,
26
+ labelStyle,
27
+ helperStyle,
28
+ errorStyle,
29
+ theme: themeOverride,
30
+ testID,
31
+ renderOption
32
+ }) {
33
+ const contextTheme = useFieldFlowTheme();
34
+ const theme = useMemo(() => themeOverride ? mergeDeep(contextTheme ?? defaultTheme, themeOverride) : contextTheme ?? defaultTheme, [contextTheme, themeOverride]);
35
+ const styles = useMemo(() => createStyles(theme, Boolean(errorText), Boolean(disabled), direction), [theme, errorText, disabled, direction]);
36
+ const active = selectedColor ?? theme.colors.borderFocused;
37
+ return /*#__PURE__*/_jsxs(View, {
38
+ style: [styles.wrapper, containerStyle],
39
+ testID: testID,
40
+ accessibilityRole: "radiogroup",
41
+ accessibilityLabel: label,
42
+ children: [(label || leftIcon) && /*#__PURE__*/_jsxs(View, {
43
+ style: styles.labelRow,
44
+ children: [leftIcon ? renderFieldFlowIcon(leftIcon, theme.colors.icon, 18) : null, label ? /*#__PURE__*/_jsxs(Text, {
45
+ style: [styles.groupLabel, labelStyle],
46
+ children: [label, required ? ' *' : '']
47
+ }) : null]
48
+ }), /*#__PURE__*/_jsx(View, {
49
+ style: styles.options,
50
+ children: options.map(option => {
51
+ const selected = value === option.value;
52
+ const itemDisabled = Boolean(disabled || option.disabled);
53
+ const onPress = () => onChange(option.value);
54
+ if (renderOption) {
55
+ return /*#__PURE__*/_jsx(View, {
56
+ children: renderOption({
57
+ option,
58
+ selected,
59
+ disabled: itemDisabled,
60
+ onPress
61
+ })
62
+ }, option.value);
63
+ }
64
+ return /*#__PURE__*/_jsxs(Pressable, {
65
+ onPress: () => !itemDisabled && onPress(),
66
+ disabled: itemDisabled,
67
+ style: [styles.optionRow, itemDisabled && styles.optionDisabled, optionStyle],
68
+ accessibilityRole: "radio",
69
+ accessibilityState: {
70
+ selected,
71
+ disabled: itemDisabled
72
+ },
73
+ accessibilityLabel: option.label,
74
+ hitSlop: 4,
75
+ children: [renderFieldFlowIcon(selected ? selectedIcon : unselectedIcon, selected ? active : errorText ? theme.colors.borderError : theme.colors.border, iconSize), option.icon ? /*#__PURE__*/_jsx(View, {
76
+ style: styles.optionIcon,
77
+ children: renderFieldFlowIcon(option.icon, theme.colors.icon, 18)
78
+ }) : null, /*#__PURE__*/_jsxs(View, {
79
+ style: styles.optionTextCol,
80
+ children: [/*#__PURE__*/_jsx(Text, {
81
+ style: styles.optionLabel,
82
+ children: option.label
83
+ }), option.description ? /*#__PURE__*/_jsx(Text, {
84
+ style: styles.optionDescription,
85
+ children: option.description
86
+ }) : null]
87
+ })]
88
+ }, option.value);
89
+ })
90
+ }), errorText ? /*#__PURE__*/_jsx(Text, {
91
+ style: [styles.errorText, errorStyle, helperStyle],
92
+ children: errorText
93
+ }) : helperText ? /*#__PURE__*/_jsx(Text, {
94
+ style: [styles.helperText, helperStyle],
95
+ children: helperText
96
+ }) : null]
97
+ });
98
+ }
99
+ function createStyles(theme, hasError, disabled, direction) {
100
+ return StyleSheet.create({
101
+ wrapper: {
102
+ marginBottom: theme.spacing.gap * 2,
103
+ opacity: disabled ? 0.6 : 1
104
+ },
105
+ labelRow: {
106
+ flexDirection: 'row',
107
+ alignItems: 'center',
108
+ gap: theme.spacing.gap,
109
+ marginBottom: theme.spacing.gap
110
+ },
111
+ groupLabel: {
112
+ fontSize: theme.typography.labelFontSize,
113
+ color: hasError ? theme.colors.error : theme.colors.label,
114
+ fontWeight: '500',
115
+ fontFamily: theme.typography.fontFamily
116
+ },
117
+ options: {
118
+ flexDirection: direction === 'horizontal' ? 'row' : 'column',
119
+ flexWrap: direction === 'horizontal' ? 'wrap' : 'nowrap',
120
+ gap: theme.spacing.gap * 1.5
121
+ },
122
+ optionRow: {
123
+ flexDirection: 'row',
124
+ alignItems: 'flex-start',
125
+ gap: theme.spacing.gap,
126
+ minWidth: direction === 'horizontal' ? '40%' : undefined
127
+ },
128
+ optionDisabled: {
129
+ opacity: 0.5
130
+ },
131
+ optionIcon: {
132
+ marginTop: 1
133
+ },
134
+ optionTextCol: {
135
+ flex: 1
136
+ },
137
+ optionLabel: {
138
+ fontSize: theme.typography.fontSize,
139
+ color: theme.colors.text,
140
+ fontFamily: theme.typography.fontFamily
141
+ },
142
+ optionDescription: {
143
+ fontSize: theme.typography.helperFontSize,
144
+ color: theme.colors.placeholder,
145
+ marginTop: 2
146
+ },
147
+ helperText: {
148
+ marginTop: theme.spacing.gap / 1.5,
149
+ fontSize: theme.typography.helperFontSize,
150
+ color: theme.colors.label
151
+ },
152
+ errorText: {
153
+ marginTop: theme.spacing.gap / 1.5,
154
+ fontSize: theme.typography.helperFontSize,
155
+ color: theme.colors.error
156
+ }
157
+ });
158
+ }
159
+ //# sourceMappingURL=FieldFlowRadio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","Pressable","StyleSheet","Text","View","useFieldFlowTheme","mergeDeep","defaultTheme","renderFieldFlowIcon","jsxs","_jsxs","jsx","_jsx","FieldFlowRadio","options","value","onChange","label","helperText","errorText","disabled","required","direction","leftIcon","selectedIcon","unselectedIcon","iconSize","selectedColor","containerStyle","optionStyle","labelStyle","helperStyle","errorStyle","theme","themeOverride","testID","renderOption","contextTheme","styles","createStyles","Boolean","active","colors","borderFocused","style","wrapper","accessibilityRole","accessibilityLabel","children","labelRow","icon","groupLabel","map","option","selected","itemDisabled","onPress","optionRow","optionDisabled","accessibilityState","hitSlop","borderError","border","optionIcon","optionTextCol","optionLabel","description","optionDescription","hasError","create","marginBottom","spacing","gap","opacity","flexDirection","alignItems","fontSize","typography","labelFontSize","color","error","fontWeight","fontFamily","flexWrap","minWidth","undefined","marginTop","flex","text","helperFontSize","placeholder"],"sourceRoot":"../../../../src","sources":["components/FieldFlowRadio/FieldFlowRadio.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { FieldFlowRadio } from './FieldFlowRadio';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FieldFlowRadio"],"sourceRoot":"../../../../src","sources":["components/FieldFlowRadio/index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,kBAAkB","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useMemo, useRef } from 'react';
4
+ import { Animated, Pressable, StyleSheet, Text, View } from 'react-native';
5
+ import { useFieldFlowTheme, mergeDeep } from '../../theme/ThemeProvider';
6
+ import { defaultTheme } from '../../theme/defaultTheme';
7
+ import { renderFieldFlowIcon } from '../../icons';
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export function FieldFlowSwitch({
10
+ value,
11
+ onChange,
12
+ label,
13
+ helperText,
14
+ errorText,
15
+ disabled,
16
+ required,
17
+ switchPosition = 'right',
18
+ leftIcon,
19
+ iconSize = 18,
20
+ onTrackColor,
21
+ offTrackColor,
22
+ thumbColor = '#FFFFFF',
23
+ trackStyle,
24
+ thumbStyle,
25
+ containerStyle,
26
+ labelStyle,
27
+ helperStyle,
28
+ errorStyle,
29
+ theme: themeOverride,
30
+ testID
31
+ }) {
32
+ const contextTheme = useFieldFlowTheme();
33
+ const theme = useMemo(() => themeOverride ? mergeDeep(contextTheme ?? defaultTheme, themeOverride) : contextTheme ?? defaultTheme, [contextTheme, themeOverride]);
34
+ const styles = useMemo(() => createStyles(theme, Boolean(disabled)), [theme, disabled]);
35
+ const anim = useRef(new Animated.Value(value ? 1 : 0)).current;
36
+ useEffect(() => {
37
+ Animated.timing(anim, {
38
+ toValue: value ? 1 : 0,
39
+ duration: theme.animation.duration,
40
+ useNativeDriver: false
41
+ }).start();
42
+ }, [anim, theme.animation.duration, value]);
43
+ const trackColor = anim.interpolate({
44
+ inputRange: [0, 1],
45
+ outputRange: [offTrackColor ?? theme.colors.border, onTrackColor ?? theme.colors.borderFocused]
46
+ });
47
+ const thumbTranslate = anim.interpolate({
48
+ inputRange: [0, 1],
49
+ outputRange: [2, 22]
50
+ });
51
+ const switchNode = /*#__PURE__*/_jsx(Animated.View, {
52
+ style: [styles.track, {
53
+ backgroundColor: trackColor
54
+ }, trackStyle],
55
+ children: /*#__PURE__*/_jsx(Animated.View, {
56
+ style: [styles.thumb, {
57
+ backgroundColor: thumbColor,
58
+ transform: [{
59
+ translateX: thumbTranslate
60
+ }]
61
+ }, thumbStyle]
62
+ })
63
+ });
64
+ const labelNode = label ? /*#__PURE__*/_jsxs(Text, {
65
+ style: [styles.label, labelStyle],
66
+ children: [label, required ? ' *' : '']
67
+ }) : null;
68
+ return /*#__PURE__*/_jsxs(View, {
69
+ style: [styles.wrapper, containerStyle],
70
+ testID: testID,
71
+ children: [/*#__PURE__*/_jsxs(Pressable, {
72
+ onPress: () => !disabled && onChange(!value),
73
+ disabled: disabled,
74
+ style: styles.row,
75
+ accessibilityRole: "switch",
76
+ accessibilityState: {
77
+ checked: value,
78
+ disabled: Boolean(disabled)
79
+ },
80
+ accessibilityLabel: label,
81
+ hitSlop: 6,
82
+ children: [leftIcon ? /*#__PURE__*/_jsx(View, {
83
+ style: styles.leftIcon,
84
+ children: renderFieldFlowIcon(leftIcon, theme.colors.icon, iconSize)
85
+ }) : null, switchPosition === 'left' ? switchNode : null, labelNode, switchPosition === 'right' ? switchNode : null]
86
+ }), errorText ? /*#__PURE__*/_jsx(Text, {
87
+ style: [styles.errorText, errorStyle, helperStyle],
88
+ children: errorText
89
+ }) : helperText ? /*#__PURE__*/_jsx(Text, {
90
+ style: [styles.helperText, helperStyle],
91
+ children: helperText
92
+ }) : null]
93
+ });
94
+ }
95
+ function createStyles(theme, disabled) {
96
+ return StyleSheet.create({
97
+ wrapper: {
98
+ marginBottom: theme.spacing.gap * 2,
99
+ opacity: disabled ? 0.6 : 1
100
+ },
101
+ row: {
102
+ flexDirection: 'row',
103
+ alignItems: 'center',
104
+ justifyContent: 'space-between',
105
+ gap: theme.spacing.gap
106
+ },
107
+ leftIcon: {
108
+ marginRight: 2
109
+ },
110
+ label: {
111
+ flex: 1,
112
+ fontSize: theme.typography.fontSize,
113
+ color: theme.colors.text,
114
+ fontFamily: theme.typography.fontFamily
115
+ },
116
+ track: {
117
+ width: 44,
118
+ height: 26,
119
+ borderRadius: 13,
120
+ justifyContent: 'center'
121
+ },
122
+ thumb: {
123
+ width: 20,
124
+ height: 20,
125
+ borderRadius: 10,
126
+ shadowColor: '#000',
127
+ shadowOpacity: 0.15,
128
+ shadowRadius: 2,
129
+ shadowOffset: {
130
+ width: 0,
131
+ height: 1
132
+ },
133
+ elevation: 2
134
+ },
135
+ helperText: {
136
+ marginTop: theme.spacing.gap / 1.5,
137
+ fontSize: theme.typography.helperFontSize,
138
+ color: theme.colors.label
139
+ },
140
+ errorText: {
141
+ marginTop: theme.spacing.gap / 1.5,
142
+ fontSize: theme.typography.helperFontSize,
143
+ color: theme.colors.error
144
+ }
145
+ });
146
+ }
147
+ //# sourceMappingURL=FieldFlowSwitch.js.map