@herca/rn-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +33 -0
  3. package/RnKit.podspec +21 -0
  4. package/android/build.gradle +83 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/java/com/herca/rnkit/RnKitModule.kt +23 -0
  8. package/android/src/main/java/com/herca/rnkit/RnKitPackage.kt +33 -0
  9. package/ios/RnKit.h +5 -0
  10. package/ios/RnKit.mm +18 -0
  11. package/lib/module/Accordion/Accordion.js +33 -0
  12. package/lib/module/Accordion/Accordion.js.map +1 -0
  13. package/lib/module/Accordion/AccordionItem.js +13 -0
  14. package/lib/module/Accordion/AccordionItem.js.map +1 -0
  15. package/lib/module/Accordion/README.md +48 -0
  16. package/lib/module/Accordion/type.js +4 -0
  17. package/lib/module/Accordion/type.js.map +1 -0
  18. package/lib/module/Alert/Alert.js +121 -0
  19. package/lib/module/Alert/Alert.js.map +1 -0
  20. package/lib/module/Alert/README.md +68 -0
  21. package/lib/module/Avatar/Avatar.js +56 -0
  22. package/lib/module/Avatar/Avatar.js.map +1 -0
  23. package/lib/module/Avatar/AvatarGroup.js +118 -0
  24. package/lib/module/Avatar/AvatarGroup.js.map +1 -0
  25. package/lib/module/Avatar/README_AVATAR.md +57 -0
  26. package/lib/module/Avatar/README_AVATARGROUP.md +58 -0
  27. package/lib/module/Avatar/type.js +4 -0
  28. package/lib/module/Avatar/type.js.map +1 -0
  29. package/lib/module/Badge/Badge.js +119 -0
  30. package/lib/module/Badge/Badge.js.map +1 -0
  31. package/lib/module/Badge/README.md +64 -0
  32. package/lib/module/Badge/type.js +2 -0
  33. package/lib/module/Badge/type.js.map +1 -0
  34. package/lib/module/BottomSheet/BottomSheet.js +211 -0
  35. package/lib/module/BottomSheet/BottomSheet.js.map +1 -0
  36. package/lib/module/BottomSheet/README.md +64 -0
  37. package/lib/module/BottomSheet/type.js +2 -0
  38. package/lib/module/BottomSheet/type.js.map +1 -0
  39. package/lib/module/Button/Button.js +138 -0
  40. package/lib/module/Button/Button.js.map +1 -0
  41. package/lib/module/Button/README.md +94 -0
  42. package/lib/module/Button/type.js +262 -0
  43. package/lib/module/Button/type.js.map +1 -0
  44. package/lib/module/Calendar/Calendar.js +356 -0
  45. package/lib/module/Calendar/Calendar.js.map +1 -0
  46. package/lib/module/Calendar/CalendarPropsType.js +4 -0
  47. package/lib/module/Calendar/CalendarPropsType.js.map +1 -0
  48. package/lib/module/Calendar/README.md +73 -0
  49. package/lib/module/CheckBox/CheckBox.js +67 -0
  50. package/lib/module/CheckBox/CheckBox.js.map +1 -0
  51. package/lib/module/CheckBox/CheckBoxList.js +41 -0
  52. package/lib/module/CheckBox/CheckBoxList.js.map +1 -0
  53. package/lib/module/CheckBox/README_CHECKBOX.md +46 -0
  54. package/lib/module/CheckBox/README_CHECKBOXLIST.md +41 -0
  55. package/lib/module/Chip/Chip.js +109 -0
  56. package/lib/module/Chip/Chip.js.map +1 -0
  57. package/lib/module/Chip/ChipItem.js +89 -0
  58. package/lib/module/Chip/ChipItem.js.map +1 -0
  59. package/lib/module/Chip/README.md +89 -0
  60. package/lib/module/Chip/type.js +94 -0
  61. package/lib/module/Chip/type.js.map +1 -0
  62. package/lib/module/Color/Color.js +126 -0
  63. package/lib/module/Color/Color.js.map +1 -0
  64. package/lib/module/Color/README.md +54 -0
  65. package/lib/module/Color/type.js +2 -0
  66. package/lib/module/Color/type.js.map +1 -0
  67. package/lib/module/DatePicker/DatePicker.js +69 -0
  68. package/lib/module/DatePicker/DatePicker.js.map +1 -0
  69. package/lib/module/DatePicker/MonthPicker.js +179 -0
  70. package/lib/module/DatePicker/MonthPicker.js.map +1 -0
  71. package/lib/module/DatePicker/README.md +51 -0
  72. package/lib/module/DatePicker/TimePicker.js +200 -0
  73. package/lib/module/DatePicker/TimePicker.js.map +1 -0
  74. package/lib/module/DatePicker/YearPicker.js +217 -0
  75. package/lib/module/DatePicker/YearPicker.js.map +1 -0
  76. package/lib/module/DatePicker/helpers.js +33 -0
  77. package/lib/module/DatePicker/helpers.js.map +1 -0
  78. package/lib/module/Drawing/Drawing.js +26 -0
  79. package/lib/module/Drawing/Drawing.js.map +1 -0
  80. package/lib/module/DropDown/DropDown.js +107 -0
  81. package/lib/module/DropDown/DropDown.js.map +1 -0
  82. package/lib/module/DropDown/type.js +4 -0
  83. package/lib/module/DropDown/type.js.map +1 -0
  84. package/lib/module/FileView/Image.js +8 -0
  85. package/lib/module/FileView/Image.js.map +1 -0
  86. package/lib/module/FileView/PdfView.js +37 -0
  87. package/lib/module/FileView/PdfView.js.map +1 -0
  88. package/lib/module/Icon/Icon.js +74 -0
  89. package/lib/module/Icon/Icon.js.map +1 -0
  90. package/lib/module/Icon/icons/AirPlane.js +22 -0
  91. package/lib/module/Icon/icons/AirPlane.js.map +1 -0
  92. package/lib/module/Icon/icons/ArrowBackAlt.js +22 -0
  93. package/lib/module/Icon/icons/ArrowBackAlt.js.map +1 -0
  94. package/lib/module/Icon/icons/ArrowDown.js +22 -0
  95. package/lib/module/Icon/icons/ArrowDown.js.map +1 -0
  96. package/lib/module/Icon/icons/ArrowForwardAlt.js +22 -0
  97. package/lib/module/Icon/icons/ArrowForwardAlt.js.map +1 -0
  98. package/lib/module/Icon/icons/ArrowLeft.js +22 -0
  99. package/lib/module/Icon/icons/ArrowLeft.js.map +1 -0
  100. package/lib/module/Icon/icons/ArrowRight.js +22 -0
  101. package/lib/module/Icon/icons/ArrowRight.js.map +1 -0
  102. package/lib/module/Icon/icons/ArrowUp.js +22 -0
  103. package/lib/module/Icon/icons/ArrowUp.js.map +1 -0
  104. package/lib/module/Icon/icons/Calendar.js +22 -0
  105. package/lib/module/Icon/icons/Calendar.js.map +1 -0
  106. package/lib/module/Icon/icons/Camera.js +22 -0
  107. package/lib/module/Icon/icons/Camera.js.map +1 -0
  108. package/lib/module/Icon/icons/Check.js +22 -0
  109. package/lib/module/Icon/icons/Check.js.map +1 -0
  110. package/lib/module/Icon/icons/Document.js +22 -0
  111. package/lib/module/Icon/icons/Document.js.map +1 -0
  112. package/lib/module/Icon/icons/Download.js +22 -0
  113. package/lib/module/Icon/icons/Download.js.map +1 -0
  114. package/lib/module/Icon/icons/ExlmationMark.js +22 -0
  115. package/lib/module/Icon/icons/ExlmationMark.js.map +1 -0
  116. package/lib/module/Icon/icons/Eye.js +22 -0
  117. package/lib/module/Icon/icons/Eye.js.map +1 -0
  118. package/lib/module/Icon/icons/EyeOpen.js +22 -0
  119. package/lib/module/Icon/icons/EyeOpen.js.map +1 -0
  120. package/lib/module/Icon/icons/Filter.js +22 -0
  121. package/lib/module/Icon/icons/Filter.js.map +1 -0
  122. package/lib/module/Icon/icons/Home.js +8 -0
  123. package/lib/module/Icon/icons/Home.js.map +1 -0
  124. package/lib/module/Icon/icons/Image.js +22 -0
  125. package/lib/module/Icon/icons/Image.js.map +1 -0
  126. package/lib/module/Icon/icons/Pdf.js +22 -0
  127. package/lib/module/Icon/icons/Pdf.js.map +1 -0
  128. package/lib/module/Icon/icons/RadioButton.js +34 -0
  129. package/lib/module/Icon/icons/RadioButton.js.map +1 -0
  130. package/lib/module/Icon/icons/Search.js +22 -0
  131. package/lib/module/Icon/icons/Search.js.map +1 -0
  132. package/lib/module/Icon/icons/StickyNote.js +22 -0
  133. package/lib/module/Icon/icons/StickyNote.js.map +1 -0
  134. package/lib/module/Icon/icons/Times.js +22 -0
  135. package/lib/module/Icon/icons/Times.js.map +1 -0
  136. package/lib/module/Icon/icons/User.js +22 -0
  137. package/lib/module/Icon/icons/User.js.map +1 -0
  138. package/lib/module/Icon/icons/XCircle.js +22 -0
  139. package/lib/module/Icon/icons/XCircle.js.map +1 -0
  140. package/lib/module/Icon/index.js +6 -0
  141. package/lib/module/Icon/index.js.map +1 -0
  142. package/lib/module/Icon/type.js +4 -0
  143. package/lib/module/Icon/type.js.map +1 -0
  144. package/lib/module/Input/Input.js +125 -0
  145. package/lib/module/Input/Input.js.map +1 -0
  146. package/lib/module/Input/Input.md +51 -0
  147. package/lib/module/Input/InputFile.js +319 -0
  148. package/lib/module/Input/InputFile.js.map +1 -0
  149. package/lib/module/Input/InputMonth.js +4 -0
  150. package/lib/module/Input/InputMonth.js.map +1 -0
  151. package/lib/module/Input/InputNumber.js +2 -0
  152. package/lib/module/Input/InputNumber.js.map +1 -0
  153. package/lib/module/Input/InputOtp.js +74 -0
  154. package/lib/module/Input/InputOtp.js.map +1 -0
  155. package/lib/module/Input/InputPassword.js +18 -0
  156. package/lib/module/Input/InputPassword.js.map +1 -0
  157. package/lib/module/Input/InputSelect.js +8 -0
  158. package/lib/module/Input/InputSelect.js.map +1 -0
  159. package/lib/module/Input/Switch.js +91 -0
  160. package/lib/module/Input/Switch.js.map +1 -0
  161. package/lib/module/Input/TextArea.js +61 -0
  162. package/lib/module/Input/TextArea.js.map +1 -0
  163. package/lib/module/Input/assets/Ilustrasi.svg +14 -0
  164. package/lib/module/Input/assets/input-file.png +0 -0
  165. package/lib/module/Input/type.js +4 -0
  166. package/lib/module/Input/type.js.map +1 -0
  167. package/lib/module/Label/Label.js +87 -0
  168. package/lib/module/Label/Label.js.map +1 -0
  169. package/lib/module/LabelForm/LabelForm.js +17 -0
  170. package/lib/module/LabelForm/LabelForm.js.map +1 -0
  171. package/lib/module/List/List.js +31 -0
  172. package/lib/module/List/List.js.map +1 -0
  173. package/lib/module/List/ListItem.js +31 -0
  174. package/lib/module/List/ListItem.js.map +1 -0
  175. package/lib/module/List/type.js +4 -0
  176. package/lib/module/List/type.js.map +1 -0
  177. package/lib/module/Loading/Loading.js +50 -0
  178. package/lib/module/Loading/Loading.js.map +1 -0
  179. package/lib/module/Modal/Modal.js +149 -0
  180. package/lib/module/Modal/Modal.js.map +1 -0
  181. package/lib/module/NativeRnKit.js +5 -0
  182. package/lib/module/NativeRnKit.js.map +1 -0
  183. package/lib/module/Provider/FooterProvider.js +25 -0
  184. package/lib/module/Provider/FooterProvider.js.map +1 -0
  185. package/lib/module/Provider/LayoutWithFooter.js +34 -0
  186. package/lib/module/Provider/LayoutWithFooter.js.map +1 -0
  187. package/lib/module/Provider/Provider.js +43 -0
  188. package/lib/module/Provider/Provider.js.map +1 -0
  189. package/lib/module/Provider/RequiredUpdateAppsProvider.js +60 -0
  190. package/lib/module/Provider/RequiredUpdateAppsProvider.js.map +1 -0
  191. package/lib/module/Provider/type.js +2 -0
  192. package/lib/module/Provider/type.js.map +1 -0
  193. package/lib/module/RadioButton/README.md +43 -0
  194. package/lib/module/RadioButton/RadioButton.js +97 -0
  195. package/lib/module/RadioButton/RadioButton.js.map +1 -0
  196. package/lib/module/Select/README.md +78 -0
  197. package/lib/module/Select/README_Select.md +78 -0
  198. package/lib/module/Select/Select.js +101 -0
  199. package/lib/module/Select/Select.js.map +1 -0
  200. package/lib/module/Select/type.js +4 -0
  201. package/lib/module/Select/type.js.map +1 -0
  202. package/lib/module/Step/Step.js +83 -0
  203. package/lib/module/Step/Step.js.map +1 -0
  204. package/lib/module/Step/StepItem.js +78 -0
  205. package/lib/module/Step/StepItem.js.map +1 -0
  206. package/lib/module/Step/type.js +4 -0
  207. package/lib/module/Step/type.js.map +1 -0
  208. package/lib/module/SwitchButton/SwitchButton.js +8 -0
  209. package/lib/module/SwitchButton/SwitchButton.js.map +1 -0
  210. package/lib/module/TextArea/TextArea.js +2 -0
  211. package/lib/module/TextArea/TextArea.js.map +1 -0
  212. package/lib/module/Theme/Theme.js +31 -0
  213. package/lib/module/Theme/Theme.js.map +1 -0
  214. package/lib/module/Timeline/Timeline.js +12 -0
  215. package/lib/module/Timeline/Timeline.js.map +1 -0
  216. package/lib/module/Timeline/TimelineItem.js +66 -0
  217. package/lib/module/Timeline/TimelineItem.js.map +1 -0
  218. package/lib/module/Toast/Toast.js +143 -0
  219. package/lib/module/Toast/Toast.js.map +1 -0
  220. package/lib/module/Toast/ToastContext.js +40 -0
  221. package/lib/module/Toast/ToastContext.js.map +1 -0
  222. package/lib/module/Typography/README.md +71 -0
  223. package/lib/module/Typography/Typography.js +39 -0
  224. package/lib/module/Typography/Typography.js.map +1 -0
  225. package/lib/module/Typography/type.js +33 -0
  226. package/lib/module/Typography/type.js.map +1 -0
  227. package/lib/module/Ui/Card.js +50 -0
  228. package/lib/module/Ui/Card.js.map +1 -0
  229. package/lib/module/Ui/Center.js +21 -0
  230. package/lib/module/Ui/Center.js.map +1 -0
  231. package/lib/module/Ui/Col.js +20 -0
  232. package/lib/module/Ui/Col.js.map +1 -0
  233. package/lib/module/Ui/Container.js +20 -0
  234. package/lib/module/Ui/Container.js.map +1 -0
  235. package/lib/module/Ui/Devider.js +18 -0
  236. package/lib/module/Ui/Devider.js.map +1 -0
  237. package/lib/module/Ui/Footer.js +36 -0
  238. package/lib/module/Ui/Footer.js.map +1 -0
  239. package/lib/module/Ui/Gap.js +13 -0
  240. package/lib/module/Ui/Gap.js.map +1 -0
  241. package/lib/module/Ui/Grid.js +31 -0
  242. package/lib/module/Ui/Grid.js.map +1 -0
  243. package/lib/module/index.js +61 -0
  244. package/lib/module/index.js.map +1 -0
  245. package/lib/module/package.json +1 -0
  246. package/lib/typescript/package.json +1 -0
  247. package/lib/typescript/src/Accordion/Accordion.d.ts +3 -0
  248. package/lib/typescript/src/Accordion/Accordion.d.ts.map +1 -0
  249. package/lib/typescript/src/Accordion/AccordionItem.d.ts +3 -0
  250. package/lib/typescript/src/Accordion/AccordionItem.d.ts.map +1 -0
  251. package/lib/typescript/src/Accordion/type.d.ts +17 -0
  252. package/lib/typescript/src/Accordion/type.d.ts.map +1 -0
  253. package/lib/typescript/src/Alert/Alert.d.ts +16 -0
  254. package/lib/typescript/src/Alert/Alert.d.ts.map +1 -0
  255. package/lib/typescript/src/Avatar/Avatar.d.ts +5 -0
  256. package/lib/typescript/src/Avatar/Avatar.d.ts.map +1 -0
  257. package/lib/typescript/src/Avatar/AvatarGroup.d.ts +4 -0
  258. package/lib/typescript/src/Avatar/AvatarGroup.d.ts.map +1 -0
  259. package/lib/typescript/src/Avatar/type.d.ts +16 -0
  260. package/lib/typescript/src/Avatar/type.d.ts.map +1 -0
  261. package/lib/typescript/src/Badge/Badge.d.ts +14 -0
  262. package/lib/typescript/src/Badge/Badge.d.ts.map +1 -0
  263. package/lib/typescript/src/Badge/type.d.ts +1 -0
  264. package/lib/typescript/src/Badge/type.d.ts.map +1 -0
  265. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts +3 -0
  266. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts.map +1 -0
  267. package/lib/typescript/src/BottomSheet/type.d.ts +15 -0
  268. package/lib/typescript/src/BottomSheet/type.d.ts.map +1 -0
  269. package/lib/typescript/src/Button/Button.d.ts +5 -0
  270. package/lib/typescript/src/Button/Button.d.ts.map +1 -0
  271. package/lib/typescript/src/Button/type.d.ts +49 -0
  272. package/lib/typescript/src/Button/type.d.ts.map +1 -0
  273. package/lib/typescript/src/Calendar/Calendar.d.ts +4 -0
  274. package/lib/typescript/src/Calendar/Calendar.d.ts.map +1 -0
  275. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts +52 -0
  276. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts.map +1 -0
  277. package/lib/typescript/src/CheckBox/CheckBox.d.ts +11 -0
  278. package/lib/typescript/src/CheckBox/CheckBox.d.ts.map +1 -0
  279. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts +14 -0
  280. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts.map +1 -0
  281. package/lib/typescript/src/Chip/Chip.d.ts +5 -0
  282. package/lib/typescript/src/Chip/Chip.d.ts.map +1 -0
  283. package/lib/typescript/src/Chip/ChipItem.d.ts +3 -0
  284. package/lib/typescript/src/Chip/ChipItem.d.ts.map +1 -0
  285. package/lib/typescript/src/Chip/type.d.ts +50 -0
  286. package/lib/typescript/src/Chip/type.d.ts.map +1 -0
  287. package/lib/typescript/src/Color/Color.d.ts +122 -0
  288. package/lib/typescript/src/Color/Color.d.ts.map +1 -0
  289. package/lib/typescript/src/Color/type.d.ts +2 -0
  290. package/lib/typescript/src/Color/type.d.ts.map +1 -0
  291. package/lib/typescript/src/DatePicker/DatePicker.d.ts +10 -0
  292. package/lib/typescript/src/DatePicker/DatePicker.d.ts.map +1 -0
  293. package/lib/typescript/src/DatePicker/MonthPicker.d.ts +13 -0
  294. package/lib/typescript/src/DatePicker/MonthPicker.d.ts.map +1 -0
  295. package/lib/typescript/src/DatePicker/TimePicker.d.ts +11 -0
  296. package/lib/typescript/src/DatePicker/TimePicker.d.ts.map +1 -0
  297. package/lib/typescript/src/DatePicker/YearPicker.d.ts +13 -0
  298. package/lib/typescript/src/DatePicker/YearPicker.d.ts.map +1 -0
  299. package/lib/typescript/src/DatePicker/helpers.d.ts +21 -0
  300. package/lib/typescript/src/DatePicker/helpers.d.ts.map +1 -0
  301. package/lib/typescript/src/Drawing/Drawing.d.ts +2 -0
  302. package/lib/typescript/src/Drawing/Drawing.d.ts.map +1 -0
  303. package/lib/typescript/src/DropDown/DropDown.d.ts +4 -0
  304. package/lib/typescript/src/DropDown/DropDown.d.ts.map +1 -0
  305. package/lib/typescript/src/DropDown/type.d.ts +9 -0
  306. package/lib/typescript/src/DropDown/type.d.ts.map +1 -0
  307. package/lib/typescript/src/FileView/Image.d.ts +2 -0
  308. package/lib/typescript/src/FileView/Image.d.ts.map +1 -0
  309. package/lib/typescript/src/FileView/PdfView.d.ts +5 -0
  310. package/lib/typescript/src/FileView/PdfView.d.ts.map +1 -0
  311. package/lib/typescript/src/Icon/Icon.d.ts +5 -0
  312. package/lib/typescript/src/Icon/Icon.d.ts.map +1 -0
  313. package/lib/typescript/src/Icon/icons/AirPlane.d.ts +9 -0
  314. package/lib/typescript/src/Icon/icons/AirPlane.d.ts.map +1 -0
  315. package/lib/typescript/src/Icon/icons/ArrowBackAlt.d.ts +9 -0
  316. package/lib/typescript/src/Icon/icons/ArrowBackAlt.d.ts.map +1 -0
  317. package/lib/typescript/src/Icon/icons/ArrowDown.d.ts +9 -0
  318. package/lib/typescript/src/Icon/icons/ArrowDown.d.ts.map +1 -0
  319. package/lib/typescript/src/Icon/icons/ArrowForwardAlt.d.ts +9 -0
  320. package/lib/typescript/src/Icon/icons/ArrowForwardAlt.d.ts.map +1 -0
  321. package/lib/typescript/src/Icon/icons/ArrowLeft.d.ts +9 -0
  322. package/lib/typescript/src/Icon/icons/ArrowLeft.d.ts.map +1 -0
  323. package/lib/typescript/src/Icon/icons/ArrowRight.d.ts +9 -0
  324. package/lib/typescript/src/Icon/icons/ArrowRight.d.ts.map +1 -0
  325. package/lib/typescript/src/Icon/icons/ArrowUp.d.ts +9 -0
  326. package/lib/typescript/src/Icon/icons/ArrowUp.d.ts.map +1 -0
  327. package/lib/typescript/src/Icon/icons/Calendar.d.ts +9 -0
  328. package/lib/typescript/src/Icon/icons/Calendar.d.ts.map +1 -0
  329. package/lib/typescript/src/Icon/icons/Camera.d.ts +9 -0
  330. package/lib/typescript/src/Icon/icons/Camera.d.ts.map +1 -0
  331. package/lib/typescript/src/Icon/icons/Check.d.ts +6 -0
  332. package/lib/typescript/src/Icon/icons/Check.d.ts.map +1 -0
  333. package/lib/typescript/src/Icon/icons/Document.d.ts +9 -0
  334. package/lib/typescript/src/Icon/icons/Document.d.ts.map +1 -0
  335. package/lib/typescript/src/Icon/icons/Download.d.ts +9 -0
  336. package/lib/typescript/src/Icon/icons/Download.d.ts.map +1 -0
  337. package/lib/typescript/src/Icon/icons/ExlmationMark.d.ts +9 -0
  338. package/lib/typescript/src/Icon/icons/ExlmationMark.d.ts.map +1 -0
  339. package/lib/typescript/src/Icon/icons/Eye.d.ts +9 -0
  340. package/lib/typescript/src/Icon/icons/Eye.d.ts.map +1 -0
  341. package/lib/typescript/src/Icon/icons/EyeOpen.d.ts +9 -0
  342. package/lib/typescript/src/Icon/icons/EyeOpen.d.ts.map +1 -0
  343. package/lib/typescript/src/Icon/icons/Filter.d.ts +9 -0
  344. package/lib/typescript/src/Icon/icons/Filter.d.ts.map +1 -0
  345. package/lib/typescript/src/Icon/icons/Home.d.ts +2 -0
  346. package/lib/typescript/src/Icon/icons/Home.d.ts.map +1 -0
  347. package/lib/typescript/src/Icon/icons/Image.d.ts +9 -0
  348. package/lib/typescript/src/Icon/icons/Image.d.ts.map +1 -0
  349. package/lib/typescript/src/Icon/icons/Pdf.d.ts +9 -0
  350. package/lib/typescript/src/Icon/icons/Pdf.d.ts.map +1 -0
  351. package/lib/typescript/src/Icon/icons/RadioButton.d.ts +9 -0
  352. package/lib/typescript/src/Icon/icons/RadioButton.d.ts.map +1 -0
  353. package/lib/typescript/src/Icon/icons/Search.d.ts +9 -0
  354. package/lib/typescript/src/Icon/icons/Search.d.ts.map +1 -0
  355. package/lib/typescript/src/Icon/icons/StickyNote.d.ts +9 -0
  356. package/lib/typescript/src/Icon/icons/StickyNote.d.ts.map +1 -0
  357. package/lib/typescript/src/Icon/icons/Times.d.ts +9 -0
  358. package/lib/typescript/src/Icon/icons/Times.d.ts.map +1 -0
  359. package/lib/typescript/src/Icon/icons/User.d.ts +9 -0
  360. package/lib/typescript/src/Icon/icons/User.d.ts.map +1 -0
  361. package/lib/typescript/src/Icon/icons/XCircle.d.ts +9 -0
  362. package/lib/typescript/src/Icon/icons/XCircle.d.ts.map +1 -0
  363. package/lib/typescript/src/Icon/index.d.ts +5 -0
  364. package/lib/typescript/src/Icon/index.d.ts.map +1 -0
  365. package/lib/typescript/src/Icon/type.d.ts +9 -0
  366. package/lib/typescript/src/Icon/type.d.ts.map +1 -0
  367. package/lib/typescript/src/Input/Input.d.ts +5 -0
  368. package/lib/typescript/src/Input/Input.d.ts.map +1 -0
  369. package/lib/typescript/src/Input/InputFile.d.ts +11 -0
  370. package/lib/typescript/src/Input/InputFile.d.ts.map +1 -0
  371. package/lib/typescript/src/Input/InputMonth.d.ts +2 -0
  372. package/lib/typescript/src/Input/InputMonth.d.ts.map +1 -0
  373. package/lib/typescript/src/Input/InputNumber.d.ts +1 -0
  374. package/lib/typescript/src/Input/InputNumber.d.ts.map +1 -0
  375. package/lib/typescript/src/Input/InputOtp.d.ts +11 -0
  376. package/lib/typescript/src/Input/InputOtp.d.ts.map +1 -0
  377. package/lib/typescript/src/Input/InputPassword.d.ts +15 -0
  378. package/lib/typescript/src/Input/InputPassword.d.ts.map +1 -0
  379. package/lib/typescript/src/Input/InputSelect.d.ts +2 -0
  380. package/lib/typescript/src/Input/InputSelect.d.ts.map +1 -0
  381. package/lib/typescript/src/Input/Switch.d.ts +12 -0
  382. package/lib/typescript/src/Input/Switch.d.ts.map +1 -0
  383. package/lib/typescript/src/Input/TextArea.d.ts +3 -0
  384. package/lib/typescript/src/Input/TextArea.d.ts.map +1 -0
  385. package/lib/typescript/src/Input/type.d.ts +18 -0
  386. package/lib/typescript/src/Input/type.d.ts.map +1 -0
  387. package/lib/typescript/src/Label/Label.d.ts +12 -0
  388. package/lib/typescript/src/Label/Label.d.ts.map +1 -0
  389. package/lib/typescript/src/LabelForm/LabelForm.d.ts +4 -0
  390. package/lib/typescript/src/LabelForm/LabelForm.d.ts.map +1 -0
  391. package/lib/typescript/src/List/List.d.ts +3 -0
  392. package/lib/typescript/src/List/List.d.ts.map +1 -0
  393. package/lib/typescript/src/List/ListItem.d.ts +3 -0
  394. package/lib/typescript/src/List/ListItem.d.ts.map +1 -0
  395. package/lib/typescript/src/List/type.d.ts +14 -0
  396. package/lib/typescript/src/List/type.d.ts.map +1 -0
  397. package/lib/typescript/src/Loading/Loading.d.ts +10 -0
  398. package/lib/typescript/src/Loading/Loading.d.ts.map +1 -0
  399. package/lib/typescript/src/Modal/Modal.d.ts +18 -0
  400. package/lib/typescript/src/Modal/Modal.d.ts.map +1 -0
  401. package/lib/typescript/src/NativeRnKit.d.ts +7 -0
  402. package/lib/typescript/src/NativeRnKit.d.ts.map +1 -0
  403. package/lib/typescript/src/Provider/FooterProvider.d.ts +11 -0
  404. package/lib/typescript/src/Provider/FooterProvider.d.ts.map +1 -0
  405. package/lib/typescript/src/Provider/LayoutWithFooter.d.ts +5 -0
  406. package/lib/typescript/src/Provider/LayoutWithFooter.d.ts.map +1 -0
  407. package/lib/typescript/src/Provider/Provider.d.ts +15 -0
  408. package/lib/typescript/src/Provider/Provider.d.ts.map +1 -0
  409. package/lib/typescript/src/Provider/RequiredUpdateAppsProvider.d.ts +3 -0
  410. package/lib/typescript/src/Provider/RequiredUpdateAppsProvider.d.ts.map +1 -0
  411. package/lib/typescript/src/Provider/type.d.ts +7 -0
  412. package/lib/typescript/src/Provider/type.d.ts.map +1 -0
  413. package/lib/typescript/src/RadioButton/RadioButton.d.ts +15 -0
  414. package/lib/typescript/src/RadioButton/RadioButton.d.ts.map +1 -0
  415. package/lib/typescript/src/Select/Select.d.ts +3 -0
  416. package/lib/typescript/src/Select/Select.d.ts.map +1 -0
  417. package/lib/typescript/src/Select/type.d.ts +24 -0
  418. package/lib/typescript/src/Select/type.d.ts.map +1 -0
  419. package/lib/typescript/src/Step/Step.d.ts +4 -0
  420. package/lib/typescript/src/Step/Step.d.ts.map +1 -0
  421. package/lib/typescript/src/Step/StepItem.d.ts +4 -0
  422. package/lib/typescript/src/Step/StepItem.d.ts.map +1 -0
  423. package/lib/typescript/src/Step/type.d.ts +18 -0
  424. package/lib/typescript/src/Step/type.d.ts.map +1 -0
  425. package/lib/typescript/src/SwitchButton/SwitchButton.d.ts +2 -0
  426. package/lib/typescript/src/SwitchButton/SwitchButton.d.ts.map +1 -0
  427. package/lib/typescript/src/TextArea/TextArea.d.ts +1 -0
  428. package/lib/typescript/src/TextArea/TextArea.d.ts.map +1 -0
  429. package/lib/typescript/src/Theme/Theme.d.ts +29 -0
  430. package/lib/typescript/src/Theme/Theme.d.ts.map +1 -0
  431. package/lib/typescript/src/Timeline/Timeline.d.ts +6 -0
  432. package/lib/typescript/src/Timeline/Timeline.d.ts.map +1 -0
  433. package/lib/typescript/src/Timeline/TimelineItem.d.ts +15 -0
  434. package/lib/typescript/src/Timeline/TimelineItem.d.ts.map +1 -0
  435. package/lib/typescript/src/Toast/Toast.d.ts +14 -0
  436. package/lib/typescript/src/Toast/Toast.d.ts.map +1 -0
  437. package/lib/typescript/src/Toast/ToastContext.d.ts +17 -0
  438. package/lib/typescript/src/Toast/ToastContext.d.ts.map +1 -0
  439. package/lib/typescript/src/Typography/Typography.d.ts +5 -0
  440. package/lib/typescript/src/Typography/Typography.d.ts.map +1 -0
  441. package/lib/typescript/src/Typography/type.d.ts +19 -0
  442. package/lib/typescript/src/Typography/type.d.ts.map +1 -0
  443. package/lib/typescript/src/Ui/Card.d.ts +11 -0
  444. package/lib/typescript/src/Ui/Card.d.ts.map +1 -0
  445. package/lib/typescript/src/Ui/Center.d.ts +9 -0
  446. package/lib/typescript/src/Ui/Center.d.ts.map +1 -0
  447. package/lib/typescript/src/Ui/Col.d.ts +10 -0
  448. package/lib/typescript/src/Ui/Col.d.ts.map +1 -0
  449. package/lib/typescript/src/Ui/Container.d.ts +2 -0
  450. package/lib/typescript/src/Ui/Container.d.ts.map +1 -0
  451. package/lib/typescript/src/Ui/Devider.d.ts +3 -0
  452. package/lib/typescript/src/Ui/Devider.d.ts.map +1 -0
  453. package/lib/typescript/src/Ui/Footer.d.ts +9 -0
  454. package/lib/typescript/src/Ui/Footer.d.ts.map +1 -0
  455. package/lib/typescript/src/Ui/Gap.d.ts +6 -0
  456. package/lib/typescript/src/Ui/Gap.d.ts.map +1 -0
  457. package/lib/typescript/src/Ui/Grid.d.ts +9 -0
  458. package/lib/typescript/src/Ui/Grid.d.ts.map +1 -0
  459. package/lib/typescript/src/index.d.ts +59 -0
  460. package/lib/typescript/src/index.d.ts.map +1 -0
  461. package/package.json +172 -0
  462. package/src/Accordion/Accordion.tsx +38 -0
  463. package/src/Accordion/AccordionItem.tsx +9 -0
  464. package/src/Accordion/README.md +48 -0
  465. package/src/Accordion/type.tsx +19 -0
  466. package/src/Alert/Alert.tsx +141 -0
  467. package/src/Alert/README.md +68 -0
  468. package/src/Avatar/Avatar.tsx +68 -0
  469. package/src/Avatar/AvatarGroup.tsx +135 -0
  470. package/src/Avatar/README_AVATAR.md +57 -0
  471. package/src/Avatar/README_AVATARGROUP.md +58 -0
  472. package/src/Avatar/type.tsx +17 -0
  473. package/src/Badge/Badge.tsx +135 -0
  474. package/src/Badge/README.md +64 -0
  475. package/src/Badge/type.tsx +0 -0
  476. package/src/BottomSheet/BottomSheet.tsx +259 -0
  477. package/src/BottomSheet/README.md +64 -0
  478. package/src/BottomSheet/type.tsx +15 -0
  479. package/src/Button/Button.tsx +195 -0
  480. package/src/Button/README.md +94 -0
  481. package/src/Button/type.tsx +329 -0
  482. package/src/Calendar/Calendar.tsx +382 -0
  483. package/src/Calendar/CalendarPropsType.tsx +60 -0
  484. package/src/Calendar/README.md +73 -0
  485. package/src/CheckBox/CheckBox.tsx +80 -0
  486. package/src/CheckBox/CheckBoxList.tsx +64 -0
  487. package/src/CheckBox/README_CHECKBOX.md +46 -0
  488. package/src/CheckBox/README_CHECKBOXLIST.md +41 -0
  489. package/src/Chip/Chip.tsx +134 -0
  490. package/src/Chip/ChipItem.tsx +124 -0
  491. package/src/Chip/README.md +89 -0
  492. package/src/Chip/type.tsx +152 -0
  493. package/src/Color/Color.tsx +133 -0
  494. package/src/Color/README.md +54 -0
  495. package/src/Color/type.tsx +9 -0
  496. package/src/DatePicker/DatePicker.tsx +78 -0
  497. package/src/DatePicker/MonthPicker.tsx +204 -0
  498. package/src/DatePicker/README.md +51 -0
  499. package/src/DatePicker/TimePicker.tsx +234 -0
  500. package/src/DatePicker/YearPicker.tsx +238 -0
  501. package/src/DatePicker/helpers.tsx +53 -0
  502. package/src/Drawing/Drawing.tsx +23 -0
  503. package/src/DropDown/DropDown.tsx +136 -0
  504. package/src/DropDown/type.tsx +9 -0
  505. package/src/FileView/Image.tsx +5 -0
  506. package/src/FileView/PdfView.tsx +33 -0
  507. package/src/Icon/Icon.tsx +76 -0
  508. package/src/Icon/icons/AirPlane.tsx +19 -0
  509. package/src/Icon/icons/ArrowBackAlt.tsx +23 -0
  510. package/src/Icon/icons/ArrowDown.tsx +19 -0
  511. package/src/Icon/icons/ArrowForwardAlt.tsx +23 -0
  512. package/src/Icon/icons/ArrowLeft.tsx +19 -0
  513. package/src/Icon/icons/ArrowRight.tsx +19 -0
  514. package/src/Icon/icons/ArrowUp.tsx +19 -0
  515. package/src/Icon/icons/Calendar.tsx +19 -0
  516. package/src/Icon/icons/Camera.tsx +19 -0
  517. package/src/Icon/icons/Check.tsx +15 -0
  518. package/src/Icon/icons/Document.tsx +19 -0
  519. package/src/Icon/icons/Download.tsx +19 -0
  520. package/src/Icon/icons/ExlmationMark.tsx +23 -0
  521. package/src/Icon/icons/Eye.tsx +19 -0
  522. package/src/Icon/icons/EyeOpen.tsx +19 -0
  523. package/src/Icon/icons/Filter.tsx +19 -0
  524. package/src/Icon/icons/Home.tsx +5 -0
  525. package/src/Icon/icons/Image.tsx +19 -0
  526. package/src/Icon/icons/Pdf.tsx +19 -0
  527. package/src/Icon/icons/RadioButton.tsx +22 -0
  528. package/src/Icon/icons/Search.tsx +19 -0
  529. package/src/Icon/icons/StickyNote.tsx +19 -0
  530. package/src/Icon/icons/Times.tsx +19 -0
  531. package/src/Icon/icons/User.tsx +19 -0
  532. package/src/Icon/icons/XCircle.tsx +19 -0
  533. package/src/Icon/index.tsx +5 -0
  534. package/src/Icon/type.tsx +37 -0
  535. package/src/Input/Input.md +51 -0
  536. package/src/Input/Input.tsx +134 -0
  537. package/src/Input/InputFile.tsx +320 -0
  538. package/src/Input/InputMonth.tsx +1 -0
  539. package/src/Input/InputNumber.tsx +0 -0
  540. package/src/Input/InputOtp.tsx +96 -0
  541. package/src/Input/InputPassword.tsx +31 -0
  542. package/src/Input/InputSelect.tsx +5 -0
  543. package/src/Input/Switch.tsx +111 -0
  544. package/src/Input/TextArea.tsx +67 -0
  545. package/src/Input/assets/Ilustrasi.svg +14 -0
  546. package/src/Input/assets/input-file.png +0 -0
  547. package/src/Input/type.tsx +19 -0
  548. package/src/Label/Label.tsx +119 -0
  549. package/src/LabelForm/LabelForm.tsx +12 -0
  550. package/src/List/List.tsx +31 -0
  551. package/src/List/ListItem.tsx +34 -0
  552. package/src/List/type.tsx +14 -0
  553. package/src/Loading/Loading.tsx +56 -0
  554. package/src/Modal/Modal.tsx +179 -0
  555. package/src/NativeRnKit.ts +8 -0
  556. package/src/Provider/FooterProvider.tsx +26 -0
  557. package/src/Provider/LayoutWithFooter.tsx +27 -0
  558. package/src/Provider/Provider.tsx +53 -0
  559. package/src/Provider/RequiredUpdateAppsProvider.tsx +58 -0
  560. package/src/Provider/type.tsx +6 -0
  561. package/src/RadioButton/README.md +43 -0
  562. package/src/RadioButton/RadioButton.tsx +119 -0
  563. package/src/Select/README.md +78 -0
  564. package/src/Select/README_Select.md +78 -0
  565. package/src/Select/Select.tsx +115 -0
  566. package/src/Select/type.tsx +30 -0
  567. package/src/Step/Step.tsx +92 -0
  568. package/src/Step/StepItem.tsx +86 -0
  569. package/src/Step/type.tsx +18 -0
  570. package/src/SwitchButton/SwitchButton.tsx +5 -0
  571. package/src/TextArea/TextArea.tsx +0 -0
  572. package/src/Theme/Theme.tsx +28 -0
  573. package/src/Timeline/Timeline.tsx +9 -0
  574. package/src/Timeline/TimelineItem.tsx +63 -0
  575. package/src/Toast/Toast.tsx +179 -0
  576. package/src/Toast/ToastContext.tsx +51 -0
  577. package/src/Typography/README.md +71 -0
  578. package/src/Typography/Typography.tsx +44 -0
  579. package/src/Typography/type.tsx +60 -0
  580. package/src/Ui/Card.tsx +70 -0
  581. package/src/Ui/Center.tsx +20 -0
  582. package/src/Ui/Col.tsx +17 -0
  583. package/src/Ui/Container.tsx +12 -0
  584. package/src/Ui/Devider.tsx +15 -0
  585. package/src/Ui/Footer.tsx +37 -0
  586. package/src/Ui/Gap.tsx +8 -0
  587. package/src/Ui/Grid.tsx +36 -0
  588. package/src/index.tsx +68 -0
