@chem-po/react-native 0.0.5 → 0.0.7

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 (561) hide show
  1. package/lib/commonjs/components/box/Center.js +35 -0
  2. package/lib/commonjs/components/box/Center.js.map +1 -0
  3. package/lib/commonjs/components/box/CollapseHorizontal.js +44 -0
  4. package/lib/commonjs/components/box/CollapseHorizontal.js.map +1 -0
  5. package/lib/commonjs/components/box/ContentBox.js +32 -0
  6. package/lib/commonjs/components/box/ContentBox.js.map +1 -0
  7. package/lib/commonjs/components/box/DropShadow.js +31 -0
  8. package/lib/commonjs/components/box/DropShadow.js.map +1 -0
  9. package/lib/commonjs/components/box/ExpandOnMount.js +71 -0
  10. package/lib/commonjs/components/box/ExpandOnMount.js.map +1 -0
  11. package/lib/commonjs/components/box/Expandable.js +125 -0
  12. package/lib/commonjs/components/box/Expandable.js.map +1 -0
  13. package/lib/commonjs/components/box/FullSizeContainer.js +79 -0
  14. package/lib/commonjs/components/box/FullSizeContainer.js.map +1 -0
  15. package/lib/commonjs/components/box/index.js +83 -0
  16. package/lib/commonjs/components/box/index.js.map +1 -0
  17. package/lib/commonjs/components/button/DeleteButton.js +279 -0
  18. package/lib/commonjs/components/button/DeleteButton.js.map +1 -0
  19. package/lib/commonjs/components/button/LoadingButton.js +132 -0
  20. package/lib/commonjs/components/button/LoadingButton.js.map +1 -0
  21. package/lib/commonjs/components/button/Toggle.js +89 -0
  22. package/lib/commonjs/components/button/Toggle.js.map +1 -0
  23. package/lib/commonjs/components/button/index.js +39 -0
  24. package/lib/commonjs/components/button/index.js.map +1 -0
  25. package/lib/commonjs/components/feed/FeedContentPane.js +105 -0
  26. package/lib/commonjs/components/feed/FeedContentPane.js.map +1 -0
  27. package/lib/commonjs/components/feed/MediaFeed.js +178 -0
  28. package/lib/commonjs/components/feed/MediaFeed.js.map +1 -0
  29. package/lib/commonjs/components/feed/MediaFeedBackground.js +126 -0
  30. package/lib/commonjs/components/feed/MediaFeedBackground.js.map +1 -0
  31. package/lib/commonjs/components/feed/MediaFeedRefresh.js +113 -0
  32. package/lib/commonjs/components/feed/MediaFeedRefresh.js.map +1 -0
  33. package/lib/commonjs/components/feed/constants.js +9 -0
  34. package/lib/commonjs/components/feed/constants.js.map +1 -0
  35. package/lib/commonjs/components/feed/context.js +23 -0
  36. package/lib/commonjs/components/feed/context.js.map +1 -0
  37. package/lib/commonjs/components/feed/hooks.js +262 -0
  38. package/lib/commonjs/components/feed/hooks.js.map +1 -0
  39. package/lib/commonjs/components/feed/index.js +28 -0
  40. package/lib/commonjs/components/feed/index.js.map +1 -0
  41. package/lib/commonjs/components/form/Condition.js +29 -0
  42. package/lib/commonjs/components/form/Condition.js.map +1 -0
  43. package/lib/commonjs/components/form/Field.js +57 -0
  44. package/lib/commonjs/components/form/Field.js.map +1 -0
  45. package/lib/commonjs/components/form/Form.js +387 -0
  46. package/lib/commonjs/components/form/Form.js.map +1 -0
  47. package/lib/commonjs/components/form/FormFooter.js +173 -0
  48. package/lib/commonjs/components/form/FormFooter.js.map +1 -0
  49. package/lib/commonjs/components/form/UploadProgress/index.js +66 -0
  50. package/lib/commonjs/components/form/UploadProgress/index.js.map +1 -0
  51. package/lib/commonjs/components/form/index.js +40 -0
  52. package/lib/commonjs/components/form/index.js.map +1 -0
  53. package/lib/commonjs/components/form/input/Editable.js +153 -0
  54. package/lib/commonjs/components/form/input/Editable.js.map +1 -0
  55. package/lib/commonjs/components/form/input/InputSlider.js +59 -0
  56. package/lib/commonjs/components/form/input/InputSlider.js.map +1 -0
  57. package/lib/commonjs/components/form/input/OptionalTag.js +46 -0
  58. package/lib/commonjs/components/form/input/OptionalTag.js.map +1 -0
  59. package/lib/commonjs/components/form/input/StandaloneInput.js +33 -0
  60. package/lib/commonjs/components/form/input/StandaloneInput.js.map +1 -0
  61. package/lib/commonjs/components/form/input/boolean/index.js +83 -0
  62. package/lib/commonjs/components/form/input/boolean/index.js.map +1 -0
  63. package/lib/commonjs/components/form/input/color/index.js +147 -0
  64. package/lib/commonjs/components/form/input/color/index.js.map +1 -0
  65. package/lib/commonjs/components/form/input/common/InputClearButton.js +63 -0
  66. package/lib/commonjs/components/form/input/common/InputClearButton.js.map +1 -0
  67. package/lib/commonjs/components/form/input/date/index.js +111 -0
  68. package/lib/commonjs/components/form/input/date/index.js.map +1 -0
  69. package/lib/commonjs/components/form/input/datetime/index.js +155 -0
  70. package/lib/commonjs/components/form/input/datetime/index.js.map +1 -0
  71. package/lib/commonjs/components/form/input/file/index.js +229 -0
  72. package/lib/commonjs/components/form/input/file/index.js.map +1 -0
  73. package/lib/commonjs/components/form/input/hooks/index.js +28 -0
  74. package/lib/commonjs/components/form/input/hooks/index.js.map +1 -0
  75. package/lib/commonjs/components/form/input/hooks/useInputColor.js +14 -0
  76. package/lib/commonjs/components/form/input/hooks/useInputColor.js.map +1 -0
  77. package/lib/commonjs/components/form/input/hooks/useInputImperativeHandle.js +23 -0
  78. package/lib/commonjs/components/form/input/hooks/useInputImperativeHandle.js.map +1 -0
  79. package/lib/commonjs/components/form/input/hooks/useInputStyle.js +50 -0
  80. package/lib/commonjs/components/form/input/hooks/useInputStyle.js.map +1 -0
  81. package/lib/commonjs/components/form/input/index.js +28 -0
  82. package/lib/commonjs/components/form/input/index.js.map +1 -0
  83. package/lib/commonjs/components/form/input/input.js +159 -0
  84. package/lib/commonjs/components/form/input/input.js.map +1 -0
  85. package/lib/commonjs/components/form/input/multipleSelect/index.js +80 -0
  86. package/lib/commonjs/components/form/input/multipleSelect/index.js.map +1 -0
  87. package/lib/commonjs/components/form/input/number/index.js +117 -0
  88. package/lib/commonjs/components/form/input/number/index.js.map +1 -0
  89. package/lib/commonjs/components/form/input/select/index.js +225 -0
  90. package/lib/commonjs/components/form/input/select/index.js.map +1 -0
  91. package/lib/commonjs/components/form/input/socialMedia/index.js +219 -0
  92. package/lib/commonjs/components/form/input/socialMedia/index.js.map +1 -0
  93. package/lib/commonjs/components/form/input/text/index.js +97 -0
  94. package/lib/commonjs/components/form/input/text/index.js.map +1 -0
  95. package/lib/commonjs/components/form/input/text/textarea.js +63 -0
  96. package/lib/commonjs/components/form/input/text/textarea.js.map +1 -0
  97. package/lib/commonjs/components/form/input/time/index.js +125 -0
  98. package/lib/commonjs/components/form/input/time/index.js.map +1 -0
  99. package/lib/commonjs/components/form/types.js +6 -0
  100. package/lib/commonjs/components/form/types.js.map +1 -0
  101. package/lib/commonjs/components/form/view/file.js +57 -0
  102. package/lib/commonjs/components/form/view/file.js.map +1 -0
  103. package/lib/commonjs/components/form/view/index.js +90 -0
  104. package/lib/commonjs/components/form/view/index.js.map +1 -0
  105. package/lib/commonjs/components/form/view/multipleSelect.js +51 -0
  106. package/lib/commonjs/components/form/view/multipleSelect.js.map +1 -0
  107. package/lib/commonjs/components/form/view/select.js +45 -0
  108. package/lib/commonjs/components/form/view/select.js.map +1 -0
  109. package/lib/commonjs/components/icons/index.js +47 -0
  110. package/lib/commonjs/components/icons/index.js.map +1 -0
  111. package/lib/commonjs/components/index.js +94 -0
  112. package/lib/commonjs/components/index.js.map +1 -0
  113. package/lib/commonjs/components/loading/CircularProgress.js +49 -0
  114. package/lib/commonjs/components/loading/CircularProgress.js.map +1 -0
  115. package/lib/commonjs/components/loading/Loading.js +174 -0
  116. package/lib/commonjs/components/loading/Loading.js.map +1 -0
  117. package/lib/commonjs/components/loading/LoadingImage.js +115 -0
  118. package/lib/commonjs/components/loading/LoadingImage.js.map +1 -0
  119. package/lib/commonjs/components/loading/LoadingSwitch.js +100 -0
  120. package/lib/commonjs/components/loading/LoadingSwitch.js.map +1 -0
  121. package/lib/commonjs/components/loading/index.js +50 -0
  122. package/lib/commonjs/components/loading/index.js.map +1 -0
  123. package/lib/commonjs/components/overlay/ImageViewOverlay.js +126 -0
  124. package/lib/commonjs/components/overlay/ImageViewOverlay.js.map +1 -0
  125. package/lib/commonjs/components/overlay/index.js +17 -0
  126. package/lib/commonjs/components/overlay/index.js.map +1 -0
  127. package/lib/commonjs/components/text/AnimatedText.js +63 -0
  128. package/lib/commonjs/components/text/AnimatedText.js.map +1 -0
  129. package/lib/commonjs/components/text/Txt.js +22 -0
  130. package/lib/commonjs/components/text/Txt.js.map +1 -0
  131. package/lib/commonjs/components/text/index.js +17 -0
  132. package/lib/commonjs/components/text/index.js.map +1 -0
  133. package/lib/commonjs/components/theme/colorMode/DarkModeToggle.js +49 -0
  134. package/lib/commonjs/components/theme/colorMode/DarkModeToggle.js.map +1 -0
  135. package/lib/commonjs/components/theme/colorMode/index.js +17 -0
  136. package/lib/commonjs/components/theme/colorMode/index.js.map +1 -0
  137. package/lib/commonjs/components/theme/index.js +17 -0
  138. package/lib/commonjs/components/theme/index.js.map +1 -0
  139. package/lib/commonjs/constants/index.js +17 -0
  140. package/lib/commonjs/constants/index.js.map +1 -0
  141. package/lib/commonjs/constants/toast.js +31 -0
  142. package/lib/commonjs/constants/toast.js.map +1 -0
  143. package/lib/commonjs/contexts/index.js +17 -0
  144. package/lib/commonjs/contexts/index.js.map +1 -0
  145. package/lib/commonjs/contexts/root.js +33 -0
  146. package/lib/commonjs/contexts/root.js.map +1 -0
  147. package/lib/commonjs/hooks/index.js +17 -0
  148. package/lib/commonjs/hooks/index.js.map +1 -0
  149. package/lib/commonjs/hooks/useThemeState.js +21 -0
  150. package/lib/commonjs/hooks/useThemeState.js.map +1 -0
  151. package/lib/commonjs/index.js +61 -0
  152. package/lib/commonjs/index.js.map +1 -0
  153. package/lib/commonjs/store/index.js +17 -0
  154. package/lib/commonjs/store/index.js.map +1 -0
  155. package/lib/commonjs/store/useScreen.js +36 -0
  156. package/lib/commonjs/store/useScreen.js.map +1 -0
  157. package/lib/commonjs/styles/fill.js +25 -0
  158. package/lib/commonjs/styles/fill.js.map +1 -0
  159. package/lib/module/components/box/Center.js +29 -0
  160. package/lib/module/components/box/Center.js.map +1 -0
  161. package/lib/module/components/box/CollapseHorizontal.js +37 -0
  162. package/lib/module/components/box/CollapseHorizontal.js.map +1 -0
  163. package/lib/module/components/box/ContentBox.js +26 -0
  164. package/lib/module/components/box/ContentBox.js.map +1 -0
  165. package/lib/module/components/box/DropShadow.js +25 -0
  166. package/lib/module/components/box/DropShadow.js.map +1 -0
  167. package/lib/module/components/box/ExpandOnMount.js +64 -0
  168. package/lib/module/components/box/ExpandOnMount.js.map +1 -0
  169. package/lib/module/components/box/Expandable.js +117 -0
  170. package/lib/module/components/box/Expandable.js.map +1 -0
  171. package/lib/module/components/box/FullSizeContainer.js +70 -0
  172. package/lib/module/components/box/FullSizeContainer.js.map +1 -0
  173. package/lib/module/components/box/index.js +8 -0
  174. package/lib/module/components/box/index.js.map +1 -0
  175. package/lib/module/components/button/DeleteButton.js +270 -0
  176. package/lib/module/components/button/DeleteButton.js.map +1 -0
  177. package/lib/module/components/button/LoadingButton.js +124 -0
  178. package/lib/module/components/button/LoadingButton.js.map +1 -0
  179. package/lib/module/components/button/Toggle.js +82 -0
  180. package/lib/module/components/button/Toggle.js.map +1 -0
  181. package/lib/module/components/button/index.js +4 -0
  182. package/lib/module/components/button/index.js.map +1 -0
  183. package/lib/module/components/feed/FeedContentPane.js +97 -0
  184. package/lib/module/components/feed/FeedContentPane.js.map +1 -0
  185. package/lib/module/components/feed/MediaFeed.js +170 -0
  186. package/lib/module/components/feed/MediaFeed.js.map +1 -0
  187. package/lib/module/components/feed/MediaFeedBackground.js +118 -0
  188. package/lib/module/components/feed/MediaFeedBackground.js.map +1 -0
  189. package/lib/module/components/feed/MediaFeedRefresh.js +103 -0
  190. package/lib/module/components/feed/MediaFeedRefresh.js.map +1 -0
  191. package/lib/module/components/feed/constants.js +3 -0
  192. package/lib/module/components/feed/constants.js.map +1 -0
  193. package/lib/module/components/feed/context.js +15 -0
  194. package/lib/module/components/feed/context.js.map +1 -0
  195. package/lib/module/components/feed/hooks.js +255 -0
  196. package/lib/module/components/feed/hooks.js.map +1 -0
  197. package/lib/module/components/feed/index.js +3 -0
  198. package/lib/module/components/feed/index.js.map +1 -0
  199. package/lib/module/components/form/Condition.js +22 -0
  200. package/lib/module/components/form/Condition.js.map +1 -0
  201. package/lib/module/components/form/Field.js +51 -0
  202. package/lib/module/components/form/Field.js.map +1 -0
  203. package/lib/module/components/form/Form.js +375 -0
  204. package/lib/module/components/form/Form.js.map +1 -0
  205. package/lib/module/components/form/FormFooter.js +165 -0
  206. package/lib/module/components/form/FormFooter.js.map +1 -0
  207. package/lib/module/components/form/UploadProgress/index.js +59 -0
  208. package/lib/module/components/form/UploadProgress/index.js.map +1 -0
  209. package/lib/module/components/form/index.js +4 -0
  210. package/lib/module/components/form/index.js.map +1 -0
  211. package/lib/module/components/form/input/Editable.js +146 -0
  212. package/lib/module/components/form/input/Editable.js.map +1 -0
  213. package/lib/module/components/form/input/InputSlider.js +51 -0
  214. package/lib/module/components/form/input/InputSlider.js.map +1 -0
  215. package/lib/module/components/form/input/OptionalTag.js +39 -0
  216. package/lib/module/components/form/input/OptionalTag.js.map +1 -0
  217. package/lib/module/components/form/input/StandaloneInput.js +27 -0
  218. package/lib/module/components/form/input/StandaloneInput.js.map +1 -0
  219. package/lib/module/components/form/input/boolean/index.js +77 -0
  220. package/lib/module/components/form/input/boolean/index.js.map +1 -0
  221. package/lib/module/components/form/input/color/index.js +141 -0
  222. package/lib/module/components/form/input/color/index.js.map +1 -0
  223. package/lib/module/components/form/input/common/InputClearButton.js +55 -0
  224. package/lib/module/components/form/input/common/InputClearButton.js.map +1 -0
  225. package/lib/module/components/form/input/date/index.js +106 -0
  226. package/lib/module/components/form/input/date/index.js.map +1 -0
  227. package/lib/module/components/form/input/datetime/index.js +149 -0
  228. package/lib/module/components/form/input/datetime/index.js.map +1 -0
  229. package/lib/module/components/form/input/file/index.js +221 -0
  230. package/lib/module/components/form/input/file/index.js.map +1 -0
  231. package/lib/module/components/form/input/hooks/index.js +3 -0
  232. package/lib/module/components/form/input/hooks/index.js.map +1 -0
  233. package/lib/module/components/form/input/hooks/useInputColor.js +7 -0
  234. package/lib/module/components/form/input/hooks/useInputColor.js.map +1 -0
  235. package/lib/module/components/form/input/hooks/useInputImperativeHandle.js +16 -0
  236. package/lib/module/components/form/input/hooks/useInputImperativeHandle.js.map +1 -0
  237. package/lib/module/components/form/input/hooks/useInputStyle.js +43 -0
  238. package/lib/module/components/form/input/hooks/useInputStyle.js.map +1 -0
  239. package/lib/module/components/form/input/index.js +3 -0
  240. package/lib/module/components/form/input/index.js.map +1 -0
  241. package/lib/module/components/form/input/input.js +153 -0
  242. package/lib/module/components/form/input/input.js.map +1 -0
  243. package/lib/module/components/form/input/multipleSelect/index.js +74 -0
  244. package/lib/module/components/form/input/multipleSelect/index.js.map +1 -0
  245. package/lib/module/components/form/input/number/index.js +111 -0
  246. package/lib/module/components/form/input/number/index.js.map +1 -0
  247. package/lib/module/components/form/input/select/index.js +219 -0
  248. package/lib/module/components/form/input/select/index.js.map +1 -0
  249. package/lib/module/components/form/input/socialMedia/index.js +213 -0
  250. package/lib/module/components/form/input/socialMedia/index.js.map +1 -0
  251. package/lib/module/components/form/input/text/index.js +91 -0
  252. package/lib/module/components/form/input/text/index.js.map +1 -0
  253. package/lib/module/components/form/input/text/textarea.js +57 -0
  254. package/lib/module/components/form/input/text/textarea.js.map +1 -0
  255. package/lib/module/components/form/input/time/index.js +119 -0
  256. package/lib/module/components/form/input/time/index.js.map +1 -0
  257. package/lib/module/components/form/types.js +2 -0
  258. package/lib/module/components/form/types.js.map +1 -0
  259. package/lib/module/components/form/view/file.js +50 -0
  260. package/lib/module/components/form/view/file.js.map +1 -0
  261. package/lib/module/components/form/view/index.js +83 -0
  262. package/lib/module/components/form/view/index.js.map +1 -0
  263. package/lib/module/components/form/view/multipleSelect.js +44 -0
  264. package/lib/module/components/form/view/multipleSelect.js.map +1 -0
  265. package/lib/module/components/form/view/select.js +38 -0
  266. package/lib/module/components/form/view/select.js.map +1 -0
  267. package/lib/module/components/icons/index.js +38 -0
  268. package/lib/module/components/icons/index.js.map +1 -0
  269. package/lib/module/components/index.js +9 -0
  270. package/lib/module/components/index.js.map +1 -0
  271. package/lib/module/components/loading/CircularProgress.js +42 -0
  272. package/lib/module/components/loading/CircularProgress.js.map +1 -0
  273. package/lib/module/components/loading/Loading.js +163 -0
  274. package/lib/module/components/loading/Loading.js.map +1 -0
  275. package/lib/module/components/loading/LoadingImage.js +108 -0
  276. package/lib/module/components/loading/LoadingImage.js.map +1 -0
  277. package/lib/module/components/loading/LoadingSwitch.js +93 -0
  278. package/lib/module/components/loading/LoadingSwitch.js.map +1 -0
  279. package/lib/module/components/loading/index.js +5 -0
  280. package/lib/module/components/loading/index.js.map +1 -0
  281. package/lib/module/components/overlay/ImageViewOverlay.js +119 -0
  282. package/lib/module/components/overlay/ImageViewOverlay.js.map +1 -0
  283. package/lib/module/components/overlay/index.js +2 -0
  284. package/lib/module/components/overlay/index.js.map +1 -0
  285. package/lib/module/components/text/AnimatedText.js +56 -0
  286. package/lib/module/components/text/AnimatedText.js.map +1 -0
  287. package/lib/module/components/text/Txt.js +15 -0
  288. package/lib/module/components/text/Txt.js.map +1 -0
  289. package/lib/module/components/text/index.js +2 -0
  290. package/lib/module/components/text/index.js.map +1 -0
  291. package/lib/module/components/theme/colorMode/DarkModeToggle.js +41 -0
  292. package/lib/module/components/theme/colorMode/DarkModeToggle.js.map +1 -0
  293. package/lib/module/components/theme/colorMode/index.js +2 -0
  294. package/lib/module/components/theme/colorMode/index.js.map +1 -0
  295. package/lib/module/components/theme/index.js +2 -0
  296. package/lib/module/components/theme/index.js.map +1 -0
  297. package/lib/module/constants/index.js +2 -0
  298. package/lib/module/constants/index.js.map +1 -0
  299. package/lib/module/constants/toast.js +25 -0
  300. package/lib/module/constants/toast.js.map +1 -0
  301. package/lib/module/contexts/index.js +2 -0
  302. package/lib/module/contexts/index.js.map +1 -0
  303. package/lib/module/contexts/root.js +26 -0
  304. package/lib/module/contexts/root.js.map +1 -0
  305. package/lib/module/hooks/index.js +2 -0
  306. package/lib/module/hooks/index.js.map +1 -0
  307. package/lib/module/hooks/useThemeState.js +14 -0
  308. package/lib/module/hooks/useThemeState.js.map +1 -0
  309. package/lib/module/index.js +6 -0
  310. package/lib/module/index.js.map +1 -0
  311. package/lib/module/store/index.js +2 -0
  312. package/lib/module/store/index.js.map +1 -0
  313. package/lib/module/store/useScreen.js +29 -0
  314. package/lib/module/store/useScreen.js.map +1 -0
  315. package/lib/module/styles/fill.js +19 -0
  316. package/lib/module/styles/fill.js.map +1 -0
  317. package/lib/typescript/src/components/box/Center.d.ts +5 -0
  318. package/lib/typescript/src/components/box/Center.d.ts.map +1 -0
  319. package/lib/typescript/src/components/box/CollapseHorizontal.d.ts +7 -0
  320. package/lib/typescript/src/components/box/CollapseHorizontal.d.ts.map +1 -0
  321. package/lib/typescript/src/components/box/ContentBox.d.ts +3 -0
  322. package/lib/typescript/src/components/box/ContentBox.d.ts.map +1 -0
  323. package/lib/typescript/src/components/box/DropShadow.d.ts +6 -0
  324. package/lib/typescript/src/components/box/DropShadow.d.ts.map +1 -0
  325. package/lib/typescript/src/components/box/ExpandOnMount.d.ts +9 -0
  326. package/lib/typescript/src/components/box/ExpandOnMount.d.ts.map +1 -0
  327. package/lib/typescript/src/components/box/Expandable.d.ts +23 -0
  328. package/lib/typescript/src/components/box/Expandable.d.ts.map +1 -0
  329. package/lib/typescript/src/components/box/FullSizeContainer.d.ts +16 -0
  330. package/lib/typescript/src/components/box/FullSizeContainer.d.ts.map +1 -0
  331. package/lib/typescript/src/components/box/index.d.ts +8 -0
  332. package/lib/typescript/src/components/box/index.d.ts.map +1 -0
  333. package/lib/typescript/src/components/button/DeleteButton.d.ts +21 -0
  334. package/lib/typescript/src/components/button/DeleteButton.d.ts.map +1 -0
  335. package/lib/typescript/src/components/button/LoadingButton.d.ts +17 -0
  336. package/lib/typescript/src/components/button/LoadingButton.d.ts.map +1 -0
  337. package/lib/typescript/src/components/button/Toggle.d.ts +14 -0
  338. package/lib/typescript/src/components/button/Toggle.d.ts.map +1 -0
  339. package/lib/typescript/src/components/button/index.d.ts +4 -0
  340. package/lib/typescript/src/components/button/index.d.ts.map +1 -0
  341. package/lib/typescript/src/components/feed/FeedContentPane.d.ts +16 -0
  342. package/lib/typescript/src/components/feed/FeedContentPane.d.ts.map +1 -0
  343. package/lib/typescript/src/components/feed/MediaFeed.d.ts +5 -0
  344. package/lib/typescript/src/components/feed/MediaFeed.d.ts.map +1 -0
  345. package/lib/typescript/src/components/feed/MediaFeedBackground.d.ts +19 -0
  346. package/lib/typescript/src/components/feed/MediaFeedBackground.d.ts.map +1 -0
  347. package/lib/typescript/src/components/feed/MediaFeedRefresh.d.ts +7 -0
  348. package/lib/typescript/src/components/feed/MediaFeedRefresh.d.ts.map +1 -0
  349. package/lib/typescript/src/components/feed/constants.d.ts +3 -0
  350. package/lib/typescript/src/components/feed/constants.d.ts.map +1 -0
  351. package/lib/typescript/src/components/feed/context.d.ts +12 -0
  352. package/lib/typescript/src/components/feed/context.d.ts.map +1 -0
  353. package/lib/typescript/src/components/feed/hooks.d.ts +16 -0
  354. package/lib/typescript/src/components/feed/hooks.d.ts.map +1 -0
  355. package/lib/typescript/src/components/feed/index.d.ts +3 -0
  356. package/lib/typescript/src/components/feed/index.d.ts.map +1 -0
  357. package/lib/typescript/src/components/form/Condition.d.ts +6 -0
  358. package/lib/typescript/src/components/form/Condition.d.ts.map +1 -0
  359. package/lib/typescript/src/components/form/Field.d.ts +8 -0
  360. package/lib/typescript/src/components/form/Field.d.ts.map +1 -0
  361. package/lib/typescript/src/components/form/Form.d.ts +18 -0
  362. package/lib/typescript/src/components/form/Form.d.ts.map +1 -0
  363. package/lib/typescript/src/components/form/FormFooter.d.ts +9 -0
  364. package/lib/typescript/src/components/form/FormFooter.d.ts.map +1 -0
  365. package/lib/typescript/src/components/form/UploadProgress/index.d.ts +5 -0
  366. package/lib/typescript/src/components/form/UploadProgress/index.d.ts.map +1 -0
  367. package/lib/typescript/src/components/form/index.d.ts +4 -0
  368. package/lib/typescript/src/components/form/index.d.ts.map +1 -0
  369. package/lib/typescript/src/components/form/input/Editable.d.ts +4 -0
  370. package/lib/typescript/src/components/form/input/Editable.d.ts.map +1 -0
  371. package/lib/typescript/src/components/form/input/InputSlider.d.ts +9 -0
  372. package/lib/typescript/src/components/form/input/InputSlider.d.ts.map +1 -0
  373. package/lib/typescript/src/components/form/input/OptionalTag.d.ts +6 -0
  374. package/lib/typescript/src/components/form/input/OptionalTag.d.ts.map +1 -0
  375. package/lib/typescript/src/components/form/input/StandaloneInput.d.ts +16 -0
  376. package/lib/typescript/src/components/form/input/StandaloneInput.d.ts.map +1 -0
  377. package/lib/typescript/src/components/form/input/boolean/index.d.ts +5 -0
  378. package/lib/typescript/src/components/form/input/boolean/index.d.ts.map +1 -0
  379. package/lib/typescript/src/components/form/input/color/index.d.ts +5 -0
  380. package/lib/typescript/src/components/form/input/color/index.d.ts.map +1 -0
  381. package/lib/typescript/src/components/form/input/common/InputClearButton.d.ts +10 -0
  382. package/lib/typescript/src/components/form/input/common/InputClearButton.d.ts.map +1 -0
  383. package/lib/typescript/src/components/form/input/date/index.d.ts +5 -0
  384. package/lib/typescript/src/components/form/input/date/index.d.ts.map +1 -0
  385. package/lib/typescript/src/components/form/input/datetime/index.d.ts +5 -0
  386. package/lib/typescript/src/components/form/input/datetime/index.d.ts.map +1 -0
  387. package/lib/typescript/src/components/form/input/file/index.d.ts +10 -0
  388. package/lib/typescript/src/components/form/input/file/index.d.ts.map +1 -0
  389. package/lib/typescript/src/components/form/input/hooks/index.d.ts +3 -0
  390. package/lib/typescript/src/components/form/input/hooks/index.d.ts.map +1 -0
  391. package/lib/typescript/src/components/form/input/hooks/useInputColor.d.ts +2 -0
  392. package/lib/typescript/src/components/form/input/hooks/useInputColor.d.ts.map +1 -0
  393. package/lib/typescript/src/components/form/input/hooks/useInputImperativeHandle.d.ts +5 -0
  394. package/lib/typescript/src/components/form/input/hooks/useInputImperativeHandle.d.ts.map +1 -0
  395. package/lib/typescript/src/components/form/input/hooks/useInputStyle.d.ts +9 -0
  396. package/lib/typescript/src/components/form/input/hooks/useInputStyle.d.ts.map +1 -0
  397. package/lib/typescript/src/components/form/input/index.d.ts +3 -0
  398. package/lib/typescript/src/components/form/input/index.d.ts.map +1 -0
  399. package/lib/typescript/src/components/form/input/input.d.ts +6 -0
  400. package/lib/typescript/src/components/form/input/input.d.ts.map +1 -0
  401. package/lib/typescript/src/components/form/input/multipleSelect/index.d.ts +5 -0
  402. package/lib/typescript/src/components/form/input/multipleSelect/index.d.ts.map +1 -0
  403. package/lib/typescript/src/components/form/input/number/index.d.ts +8 -0
  404. package/lib/typescript/src/components/form/input/number/index.d.ts.map +1 -0
  405. package/lib/typescript/src/components/form/input/select/index.d.ts +5 -0
  406. package/lib/typescript/src/components/form/input/select/index.d.ts.map +1 -0
  407. package/lib/typescript/src/components/form/input/socialMedia/index.d.ts +5 -0
  408. package/lib/typescript/src/components/form/input/socialMedia/index.d.ts.map +1 -0
  409. package/lib/typescript/src/components/form/input/text/index.d.ts +5 -0
  410. package/lib/typescript/src/components/form/input/text/index.d.ts.map +1 -0
  411. package/lib/typescript/src/components/form/input/text/textarea.d.ts +5 -0
  412. package/lib/typescript/src/components/form/input/text/textarea.d.ts.map +1 -0
  413. package/lib/typescript/src/components/form/input/time/index.d.ts +5 -0
  414. package/lib/typescript/src/components/form/input/time/index.d.ts.map +1 -0
  415. package/lib/typescript/src/components/form/types.d.ts +4 -0
  416. package/lib/typescript/src/components/form/types.d.ts.map +1 -0
  417. package/lib/typescript/src/components/form/view/file.d.ts +9 -0
  418. package/lib/typescript/src/components/form/view/file.d.ts.map +1 -0
  419. package/lib/typescript/src/components/form/view/index.d.ts +9 -0
  420. package/lib/typescript/src/components/form/view/index.d.ts.map +1 -0
  421. package/lib/typescript/src/components/form/view/multipleSelect.d.ts +9 -0
  422. package/lib/typescript/src/components/form/view/multipleSelect.d.ts.map +1 -0
  423. package/lib/typescript/src/components/form/view/select.d.ts +9 -0
  424. package/lib/typescript/src/components/form/view/select.d.ts.map +1 -0
  425. package/lib/typescript/src/components/icons/index.d.ts +10 -0
  426. package/lib/typescript/src/components/icons/index.d.ts.map +1 -0
  427. package/lib/typescript/src/components/index.d.ts +9 -0
  428. package/lib/typescript/src/components/index.d.ts.map +1 -0
  429. package/lib/typescript/src/components/loading/CircularProgress.d.ts +7 -0
  430. package/lib/typescript/src/components/loading/CircularProgress.d.ts.map +1 -0
  431. package/lib/typescript/src/components/loading/Loading.d.ts +27 -0
  432. package/lib/typescript/src/components/loading/Loading.d.ts.map +1 -0
  433. package/lib/typescript/src/components/loading/LoadingImage.d.ts +13 -0
  434. package/lib/typescript/src/components/loading/LoadingImage.d.ts.map +1 -0
  435. package/lib/typescript/src/components/loading/LoadingSwitch.d.ts +6 -0
  436. package/lib/typescript/src/components/loading/LoadingSwitch.d.ts.map +1 -0
  437. package/lib/typescript/src/components/loading/index.d.ts +5 -0
  438. package/lib/typescript/src/components/loading/index.d.ts.map +1 -0
  439. package/lib/typescript/src/components/overlay/ImageViewOverlay.d.ts +5 -0
  440. package/lib/typescript/src/components/overlay/ImageViewOverlay.d.ts.map +1 -0
  441. package/lib/typescript/src/components/overlay/index.d.ts +2 -0
  442. package/lib/typescript/src/components/overlay/index.d.ts.map +1 -0
  443. package/lib/typescript/src/components/text/AnimatedText.d.ts +11 -0
  444. package/lib/typescript/src/components/text/AnimatedText.d.ts.map +1 -0
  445. package/lib/typescript/src/components/text/Txt.d.ts +3 -0
  446. package/lib/typescript/src/components/text/Txt.d.ts.map +1 -0
  447. package/lib/typescript/src/components/text/index.d.ts +2 -0
  448. package/lib/typescript/src/components/text/index.d.ts.map +1 -0
  449. package/lib/typescript/src/components/theme/colorMode/DarkModeToggle.d.ts +3 -0
  450. package/lib/typescript/src/components/theme/colorMode/DarkModeToggle.d.ts.map +1 -0
  451. package/lib/typescript/src/components/theme/colorMode/index.d.ts +2 -0
  452. package/lib/typescript/src/components/theme/colorMode/index.d.ts.map +1 -0
  453. package/lib/typescript/src/components/theme/index.d.ts +2 -0
  454. package/lib/typescript/src/components/theme/index.d.ts.map +1 -0
  455. package/lib/typescript/src/constants/index.d.ts +2 -0
  456. package/lib/typescript/src/constants/index.d.ts.map +1 -0
  457. package/lib/typescript/src/constants/toast.d.ts +3 -0
  458. package/lib/typescript/src/constants/toast.d.ts.map +1 -0
  459. package/lib/typescript/src/contexts/index.d.ts +2 -0
  460. package/lib/typescript/src/contexts/index.d.ts.map +1 -0
  461. package/lib/typescript/src/contexts/root.d.ts +9 -0
  462. package/lib/typescript/src/contexts/root.d.ts.map +1 -0
  463. package/lib/typescript/src/hooks/index.d.ts +2 -0
  464. package/lib/typescript/src/hooks/index.d.ts.map +1 -0
  465. package/lib/typescript/src/hooks/useThemeState.d.ts +8 -0
  466. package/lib/typescript/src/hooks/useThemeState.d.ts.map +1 -0
  467. package/lib/typescript/src/index.d.ts +6 -0
  468. package/lib/typescript/src/index.d.ts.map +1 -0
  469. package/lib/typescript/src/store/index.d.ts +2 -0
  470. package/lib/typescript/src/store/index.d.ts.map +1 -0
  471. package/lib/typescript/src/store/useScreen.d.ts +2 -0
  472. package/lib/typescript/src/store/useScreen.d.ts.map +1 -0
  473. package/lib/typescript/src/styles/fill.d.ts +269 -0
  474. package/lib/typescript/src/styles/fill.d.ts.map +1 -0
  475. package/lib/typescript/tsup.config.d.ts +3 -0
  476. package/lib/typescript/tsup.config.d.ts.map +1 -0
  477. package/package.json +47 -11
  478. package/src/components/box/Center.tsx +19 -0
  479. package/src/components/box/CollapseHorizontal.tsx +44 -0
  480. package/src/components/box/ContentBox.tsx +24 -0
  481. package/src/components/box/DropShadow.tsx +28 -0
  482. package/src/components/box/ExpandOnMount.tsx +74 -0
  483. package/src/components/box/Expandable.tsx +143 -0
  484. package/src/components/box/FullSizeContainer.tsx +64 -0
  485. package/src/components/box/index.ts +7 -0
  486. package/src/components/button/DeleteButton.tsx +294 -0
  487. package/src/components/button/LoadingButton.tsx +155 -0
  488. package/src/components/button/Toggle.tsx +104 -0
  489. package/src/components/button/index.ts +3 -0
  490. package/src/components/feed/FeedContentPane.tsx +97 -0
  491. package/src/components/feed/MediaFeed.tsx +199 -0
  492. package/src/components/feed/MediaFeedBackground.tsx +136 -0
  493. package/src/components/feed/MediaFeedRefresh.tsx +113 -0
  494. package/src/components/feed/constants.ts +2 -0
  495. package/src/components/feed/context.tsx +19 -0
  496. package/src/components/feed/hooks.ts +279 -0
  497. package/src/components/feed/index.ts +2 -0
  498. package/src/components/form/Condition.tsx +27 -0
  499. package/src/components/form/Field.tsx +43 -0
  500. package/src/components/form/Form.tsx +393 -0
  501. package/src/components/form/FormFooter.tsx +163 -0
  502. package/src/components/form/UploadProgress/index.tsx +62 -0
  503. package/src/components/form/index.ts +3 -0
  504. package/src/components/form/input/Editable.tsx +167 -0
  505. package/src/components/form/input/InputSlider.tsx +70 -0
  506. package/src/components/form/input/OptionalTag.tsx +43 -0
  507. package/src/components/form/input/StandaloneInput.tsx +36 -0
  508. package/src/components/form/input/boolean/index.tsx +56 -0
  509. package/src/components/form/input/color/index.tsx +145 -0
  510. package/src/components/form/input/common/InputClearButton.tsx +47 -0
  511. package/src/components/form/input/date/index.tsx +103 -0
  512. package/src/components/form/input/datetime/index.tsx +143 -0
  513. package/src/components/form/input/file/index.tsx +226 -0
  514. package/src/components/form/input/hooks/index.ts +2 -0
  515. package/src/components/form/input/hooks/useInputColor.ts +7 -0
  516. package/src/components/form/input/hooks/useInputImperativeHandle.ts +22 -0
  517. package/src/components/form/input/hooks/useInputStyle.ts +40 -0
  518. package/src/components/form/input/index.ts +2 -0
  519. package/src/components/form/input/input.tsx +174 -0
  520. package/src/components/form/input/multipleSelect/index.tsx +79 -0
  521. package/src/components/form/input/number/index.tsx +100 -0
  522. package/src/components/form/input/select/index.tsx +215 -0
  523. package/src/components/form/input/socialMedia/index.tsx +234 -0
  524. package/src/components/form/input/text/index.tsx +89 -0
  525. package/src/components/form/input/text/textarea.tsx +56 -0
  526. package/src/components/form/input/time/index.tsx +106 -0
  527. package/src/components/form/types.ts +4 -0
  528. package/src/components/form/view/file.tsx +59 -0
  529. package/src/components/form/view/index.tsx +77 -0
  530. package/src/components/form/view/multipleSelect.tsx +52 -0
  531. package/src/components/form/view/select.tsx +41 -0
  532. package/src/components/icons/index.tsx +28 -0
  533. package/src/components/index.ts +8 -0
  534. package/src/components/loading/CircularProgress.tsx +53 -0
  535. package/src/components/loading/Loading.tsx +181 -0
  536. package/src/components/loading/LoadingImage.tsx +144 -0
  537. package/src/components/loading/LoadingSwitch.tsx +110 -0
  538. package/src/components/loading/index.ts +4 -0
  539. package/src/components/overlay/ImageViewOverlay.tsx +104 -0
  540. package/src/components/overlay/index.ts +1 -0
  541. package/src/components/text/AnimatedText.tsx +66 -0
  542. package/src/components/text/Txt.tsx +11 -0
  543. package/src/components/text/index.ts +1 -0
  544. package/src/components/theme/colorMode/DarkModeToggle.tsx +45 -0
  545. package/src/components/theme/colorMode/index.ts +1 -0
  546. package/src/components/theme/index.ts +1 -0
  547. package/src/constants/index.ts +1 -0
  548. package/src/constants/toast.ts +23 -0
  549. package/src/contexts/index.ts +1 -0
  550. package/src/contexts/root.tsx +39 -0
  551. package/src/hooks/index.ts +1 -0
  552. package/src/hooks/useThemeState.ts +18 -0
  553. package/src/store/index.ts +1 -0
  554. package/src/store/useScreen.ts +25 -0
  555. package/src/styles/fill.ts +19 -0
  556. package/dist/index.d.mts +0 -228
  557. package/dist/index.d.ts +0 -228
  558. package/dist/index.js +0 -2
  559. package/dist/index.js.map +0 -1
  560. package/dist/index.mjs +0 -2
  561. package/dist/index.mjs.map +0 -1