@@ -0,0 +1,238 @@
1
+ import { useState, useCallback, useMemo } from 'react';
2
+ import { View, FlatList, StyleSheet, TouchableOpacity } from 'react-native';
3
+ import BottomSheet from '../BottomSheet/BottomSheet';
4
+ import Typography from '../Typography/Typography';
5
+ import Button from '../Button/Button';
6
+ import Color from '../Color/Color';
7
+ import Icon from '../Icon';
8
+
9
+ type PickerMode = 'single' | 'range' | 'multiple';
10
+
11
+ interface YearPickerProps {
12
+ isOpen: boolean;
13
+ onClose?: () => void;
14
+ onChange?: (
15
+ value: number[] | { startDate: number | null; endDate: number | null }
16
+ ) => void;
17
+ mode?: PickerMode;
18
+ }
19
+
20
+ export default function YearPicker({
21
+ isOpen,
22
+ onClose,
23
+ onChange,
24
+ mode = 'single',
25
+ }: YearPickerProps) {
26
+ const currentYear = new Date().getFullYear();
27
+ const pageSize = 9;
28
+ const [rangeValue, setRangeValue] = useState<{
29
+ startDate: number | null;
30
+ endDate: number | null;
31
+ }>({ startDate: null, endDate: null });
32
+ const [multipleValue, setMultipleValue] = useState<number[]>([]);
33
+ const [singleValue, setSingleValue] = useState<number | null>(null);
34
+
35
+ const years = useMemo(() => {
36
+ const start = currentYear - 60;
37
+ const total = 121;
38
+ return Array.from({ length: total }, (_, i) => start + i);
39
+ }, [currentYear]);
40
+
41
+ const initialPageIndex = useMemo(() => {
42
+ const index = years.findIndex((y) => y === currentYear);
43
+ return Math.floor(index / pageSize);
44
+ }, [years, currentYear]);
45
+
46
+ const [pageIndex, setPageIndex] = useState(initialPageIndex);
47
+
48
+ const pageYears = useMemo(() => {
49
+ const start = pageIndex * pageSize;
50
+ return years.slice(start, start + pageSize);
51
+ }, [years, pageIndex]);
52
+
53
+ const handleSelectYear = useCallback(
54
+ (year: number) => {
55
+ if (mode === 'single') {
56
+ setSingleValue(year);
57
+ } else if (mode === 'range') {
58
+ if (
59
+ rangeValue.startDate === null ||
60
+ (rangeValue.startDate !== null && rangeValue.endDate !== null)
61
+ ) {
62
+ setRangeValue({ startDate: year, endDate: null });
63
+ } else if (year < rangeValue.startDate) {
64
+ setRangeValue({ startDate: year, endDate: rangeValue.startDate });
65
+ } else {
66
+ setRangeValue({ startDate: rangeValue.startDate, endDate: year });
67
+ }
68
+ } else if (mode === 'multiple') {
69
+ setMultipleValue((prev) =>
70
+ prev.includes(year) ? prev.filter((y) => y !== year) : [...prev, year]
71
+ );
72
+ }
73
+ },
74
+ [mode, rangeValue]
75
+ );
76
+
77
+ const isSelected = (year: number) => {
78
+ if (mode === 'single') return year === singleValue;
79
+ if (mode === 'range') {
80
+ const { startDate, endDate } = rangeValue;
81
+ return (
82
+ (startDate === year && endDate === null) ||
83
+ (startDate !== null &&
84
+ endDate !== null &&
85
+ year >= startDate &&
86
+ year <= endDate)
87
+ );
88
+ }
89
+ if (mode === 'multiple') return multipleValue.includes(year);
90
+ return false;
91
+ };
92
+
93
+ const handleSubmit = () => {
94
+ if (mode === 'single') {
95
+ onChange?.(singleValue !== null ? [singleValue] : []);
96
+ } else if (mode === 'range') {
97
+ onChange?.(rangeValue);
98
+ } else {
99
+ onChange?.(multipleValue);
100
+ }
101
+ onClose?.();
102
+ };
103
+
104
+ return (
105
+ <BottomSheet
106
+ isOpen={isOpen}
107
+ onClose={onClose}
108
+ footer={
109
+ <View style={styles.containerBottomSheetFooter}>
110
+ <View style={styles.flex1}>
111
+ <Button
112
+ title="Batal"
113
+ variant="tertiary"
114
+ size="medium"
115
+ color="primary"
116
+ onPress={onClose}
117
+ />
118
+ </View>
119
+ <View style={styles.flex1}>
120
+ <Button
121
+ title="Pilih"
122
+ color="primary"
123
+ size="medium"
124
+ onPress={handleSubmit}
125
+ />
126
+ </View>
127
+ </View>
128
+ }
129
+ >
130
+ <View style={styles.header}>
131
+ <TouchableOpacity
132
+ style={styles.buttonNav}
133
+ onPress={() => setPageIndex((prev) => Math.max(prev - 1, 0))}
134
+ disabled={pageIndex === 0}
135
+ >
136
+ <Icon name="ArrowLeft" color={Color.base.white100} size={10} />
137
+ </TouchableOpacity>
138
+ <Typography variant="t1" weight="semibold" color={Color.gray[900]}>
139
+ Pilih Tahun
140
+ </Typography>
141
+ <TouchableOpacity
142
+ style={styles.buttonNav}
143
+ onPress={() =>
144
+ setPageIndex((prev) =>
145
+ (prev + 1) * pageSize < years.length ? prev + 1 : prev
146
+ )
147
+ }
148
+ disabled={(pageIndex + 1) * pageSize >= years.length}
149
+ >
150
+ <Icon name="ArrowRight" color={Color.base.white100} size={10} />
151
+ </TouchableOpacity>
152
+ </View>
153
+
154
+ <View style={styles.container}>
155
+ <FlatList
156
+ data={pageYears}
157
+ numColumns={3}
158
+ keyExtractor={(item) => item.toString()}
159
+ contentContainerStyle={styles.yearList}
160
+ renderItem={({ item }) => {
161
+ const selected = isSelected(item);
162
+ return (
163
+ <View style={styles.yearItem}>
164
+ <TouchableOpacity
165
+ onPress={() => handleSelectYear(item)}
166
+ style={[
167
+ styles.option,
168
+ selected ? styles.optionSelected : null,
169
+ ]}
170
+ >
171
+ <Typography
172
+ variant="p2"
173
+ center
174
+ weight="semibold"
175
+ color={selected ? Color.gray[900] : Color.gray[700]}
176
+ >
177
+ {item}
178
+ </Typography>
179
+ </TouchableOpacity>
180
+ </View>
181
+ );
182
+ }}
183
+ />
184
+ </View>
185
+ </BottomSheet>
186
+ );
187
+ }
188
+
189
+ const styles = StyleSheet.create({
190
+ container: {
191
+ gap: 10,
192
+ },
193
+ yearList: {
194
+ paddingBottom: 12,
195
+ },
196
+ yearItem: {
197
+ width: '30%',
198
+ margin: '1.66%',
199
+ },
200
+ pagination: {
201
+ marginTop: 8,
202
+ flexDirection: 'row',
203
+ justifyContent: 'space-between',
204
+ alignItems: 'center',
205
+ gap: 8,
206
+ },
207
+ header: {
208
+ flexDirection: 'row',
209
+ justifyContent: 'space-between',
210
+ alignItems: 'center',
211
+ marginBottom: 10,
212
+ },
213
+ buttonNav: {
214
+ backgroundColor: Color.gray[500],
215
+ borderRadius: 8,
216
+ padding: 8,
217
+ },
218
+ containerBottomSheetFooter: {
219
+ flexDirection: 'row',
220
+ flex: 1,
221
+ gap: 12,
222
+ },
223
+ flex1: {
224
+ flex: 1,
225
+ },
226
+ option: {
227
+ gap: 8,
228
+ paddingVertical: 8,
229
+ paddingHorizontal: 12,
230
+ borderWidth: 1,
231
+ borderRadius: 8,
232
+ borderColor: Color.base.white100,
233
+ },
234
+ optionSelected: {
235
+ backgroundColor: Color.primary[50],
236
+ borderColor: Color.primary[300],
237
+ },
238
+ });
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Menghasilkan array tahun dalam format label/value untuk dropdown.
3
+ * @param startYear Tahun awal (misal: 2020)
4
+ * @param endYear Tahun akhir (misal: 2030)
5
+ * @param pageIndex Indeks halaman
6
+ * @param pageSize Jumlah item per halaman
7
+ * @returns Array objek { label, value }
8
+ */
9
+ export function generateYearOptions(
10
+ startYear: number,
11
+ endYear: number,
12
+ pageIndex: number,
13
+ pageSize: number
14
+ ): { label: string; value: string }[] {
15
+ const allYears = Array.from(
16
+ { length: endYear - startYear + 1 },
17
+ (_, i) => startYear + i
18
+ );
19
+ const paginatedYears = allYears.slice(
20
+ pageIndex * pageSize,
21
+ (pageIndex + 1) * pageSize
22
+ );
23
+ return paginatedYears.map((year) => ({
24
+ label: year.toString(),
25
+ value: year.toString(),
26
+ }));
27
+ }
28
+
29
+ /**
30
+ * Menghasilkan array bulan dalam format label/value untuk dropdown.
31
+ * @returns Array objek { label, value } dengan bulan 0–11
32
+ */
33
+ export const generateMonthOptions = (): { label: string; value: number }[] => {
34
+ const monthNames = [
35
+ 'Jan',
36
+ 'Feb',
37
+ 'Mar',
38
+ 'Apr',
39
+ 'Mei',
40
+ 'Jun',
41
+ 'Jul',
42
+ 'Agu',
43
+ 'Sep',
44
+ 'Okt',
45
+ 'Nov',
46
+ 'Des',
47
+ ] as const;
48
+
49
+ return monthNames.map((name, index) => ({
50
+ label: name,
51
+ value: index,
52
+ }));
53
+ };
@@ -0,0 +1,23 @@
1
+ import { StyleSheet, View, Text } from 'react-native';
2
+
3
+ export default function Drawing() {
4
+ return (
5
+ <View style={styles.container}>
6
+ <Text>Sedang di bangun</Text>
7
+ </View>
8
+ );
9
+ }
10
+
11
+ const styles = StyleSheet.create({
12
+ container: {
13
+ flex: 1,
14
+ },
15
+ preview: {
16
+ width: 335,
17
+ height: 114,
18
+ backgroundColor: '#F8F8F8',
19
+ justifyContent: 'center',
20
+ alignItems: 'center',
21
+ marginTop: 15,
22
+ },
23
+ });
@@ -0,0 +1,136 @@
1
+ import { useState, useRef } from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ TouchableOpacity,
6
+ StyleSheet,
7
+ ScrollView,
8
+ useWindowDimensions,
9
+ findNodeHandle,
10
+ UIManager,
11
+ } from 'react-native';
12
+ import Color from '../Color/Color';
13
+ import type { DropDownProps } from './type';
14
+ import type { ChipOptionProps } from '../Chip/type';
15
+
16
+ const Dropdown = ({
17
+ options,
18
+ maxHeight = 200,
19
+ onSelect,
20
+ renderButton,
21
+ }: DropDownProps) => {
22
+ const [isOpen, setIsOpen] = useState(false);
23
+ const [selected, setSelected] = useState<string | number>();
24
+ const [dropdownPosition, setDropdownPosition] = useState<'left' | 'right'>(
25
+ 'left'
26
+ );
27
+
28
+ const buttonRef = useRef<View>(null);
29
+ const windowWidth = useWindowDimensions().width;
30
+
31
+ const handleToggle = () => {
32
+ if (!isOpen) {
33
+ const handle = findNodeHandle(buttonRef.current);
34
+ if (handle) {
35
+ UIManager.measureInWindow(handle, (x, _y, width, _height) => {
36
+ const middle = windowWidth / 2;
37
+ setDropdownPosition(x + width / 2 > middle ? 'right' : 'left');
38
+ setIsOpen(true);
39
+ });
40
+ }
41
+ } else {
42
+ setIsOpen(false);
43
+ }
44
+ };
45
+
46
+ const handlePressOption = (value: ChipOptionProps) => {
47
+ setSelected(value.value);
48
+ setIsOpen(false);
49
+ onSelect?.(value.value);
50
+ };
51
+
52
+ return (
53
+ <View style={styles.container}>
54
+ <TouchableOpacity
55
+ ref={buttonRef}
56
+ style={styles.dropdownButton}
57
+ onPress={handleToggle}
58
+ >
59
+ {renderButton ? (
60
+ renderButton
61
+ ) : (
62
+ <Text>{selected || 'Select an option'}</Text>
63
+ )}
64
+ </TouchableOpacity>
65
+
66
+ {isOpen && (
67
+ <View
68
+ style={[
69
+ styles.dropdownList,
70
+ dropdownPosition === 'left' ? styles.left : styles.right,
71
+ ]}
72
+ >
73
+ <ScrollView nestedScrollEnabled style={{ maxHeight }}>
74
+ {options.map((item, index) => (
75
+ <TouchableOpacity
76
+ key={index}
77
+ onPress={() => handlePressOption(item)}
78
+ style={[
79
+ styles.option,
80
+ selected === item.value ? styles.optionSelected : null,
81
+ ]}
82
+ >
83
+ <Text>{item.label}</Text>
84
+ </TouchableOpacity>
85
+ ))}
86
+ </ScrollView>
87
+ </View>
88
+ )}
89
+ </View>
90
+ );
91
+ };
92
+
93
+ export default Dropdown;
94
+
95
+ const styles = StyleSheet.create({
96
+ container: {
97
+ // width: 200, // or flexible
98
+ },
99
+ dropdownButton: {
100
+ // borderWidth: 1,
101
+ // borderColor: '#ccc',
102
+ // padding: 12,
103
+ // borderRadius: 6,
104
+ // backgroundColor: '#fff',
105
+ },
106
+ dropdownList: {
107
+ position: 'absolute',
108
+ marginTop: 18,
109
+ padding: 8,
110
+ zIndex: 9999,
111
+ gap: 4,
112
+ borderWidth: 1,
113
+ borderColor: Color.gray[50],
114
+ borderRadius: 8,
115
+ backgroundColor: Color.base.white100,
116
+ width: 100,
117
+ },
118
+ option: {
119
+ gap: 8,
120
+ paddingVertical: 8,
121
+ paddingHorizontal: 12,
122
+ borderWidth: 1,
123
+ borderRadius: 8,
124
+ borderColor: Color.base.white100,
125
+ },
126
+ optionSelected: {
127
+ backgroundColor: Color.primary[50],
128
+ borderColor: Color.primary[300],
129
+ },
130
+ left: {
131
+ left: 0,
132
+ },
133
+ right: {
134
+ right: 0,
135
+ },
136
+ });
@@ -0,0 +1,9 @@
1
+ import type { ChipOptionProps } from '../Chip/type';
2
+ import React from 'react';
3
+
4
+ export interface DropDownProps {
5
+ options: ChipOptionProps[];
6
+ maxHeight?: number;
7
+ onSelect?: (value: string | number) => void;
8
+ renderButton?: React.ReactNode;
9
+ }
@@ -0,0 +1,5 @@
1
+ import { View } from 'react-native';
2
+
3
+ export default function Image() {
4
+ return <View></View>;
5
+ }
@@ -0,0 +1,33 @@
1
+ import { View, Dimensions, StyleSheet } from 'react-native';
2
+ import Pdf from 'react-native-pdf';
3
+
4
+ const PdfView = ({ source = null }) => {
5
+ if (!source) {
6
+ return <View></View>;
7
+ }
8
+ return (
9
+ <View style={styles.flex}>
10
+ <Pdf
11
+ source={source}
12
+ onLoadComplete={(numberOfPages) => {
13
+ console.log(`number of pages: ${numberOfPages}`);
14
+ }}
15
+ onPageChanged={(page) => {
16
+ console.log(`current page: ${page}`);
17
+ }}
18
+ onError={(error) => {
19
+ console.log(error);
20
+ }}
21
+ style={[styles.flex, { width: Dimensions.get('window').width }]}
22
+ />
23
+ </View>
24
+ );
25
+ };
26
+
27
+ export default PdfView;
28
+
29
+ const styles = StyleSheet.create({
30
+ flex: {
31
+ flex: 1,
32
+ },
33
+ });
@@ -0,0 +1,76 @@
1
+ import React from 'react';
2
+ import { type ViewStyle } from 'react-native';
3
+ import User from './icons/User';
4
+ import Eye from './icons/Eye';
5
+ import XCircle from './icons/XCircle';
6
+ import ArrowRight from './icons/ArrowRight';
7
+ import Document from './icons/Document';
8
+ import Calendar from './icons/Calendar';
9
+ import ExlamationMark from './icons/ExlmationMark';
10
+ import Downnload from './icons/Download';
11
+ import StickyNote from './icons/StickyNote';
12
+ import Pdf from './icons/Pdf';
13
+ import RadioButton from './icons/RadioButton';
14
+ import ArrowBackAlt from './icons/ArrowBackAlt';
15
+ import ArrowForwardAlt from './icons/ArrowForwardAlt';
16
+ import Check from './icons/Check';
17
+ import Filter from './icons/Filter';
18
+ import AirPlane from './icons/AirPlane';
19
+ import Camera from './icons/Camera';
20
+ import Image from './icons/Image';
21
+ import type { IconNameProps, IconProps } from './type';
22
+ import Times from './icons/Times';
23
+ import ArrowDown from './icons/ArrowDown';
24
+ import ArrowUp from './icons/ArrowUp';
25
+ import Search from './icons/Search';
26
+ import Home from './icons/Home';
27
+ import ArrowLeft from './icons/ArrowLeft';
28
+ import EyeOpen from './icons/EyeOpen';
29
+
30
+ const icons: Record<
31
+ IconNameProps,
32
+ React.FC<{ size: number; color: string; style?: ViewStyle }>
33
+ > = {
34
+ 'Home': Home,
35
+ 'Search': Search,
36
+ 'User': User,
37
+ 'Eye': Eye,
38
+ 'EyeOpen': EyeOpen,
39
+ 'ArrowRight': ArrowRight,
40
+ 'ArrowLeft': ArrowLeft,
41
+ 'Document': Document,
42
+ 'Calendar': Calendar,
43
+ 'ExlamationMark': ExlamationMark,
44
+ 'Download': Downnload,
45
+ 'x-circle': XCircle,
46
+ 'StickyNote': StickyNote,
47
+ 'RadioButton': RadioButton,
48
+ 'Pdf': Pdf,
49
+ 'ArrowBackAlt': ArrowBackAlt,
50
+ 'ArrowForwardAlt': ArrowForwardAlt,
51
+ 'Check': Check,
52
+ 'Filter': Filter,
53
+ 'AirPlane': AirPlane,
54
+ 'Camera': Camera,
55
+ 'Image': Image,
56
+ 'Times': Times,
57
+ 'ArrowDown': ArrowDown,
58
+ 'ArrowUp': ArrowUp,
59
+ };
60
+
61
+ const Icon: React.FC<IconProps> = ({
62
+ name,
63
+ size = 24,
64
+ color = '#000',
65
+ style,
66
+ }) => {
67
+ const SelectedIcon = icons[name];
68
+
69
+ if (!SelectedIcon) {
70
+ return null;
71
+ }
72
+
73
+ return <SelectedIcon size={size} color={color} style={style} />;
74
+ };
75
+
76
+ export default Icon;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ interface Props {
5
+ size?: number;
6
+ color?: string;
7
+ style?: object;
8
+ }
9
+
10
+ const AirPlane: React.FC<Props> = ({ size = 24, color = '#909090', style }) => (
11
+ <Svg width={size} height={size} viewBox="0 0 13 13" fill="none" style={style}>
12
+ <Path
13
+ d="M11.1401 0.891335C11.6288 0.989335 12.0108 1.37133 12.1088 1.86C12.1787 2.21014 12.1687 2.57155 12.0795 2.91728C11.9903 3.26301 11.8241 3.58413 11.5934 3.85667L9.75943 6.02467L11.0554 10.7787C11.0941 10.9204 11.0946 11.0699 11.0569 11.2119C11.0192 11.3539 10.9447 11.4834 10.8408 11.5873L9.97276 12.4553C9.89905 12.529 9.80925 12.5846 9.71042 12.6176C9.61159 12.6507 9.50643 12.6604 9.40322 12.6459C9.30002 12.6314 9.20158 12.5932 9.11566 12.5342C9.02974 12.4752 8.95869 12.3971 8.90809 12.306L6.91276 8.71467L4.74076 10.218V10.7427C4.74076 10.9633 4.65276 11.176 4.49676 11.332L3.37476 12.4533C3.2936 12.5346 3.19301 12.5937 3.08254 12.6252C2.97207 12.6566 2.8554 12.6592 2.74363 12.6328C2.63186 12.6064 2.52869 12.5519 2.44394 12.4744C2.35919 12.3969 2.29567 12.299 2.25943 12.19L1.89676 11.1027L0.809429 10.74C0.70045 10.7038 0.602553 10.6402 0.525046 10.5555C0.447539 10.4707 0.392997 10.3676 0.366607 10.2558C0.340217 10.144 0.342855 10.0274 0.374271 9.91689C0.405687 9.80642 0.464836 9.70583 0.546095 9.62467L1.66809 8.50267C1.74549 8.42529 1.83737 8.36392 1.93849 8.32205C2.03961 8.28019 2.14799 8.25865 2.25743 8.25867H2.78209L4.28543 6.08667L0.694095 4.09133C0.602985 4.04074 0.524862 3.96969 0.465878 3.88377C0.406895 3.79785 0.36866 3.69941 0.354184 3.59621C0.339708 3.493 0.349386 3.38784 0.382456 3.28901C0.415527 3.19018 0.471087 3.10038 0.544762 3.02667L1.41276 2.15867C1.51666 2.05477 1.64619 1.98019 1.7882 1.94249C1.93022 1.90479 2.07968 1.90531 2.22143 1.944L6.97476 3.24L9.14343 1.406C9.41597 1.17532 9.73708 1.00917 10.0828 0.919939C10.4285 0.830708 10.79 0.821368 11.1401 0.891335Z"
14
+ fill={color}
15
+ />
16
+ </Svg>
17
+ );
18
+
19
+ export default AirPlane;
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ interface Props {
5
+ size?: number;
6
+ color?: string;
7
+ style?: object;
8
+ }
9
+
10
+ const ArrowBackAlt: React.FC<Props> = ({
11
+ size = 24,
12
+ color = '#000',
13
+ style,
14
+ }) => (
15
+ <Svg width={size} height={size} viewBox="0 0 20 9" fill="none" style={style}>
16
+ <Path
17
+ d="M19.23 8.9729C19.153 8.9909 19.075 9 18.999 9C18.546 9 18.1361 8.68998 18.0271 8.22998C17.1591 4.56198 13.9071 2 10.1201 2C7.21912 2 4.57692 3.565 3.13892 6H5.00488C5.55788 6 6.00488 6.448 6.00488 7C6.00488 7.552 5.55788 8 5.00488 8H1C0.447 8 0 7.552 0 7V3C0 2.448 0.447 2 1 2C1.553 2 2 2.448 2 3V4.09009C3.876 1.57009 6.87212 0 10.1201 0C14.8391 0 18.8909 3.19502 19.9729 7.77002C20.1009 8.30702 19.768 8.8459 19.23 8.9729Z"
18
+ fill={color}
19
+ />
20
+ </Svg>
21
+ );
22
+
23
+ export default ArrowBackAlt;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ interface Props {
5
+ size?: number;
6
+ color?: string;
7
+ style?: object;
8
+ }
9
+
10
+ const ArrowDown: React.FC<Props> = ({ size = 24, color = '#000', style }) => (
11
+ <Svg width={size} height={size} viewBox="0 0 10 6" fill="none" style={style}>
12
+ <Path
13
+ d="M4.99893 5.49999C4.7856 5.49999 4.57224 5.41835 4.40974 5.25585L1.07641 1.92252C0.750573 1.59668 0.750573 1.06996 1.07641 0.744131C1.40224 0.418298 1.92896 0.418298 2.25479 0.744131L4.99893 3.48827L7.74307 0.744131C8.06891 0.418298 8.59562 0.418298 8.92146 0.744131C9.24729 1.06996 9.24729 1.59668 8.92146 1.92252L5.58812 5.25585C5.42562 5.41835 5.21227 5.49999 4.99893 5.49999Z"
14
+ fill={color}
15
+ />
16
+ </Svg>
17
+ );
18
+
19
+ export default ArrowDown;
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ interface Props {
5
+ size?: number;
6
+ color?: string;
7
+ style?: object;
8
+ }
9
+
10
+ const ArrowForwardAlt: React.FC<Props> = ({
11
+ size = 24,
12
+ color = '#000',
13
+ style,
14
+ }) => (
15
+ <Svg width={size} height={size} viewBox="0 0 20 9" fill="none" style={style}>
16
+ <Path
17
+ d="M20.0003 3.00098V7.00098C20.0003 7.55298 19.5533 8.00098 19.0003 8.00098H14.9954C14.4424 8.00098 13.9954 7.55298 13.9954 7.00098C13.9954 6.44898 14.4424 6.00098 14.9954 6.00098H16.8614C15.4234 3.56598 12.7812 2.00098 9.88017 2.00098C6.09317 2.00098 2.84119 4.56296 1.97319 8.23096C1.86519 8.69096 1.45427 9.00098 1.00127 9.00098C0.925266 9.00098 0.848309 8.99288 0.770309 8.97388C0.233309 8.84688 -0.0996342 8.30802 0.0283658 7.77002C1.11037 3.19502 5.16239 0 9.88139 0C13.1294 0 16.1253 1.57009 18.0013 4.09009V3.00098C18.0013 2.44898 18.4483 2.00098 19.0013 2.00098C19.5543 2.00098 20.0003 2.44898 20.0003 3.00098Z"
18
+ fill={color}
19
+ />
20
+ </Svg>
21
+ );
22
+
23
+ export default ArrowForwardAlt;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Svg, { Path } from 'react-native-svg';
3
+
4
+ interface Props {
5
+ size?: number;
6
+ color?: string;
7
+ style?: object;
8
+ }
9
+
10
+ const ArrowLeft: React.FC<Props> = ({ size = 24, color = '#000', style }) => (
11
+ <Svg width={size} height={size} viewBox="0 0 6 10" fill="none" style={style}>
12
+ <Path
13
+ d="M4.6669 9.16658C4.45357 9.16658 4.24021 9.08494 4.07771 8.92243L0.744375 5.5891C0.418542 5.26327 0.418542 4.73655 0.744375 4.41072L4.07771 1.07738C4.40354 0.751549 4.93026 0.751549 5.25609 1.07738C5.58193 1.40322 5.58193 1.92993 5.25609 2.25577L2.51195 4.99991L5.25609 7.74405C5.58193 8.06988 5.58193 8.5966 5.25609 8.92243C5.09359 9.08494 4.88023 9.16658 4.6669 9.16658Z"
14
+ fill={color}
15
+ />
16
+ </Svg>
17
+ );
18
+
19
+ export default ArrowLeft;