@@ -0,0 +1,143 @@
1
+ import { getDateTimeString, InputRef } from '@chem-po/core'
2
+ import { DateTimeField, useIconColor } from '@chem-po/react'
3
+ import { Ionicons } from '@expo/vector-icons'
4
+ import { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react'
5
+ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'
6
+ import { Portal } from 'react-native-paper'
7
+ import { DatePickerModal, TimePickerModal } from 'react-native-paper-dates'
8
+ import { FieldProps } from '../../types'
9
+ import { DateInputClearButton } from '../common/InputClearButton'
10
+ import { useInputColor } from '../hooks/useInputColor'
11
+
12
+ export const DateTimeInput = forwardRef<InputRef, FieldProps<DateTimeField>>(
13
+ ({ input: { value, onBlur, onChange, onFocus }, field, meta: { active } }, ref) => {
14
+ const { placeholder, optional } = field
15
+ const [showDatePicker, setShowDatePicker] = useState(true)
16
+ const [showTimePicker, setShowTimePicker] = useState(false)
17
+ // const [selectedDate] = useState<Date>(value ? new Date(value) : new Date())
18
+
19
+ const selectedDate = useMemo(() => (value ? new Date(value) : new Date()), [value])
20
+ useImperativeHandle(ref, () => ({
21
+ focus: () => {
22
+ onFocus()
23
+ },
24
+ blur: () => {
25
+ onBlur()
26
+ },
27
+ }))
28
+
29
+ const handleDateChange = useCallback(
30
+ (date: string | null) => {
31
+ if (date) {
32
+ const newDate = new Date(date)
33
+ onChange(newDate.toISOString())
34
+ setShowTimePicker(true)
35
+ } else {
36
+ onBlur()
37
+ }
38
+ setShowDatePicker(false)
39
+ },
40
+ [onChange, onBlur],
41
+ )
42
+
43
+ const handleTimeChange = useCallback(
44
+ ({ hours, minutes }: { hours: number; minutes: number }) => {
45
+ const newDate = selectedDate ? new Date(selectedDate) : new Date()
46
+ newDate.setHours(hours)
47
+ newDate.setMinutes(minutes)
48
+ onChange(newDate.toISOString())
49
+ setShowTimePicker(false)
50
+ onBlur()
51
+ },
52
+ [onChange, onBlur, selectedDate],
53
+ )
54
+
55
+ const handleDismiss = useCallback(() => {
56
+ setShowDatePicker(true)
57
+ setShowTimePicker(false)
58
+ onBlur()
59
+ }, [onBlur])
60
+
61
+ const date = useMemo(() => (value ? new Date(value) : undefined), [value])
62
+
63
+ const formattedValue = useMemo(() => {
64
+ if (!value) return null
65
+ return getDateTimeString(value)
66
+ }, [value])
67
+
68
+ const hourMinute = useMemo(() => {
69
+ if (!date) return { hours: 0, minutes: 0 }
70
+ return { hours: date.getHours(), minutes: date.getMinutes() }
71
+ }, [date])
72
+
73
+ const iconColor = useIconColor()
74
+ const inputColor = useInputColor(value)
75
+
76
+ return (
77
+ <View style={styles.container}>
78
+ <TouchableOpacity
79
+ style={styles.button}
80
+ onPress={() => {
81
+ setShowDatePicker(true)
82
+ onFocus()
83
+ }}>
84
+ <Text style={[styles.text, { color: inputColor }]}>{formattedValue ?? placeholder}</Text>
85
+ <Ionicons name="calendar" size={20} color={iconColor} style={styles.icon} />
86
+ <Ionicons name="time" size={20} color={iconColor} style={styles.icon} />
87
+ {optional && value ? (
88
+ <DateInputClearButton onPress={() => onChange(null)} isActive={!!value} />
89
+ ) : null}
90
+ </TouchableOpacity>
91
+ <Portal>
92
+ {showDatePicker && (
93
+ <DatePickerModal
94
+ locale="en"
95
+ label="Date"
96
+ date={date}
97
+ mode="single"
98
+ onConfirm={d => {
99
+ handleDateChange(d?.date?.toISOString()?.split('T')[0] ?? null)
100
+ }}
101
+ onDismiss={handleDismiss}
102
+ visible={active && showDatePicker}
103
+ />
104
+ )}
105
+ {showTimePicker && (
106
+ <TimePickerModal
107
+ visible={active && showTimePicker}
108
+ onDismiss={handleDismiss}
109
+ locale="en-US"
110
+ onConfirm={handleTimeChange}
111
+ hours={hourMinute.hours}
112
+ minutes={hourMinute.minutes}
113
+ />
114
+ )}
115
+ </Portal>
116
+ </View>
117
+ )
118
+ },
119
+ )
120
+
121
+ DateTimeInput.displayName = 'DateTimeInput'
122
+
123
+ const styles = StyleSheet.create({
124
+ container: {
125
+ width: '100%',
126
+ },
127
+ button: {
128
+ flexDirection: 'row',
129
+ alignItems: 'center',
130
+ justifyContent: 'space-between',
131
+ width: '100%',
132
+ height: 40,
133
+ paddingHorizontal: 12,
134
+ paddingVertical: 8,
135
+ },
136
+ text: {
137
+ fontSize: 16,
138
+ flex: 1,
139
+ },
140
+ icon: {
141
+ marginRight: 10,
142
+ },
143
+ })
@@ -0,0 +1,226 @@
1
+ import { FileValue, InputRef } from '@chem-po/core'
2
+ import {
3
+ FileField,
4
+ useBorderColor,
5
+ useIconColor,
6
+ usePlaceholderColor,
7
+ useTextColor,
8
+ } from '@chem-po/react'
9
+ import { Ionicons } from '@expo/vector-icons'
10
+ import * as DocumentPicker from 'expo-document-picker'
11
+ import * as ImagePicker from 'expo-image-picker'
12
+ import { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react'
13
+ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'
14
+ import { LoadingImage } from '../../../loading/LoadingImage'
15
+ import { FieldProps } from '../../types'
16
+
17
+ const generateAccept = (field: FileField) => {
18
+ if (!field.accept) return undefined
19
+ const accept: string[] = []
20
+ if (field.accept.includes('image')) {
21
+ accept.push('image/jpg', 'image/jpeg', 'image/png', 'image/svg', 'image/gif')
22
+ }
23
+ if (field.accept.includes('pdf')) accept.push('application/pdf')
24
+ if (field.accept.includes('audio')) {
25
+ accept.push('audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/webm', 'audio/ogg')
26
+ }
27
+ return accept.join(',')
28
+ }
29
+
30
+ const NoFileView = ({ hasUpload }: { hasUpload?: boolean }) => {
31
+ const textColor = useTextColor()
32
+ const iconColor = useIconColor()
33
+ const borderColor = useBorderColor()
34
+ return (
35
+ <View style={[styles.noFileContainer, { borderColor }]}>
36
+ <Text style={[styles.noFileText, { color: textColor }]}>
37
+ {hasUpload ? 'Tap to upload file' : 'No file uploaded'}
38
+ </Text>
39
+ <Ionicons name="cloud-upload" size={24} color={iconColor} />
40
+ </View>
41
+ )
42
+ }
43
+
44
+ export const FileView = ({
45
+ value,
46
+ hasUpload,
47
+ imageOptions,
48
+ }: {
49
+ value?: FileValue | null
50
+ hasUpload?: boolean
51
+ imageOptions?: any
52
+ }) => {
53
+ const { storagePath, dataUrl } = value ?? {}
54
+ const missingFile = !dataUrl && !storagePath
55
+
56
+ const iconColor = useIconColor()
57
+ const fileNameColor = useTextColor()
58
+ const borderColor = useBorderColor()
59
+ if (!value || missingFile) {
60
+ return <NoFileView hasUpload={hasUpload} />
61
+ }
62
+
63
+ if (value.type?.startsWith('image/')) {
64
+ return (
65
+ <LoadingImage
66
+ src={dataUrl}
67
+ width={imageOptions?.width ?? 120}
68
+ height={imageOptions?.height ?? 120}
69
+ style={styles.image}
70
+ />
71
+ )
72
+ }
73
+
74
+ return (
75
+ <View style={[styles.fileContainer, { borderColor }]}>
76
+ <Ionicons name="document" size={24} color={iconColor} />
77
+ <Text style={[styles.filename, { color: fileNameColor }]}>{value.filename}</Text>
78
+ </View>
79
+ )
80
+ }
81
+
82
+ export const FileComponent = forwardRef<InputRef, FieldProps<FileField>>(
83
+ ({ input: { value, onChange }, field }, ref) => {
84
+ const [loading, setLoading] = useState(false)
85
+ const { imageOptions } = field || {}
86
+
87
+ const handlePickFile = useCallback(async () => {
88
+ try {
89
+ setLoading(true)
90
+ let result: ImagePicker.ImagePickerResult | DocumentPicker.DocumentPickerResult
91
+
92
+ if (field.accept?.includes('image')) {
93
+ result = await ImagePicker.launchImageLibraryAsync({
94
+ mediaTypes: ['images'],
95
+ allowsEditing: true,
96
+ quality: 1,
97
+ base64: true,
98
+ })
99
+
100
+ if (!result.canceled && result.assets[0]) {
101
+ const asset = result.assets[0]
102
+ const fileExtension = asset.uri.split('.').pop() ?? 'jpeg'
103
+ const fileName = asset.uri.split('/').pop() ?? 'image'
104
+
105
+ onChange({
106
+ ...value,
107
+ dataUrl: asset.uri,
108
+ type: `image/${fileExtension}`,
109
+ filename: fileName,
110
+ })
111
+ }
112
+ } else {
113
+ result = await DocumentPicker.getDocumentAsync({
114
+ type: generateAccept(field),
115
+ })
116
+
117
+ if (!result.canceled) {
118
+ onChange({
119
+ ...value,
120
+ dataUrl: result.assets[0].uri,
121
+ type: result.assets[0].mimeType,
122
+ filename: result.assets[0].name,
123
+ })
124
+ }
125
+ }
126
+ } catch (error: unknown) {
127
+ if (error instanceof Error) {
128
+ console.error('Error picking file:', error.message)
129
+ }
130
+ } finally {
131
+ setLoading(false)
132
+ }
133
+ }, [field, onChange, value])
134
+
135
+ useImperativeHandle(ref, () => ({
136
+ focus: () => {
137
+ void handlePickFile()
138
+ },
139
+ blur: () => {},
140
+ }))
141
+
142
+ const isImageField = useMemo(
143
+ () => field.accept && field.accept.length === 1 && field.accept[0] === 'image',
144
+ [field],
145
+ )
146
+
147
+ const imgOptions = useMemo(
148
+ () =>
149
+ isImageField || value?.type?.startsWith('image/')
150
+ ? {
151
+ height: 120,
152
+ ...imageOptions,
153
+ }
154
+ : undefined,
155
+ [imageOptions, isImageField, value],
156
+ )
157
+
158
+ const placeholderColor = usePlaceholderColor()
159
+ const borderColor = useBorderColor()
160
+
161
+ return (
162
+ <View style={[styles.container, { borderColor }]}>
163
+ <Text style={[styles.placeholder, { color: placeholderColor }]}>{field.placeholder}</Text>
164
+ <TouchableOpacity
165
+ style={styles.contentContainer}
166
+ onPress={() => void handlePickFile()}
167
+ disabled={loading}>
168
+ <FileView hasUpload imageOptions={imgOptions} value={value} />
169
+ </TouchableOpacity>
170
+ </View>
171
+ )
172
+ },
173
+ )
174
+
175
+ FileComponent.displayName = 'FileComponent'
176
+
177
+ const styles = StyleSheet.create({
178
+ container: {
179
+ width: '100%',
180
+ alignItems: 'center',
181
+ justifyContent: 'center',
182
+ },
183
+ placeholder: {
184
+ fontSize: 14,
185
+ opacity: 0.8,
186
+ marginBottom: 4,
187
+ },
188
+ contentContainer: {
189
+ width: '100%',
190
+ position: 'relative',
191
+ alignItems: 'center',
192
+ justifyContent: 'center',
193
+ padding: 8,
194
+ overflow: 'hidden',
195
+ },
196
+ noFileContainer: {
197
+ flexDirection: 'row',
198
+ alignItems: 'center',
199
+ justifyContent: 'center',
200
+ padding: 16,
201
+ borderWidth: 1,
202
+ borderRadius: 4,
203
+ borderStyle: 'dashed',
204
+ },
205
+ noFileText: {
206
+ fontSize: 14,
207
+ textAlign: 'center',
208
+ opacity: 0.8,
209
+ marginRight: 10,
210
+ },
211
+ fileContainer: {
212
+ flexDirection: 'row',
213
+ alignItems: 'center',
214
+ padding: 8,
215
+ borderWidth: 1,
216
+ borderRadius: 4,
217
+ },
218
+ filename: {
219
+ fontSize: 14,
220
+ marginLeft: 8,
221
+ },
222
+ image: {
223
+ borderRadius: 4,
224
+ overflow: 'hidden',
225
+ },
226
+ })
@@ -0,0 +1,2 @@
1
+ export * from './useInputImperativeHandle'
2
+ export * from './useInputStyle'
@@ -0,0 +1,7 @@
1
+ import { usePlaceholderColor, useTextColor } from '@chem-po/react'
2
+
3
+ export const useInputColor = (value?: any) => {
4
+ const textColor = useTextColor()
5
+ const placeholderColor = usePlaceholderColor()
6
+ return value !== undefined && value !== null && value !== '' ? textColor : placeholderColor
7
+ }
@@ -0,0 +1,22 @@
1
+ import { InputRef } from '@chem-po/core'
2
+ import { ForwardedRef, useImperativeHandle, useRef } from 'react'
3
+ import { TextInput } from 'react-native'
4
+
5
+ export const useInputImperativeHandle = (ref: ForwardedRef<InputRef>) => {
6
+ const inputRef = useRef<TextInput>(null)
7
+
8
+ useImperativeHandle<InputRef, InputRef>(
9
+ ref,
10
+ () => ({
11
+ focus: () => {
12
+ inputRef.current?.focus()
13
+ },
14
+ blur: () => {
15
+ inputRef.current?.blur()
16
+ },
17
+ }),
18
+ [],
19
+ )
20
+
21
+ return inputRef
22
+ }
@@ -0,0 +1,40 @@
1
+ import { InputSize } from '@chem-po/react'
2
+ import { useMemo } from 'react'
3
+ import { StyleSheet } from 'react-native'
4
+
5
+ const inputPaddingY: Record<InputSize, number> = {
6
+ xs: 4, // 0.25rem * 16
7
+ sm: 6, // 0.35rem * 16
8
+ md: 8, // 0.5rem * 16
9
+ lg: 8, // 0.5rem * 16
10
+ xl: 8, // 0.5rem * 16
11
+ }
12
+
13
+ const inputPaddingX: Record<InputSize, number> = {
14
+ xs: 8, // 0.5rem * 16
15
+ sm: 12, // 0.75rem * 16
16
+ md: 12, // 0.75rem * 16
17
+ lg: 12, // 0.75rem * 16
18
+ xl: 12, // 0.75rem * 16
19
+ }
20
+
21
+ const fontSize: Record<InputSize, number> = {
22
+ xs: 12, // 0.75rem * 16
23
+ sm: 14, // 0.875rem * 16
24
+ md: 16, // 1rem * 16
25
+ lg: 18, // 1.125rem * 16
26
+ xl: 20, // 1.25rem * 16
27
+ }
28
+
29
+ export const useInputStyle = (size?: InputSize) =>
30
+ useMemo(
31
+ () =>
32
+ StyleSheet.create({
33
+ style: {
34
+ paddingVertical: inputPaddingY[size ?? 'md'],
35
+ paddingHorizontal: inputPaddingX[size ?? 'md'],
36
+ fontSize: fontSize[size ?? 'md'],
37
+ },
38
+ }),
39
+ [size],
40
+ )
@@ -0,0 +1,2 @@
1
+ export * from './Editable'
2
+ export * from './StandaloneInput'
@@ -0,0 +1,174 @@
1
+ import { FieldType, InputRef } from '@chem-po/core'
2
+ import {
3
+ Field,
4
+ TypedField,
5
+ useBackgroundColor,
6
+ usePlaceholderColor,
7
+ useThemeValue,
8
+ } from '@chem-po/react'
9
+ import { ForwardedRef, forwardRef, ForwardRefExoticComponent, useEffect, useMemo } from 'react'
10
+ import { Animated, StyleSheet, Text, View, ViewStyle } from 'react-native'
11
+ import { AnimatedText } from '../../text/AnimatedText'
12
+ import { FieldProps } from '../types'
13
+ import { BooleanComponent } from './boolean'
14
+ import { ColorComponent } from './color'
15
+ import { DateInput } from './date'
16
+ import { DateTimeInput } from './datetime'
17
+ import { FileComponent } from './file'
18
+ import { MultipleSelectComponent } from './multipleSelect'
19
+ import { CurrencyAmountComponent, NumberComponent } from './number'
20
+ import { SelectComponent } from './select'
21
+ import { SocialMediaComponent } from './socialMedia'
22
+ import { TextComponent } from './text'
23
+ import { TimeInput } from './time'
24
+
25
+ type ComponentType<T extends Field> = ForwardRefExoticComponent<
26
+ FieldProps<T> & React.RefAttributes<InputRef>
27
+ >
28
+
29
+ const Components: { [Key in FieldType]: ComponentType<TypedField<Key>> } = {
30
+ text: TextComponent,
31
+ file: FileComponent,
32
+ boolean: BooleanComponent,
33
+ select: SelectComponent,
34
+ multipleSelect: MultipleSelectComponent,
35
+ currency: CurrencyAmountComponent,
36
+ number: NumberComponent,
37
+ date: DateInput,
38
+ datetime: DateTimeInput,
39
+ time: TimeInput,
40
+ socialMedia: SocialMediaComponent,
41
+ color: ColorComponent,
42
+ }
43
+ const InputBase = <T extends Field>(props: FieldProps<T>, ref: ForwardedRef<InputRef>) => {
44
+ const {
45
+ field,
46
+ meta: { error, active, touched },
47
+ input,
48
+ inEditable,
49
+ } = props
50
+
51
+ const { value } = input
52
+
53
+ const placeholderColor = usePlaceholderColor()
54
+ const activeColor = useThemeValue('colors.accent.400')
55
+ const errorColor = useThemeValue('colors.error.400')
56
+
57
+ const shadowColorAnim = useMemo(() => new Animated.Value(0), [])
58
+
59
+ const displayedError = useMemo(() => {
60
+ if (error && touched) return error
61
+ return null
62
+ }, [error, touched])
63
+ const shadowColor = useMemo(() => {
64
+ if (displayedError) return errorColor
65
+ return activeColor
66
+ }, [displayedError, activeColor, errorColor])
67
+
68
+ useEffect(() => {
69
+ Animated.timing(shadowColorAnim, {
70
+ toValue: active || displayedError ? 1 : 0,
71
+ duration: 300,
72
+ useNativeDriver: false,
73
+ }).start()
74
+ }, [active, displayedError, shadowColorAnim])
75
+
76
+ const animatedShadowColor = shadowColorAnim.interpolate({
77
+ inputRange: [0, 1],
78
+ outputRange: [placeholderColor, shadowColor],
79
+ })
80
+
81
+ const { _type, label } = field
82
+ const showPlaceholder = useMemo(
83
+ () => _type === 'multipleSelect' || (!!value && _type !== 'file' && _type !== 'boolean'),
84
+ [value, _type],
85
+ )
86
+
87
+ const bg = useBackgroundColor(150)
88
+
89
+ const animatedStyles = useMemo(() => {
90
+ if (inEditable) return {}
91
+ switch (_type) {
92
+ case 'text':
93
+ case 'number':
94
+ case 'currency':
95
+ case 'select':
96
+ case 'datetime':
97
+ case 'date':
98
+ case 'time':
99
+ return {
100
+ shadowColor: animatedShadowColor,
101
+ shadowOffset: { width: 0, height: 0 },
102
+ shadowOpacity: 1,
103
+ shadowRadius: 4,
104
+ elevation: 5,
105
+ backgroundColor: bg,
106
+ } as Animated.WithAnimatedValue<ViewStyle>
107
+ default:
108
+ return {}
109
+ }
110
+ }, [_type, animatedShadowColor, inEditable, bg])
111
+
112
+ const Component = useMemo(() => Components[_type] as ComponentType<T>, [_type])
113
+
114
+ return (
115
+ <View style={[staticStyles.container]}>
116
+ {label && !inEditable ? <Text style={staticStyles.label}>{label}</Text> : null}
117
+ <AnimatedText
118
+ style={staticStyles.placeholder}
119
+ show={showPlaceholder}
120
+ color={placeholderColor}
121
+ height={16}
122
+ marginBottom={6}>
123
+ {field.placeholder ?? ''}
124
+ </AnimatedText>
125
+ <Animated.View style={[staticStyles.inputContainer, animatedStyles]}>
126
+ <Component ref={ref} {...props} />
127
+ </Animated.View>
128
+ {!inEditable && (
129
+ <AnimatedText
130
+ style={staticStyles.errorText}
131
+ show={!!displayedError}
132
+ color={errorColor}
133
+ height={18}
134
+ marginBottom={0}>
135
+ {displayedError}
136
+ </AnimatedText>
137
+ )}
138
+ {/* {optional && !inEditable ? <OptionalTag field={field} value={value} /> : null} */}
139
+ </View>
140
+ )
141
+ }
142
+
143
+ const staticStyles = StyleSheet.create({
144
+ container: {
145
+ position: 'relative',
146
+ width: '100%',
147
+ paddingHorizontal: 4,
148
+ // backgroundColor: 'blue',
149
+ },
150
+ label: {
151
+ color: '#1A202C',
152
+ fontSize: 14,
153
+ paddingHorizontal: 8,
154
+ },
155
+ inputContainer: {
156
+ width: '100%',
157
+ borderRadius: 4,
158
+ paddingVertical: 1,
159
+ overflow: 'hidden',
160
+ },
161
+ errorText: {
162
+ fontSize: 14,
163
+ paddingHorizontal: 4,
164
+ fontWeight: 500,
165
+ // backgroundColor: 'red',
166
+ },
167
+ placeholder: {
168
+ fontSize: 14,
169
+ paddingHorizontal: 4,
170
+ overflow: 'hidden',
171
+ },
172
+ })
173
+
174
+ export const Input = forwardRef<InputRef, FieldProps<Field>>(InputBase)
@@ -0,0 +1,79 @@
1
+ import { InputRef } from '@chem-po/core'
2
+ import { MultipleSelectField, useColorMode, usePlaceholderColor } from '@chem-po/react'
3
+ import { forwardRef, useImperativeHandle } from 'react'
4
+ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'
5
+ import { FieldProps } from '../../types'
6
+
7
+ export const MultipleSelectComponent = forwardRef<InputRef, FieldProps<MultipleSelectField>>(
8
+ ({ field, input, inEditable }, ref) => {
9
+ const { options, renderOption, getOptionKey } = field
10
+ const { onChange, value, onFocus, onBlur } = input
11
+ const colorMode = useColorMode()
12
+
13
+ const placeholderColor = usePlaceholderColor()
14
+
15
+ useImperativeHandle(ref, () => ({
16
+ focus: () => {
17
+ onFocus()
18
+ },
19
+ blur: () => {
20
+ onBlur()
21
+ },
22
+ }))
23
+
24
+ const handleOptionPress = (option: any) => {
25
+ onChange(
26
+ value?.includes(option) ? value.filter(v => v !== option) : [...(value ?? []), option],
27
+ )
28
+ }
29
+
30
+ const body = (
31
+ <View style={styles.container}>
32
+ {options.map(o => (
33
+ <TouchableOpacity
34
+ key={getOptionKey ? getOptionKey(o) : o}
35
+ style={[styles.option, value?.includes(o) && styles.selectedOption]}
36
+ onPress={() => handleOptionPress(o)}>
37
+ {renderOption(o, colorMode, !!value?.includes(o))}
38
+ </TouchableOpacity>
39
+ ))}
40
+ </View>
41
+ )
42
+
43
+ return inEditable ? (
44
+ <View style={styles.editableContainer}>
45
+ <Text style={[styles.placeholder, { color: placeholderColor }]}>{field.placeholder}</Text>
46
+ {body}
47
+ </View>
48
+ ) : (
49
+ body
50
+ )
51
+ },
52
+ )
53
+
54
+ const styles = StyleSheet.create({
55
+ container: {
56
+ width: '100%',
57
+ flexDirection: 'row',
58
+ flexWrap: 'wrap',
59
+ gap: 4,
60
+ },
61
+ editableContainer: {
62
+ width: '100%',
63
+ paddingVertical: 2,
64
+ },
65
+ placeholder: {
66
+ fontSize: 14,
67
+ fontWeight: '600',
68
+ opacity: 0.8,
69
+ paddingHorizontal: 8,
70
+ marginBottom: 4,
71
+ },
72
+ option: {
73
+ padding: 4,
74
+ opacity: 0.7,
75
+ },
76
+ selectedOption: {
77
+ opacity: 1,
78
+ },
79
+ })