@herca/rn-kit 0.1.112 → 0.1.114

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 (517) hide show
  1. package/README.md +66 -0
  2. package/lib/module/Accordion/Accordion.js +4 -1
  3. package/lib/module/Accordion/Accordion.js.map +1 -1
  4. package/lib/module/Accordion/AccordionItem.js +3 -1
  5. package/lib/module/Accordion/AccordionItem.js.map +1 -1
  6. package/lib/module/Accordion/README.md +2 -0
  7. package/lib/module/Alert/Alert.js +3 -1
  8. package/lib/module/Alert/Alert.js.map +1 -1
  9. package/lib/module/Alert/README.md +1 -0
  10. package/lib/module/Avatar/Avatar.js +3 -1
  11. package/lib/module/Avatar/Avatar.js.map +1 -1
  12. package/lib/module/Avatar/AvatarGroup.js +3 -1
  13. package/lib/module/Avatar/AvatarGroup.js.map +1 -1
  14. package/lib/module/Avatar/README_AVATAR.md +1 -0
  15. package/lib/module/Avatar/README_AVATARGROUP.md +1 -0
  16. package/lib/module/Badge/Badge.js +4 -1
  17. package/lib/module/Badge/Badge.js.map +1 -1
  18. package/lib/module/Badge/README.md +1 -0
  19. package/lib/module/BadgeIcon/BadgeIcon.js +3 -1
  20. package/lib/module/BadgeIcon/BadgeIcon.js.map +1 -1
  21. package/lib/module/BadgeIcon/README.md +1 -0
  22. package/lib/module/BottomSheet/BottomSheet.js +17 -8
  23. package/lib/module/BottomSheet/BottomSheet.js.map +1 -1
  24. package/lib/module/BottomSheet/README.md +1 -0
  25. package/lib/module/Button/Button.js +3 -1
  26. package/lib/module/Button/Button.js.map +1 -1
  27. package/lib/module/Button/README.md +1 -0
  28. package/lib/module/Button/type.js.map +1 -1
  29. package/lib/module/Calendar/Calendar.js +9 -1
  30. package/lib/module/Calendar/Calendar.js.map +1 -1
  31. package/lib/module/Calendar/README.md +2 -0
  32. package/lib/module/CheckBox/CheckBox.js +8 -3
  33. package/lib/module/CheckBox/CheckBox.js.map +1 -1
  34. package/lib/module/CheckBox/CheckBoxList.js +7 -2
  35. package/lib/module/CheckBox/CheckBoxList.js.map +1 -1
  36. package/lib/module/CheckBox/README_CHECKBOX.md +1 -0
  37. package/lib/module/CheckBox/README_CHECKBOXLIST.md +1 -0
  38. package/lib/module/Chip/Chip.js +19 -6
  39. package/lib/module/Chip/Chip.js.map +1 -1
  40. package/lib/module/Chip/ChipItem.js +3 -1
  41. package/lib/module/Chip/ChipItem.js.map +1 -1
  42. package/lib/module/Chip/README.md +26 -2
  43. package/lib/module/Chip/README_CHIP_ITEM.md +1 -0
  44. package/lib/module/CounterButton/CounterButton.js +6 -1
  45. package/lib/module/CounterButton/CounterButton.js.map +1 -1
  46. package/lib/module/CounterButton/README.md +1 -0
  47. package/lib/module/DatePicker/DatePicker.js +13 -1
  48. package/lib/module/DatePicker/DatePicker.js.map +1 -1
  49. package/lib/module/DatePicker/MonthPicker.js +7 -1
  50. package/lib/module/DatePicker/MonthPicker.js.map +1 -1
  51. package/lib/module/DatePicker/README_DATEPICKER.md +1 -0
  52. package/lib/module/DatePicker/README_MONTHPICKER.md +1 -0
  53. package/lib/module/DatePicker/README_TIMEPICKER.md +1 -0
  54. package/lib/module/DatePicker/README_YEARPICKER.md +1 -0
  55. package/lib/module/DatePicker/TimePicker.js +8 -1
  56. package/lib/module/DatePicker/TimePicker.js.map +1 -1
  57. package/lib/module/DatePicker/YearPicker.js +13 -4
  58. package/lib/module/DatePicker/YearPicker.js.map +1 -1
  59. package/lib/module/Drawing/Drawing.js +3 -1
  60. package/lib/module/Drawing/Drawing.js.map +1 -1
  61. package/lib/module/Drawing/README.md +1 -0
  62. package/lib/module/DropDown/DropDown.js +6 -1
  63. package/lib/module/DropDown/DropDown.js.map +1 -1
  64. package/lib/module/DropDown/README.md +1 -0
  65. package/lib/module/FileView/PDF_VIEW_README.md +11 -0
  66. package/lib/module/FileView/PdfView.js +5 -1
  67. package/lib/module/FileView/PdfView.js.map +1 -1
  68. package/lib/module/Icon/Icon.js +19 -3
  69. package/lib/module/Icon/Icon.js.map +1 -1
  70. package/lib/module/Icon/README.md +1 -0
  71. package/lib/module/Icon/icons/FileListStar.js +22 -0
  72. package/lib/module/Icon/icons/FileListStar.js.map +1 -0
  73. package/lib/module/Icon/icons/TextFill.js +22 -0
  74. package/lib/module/Icon/icons/TextFill.js.map +1 -0
  75. package/lib/module/Input/Input.js +7 -0
  76. package/lib/module/Input/Input.js.map +1 -1
  77. package/lib/module/Input/InputDate.js +35 -8
  78. package/lib/module/Input/InputDate.js.map +1 -1
  79. package/lib/module/Input/InputFile.js +28 -11
  80. package/lib/module/Input/InputFile.js.map +1 -1
  81. package/lib/module/Input/InputMonth.js +111 -1
  82. package/lib/module/Input/InputMonth.js.map +1 -1
  83. package/lib/module/Input/InputOtp.js +6 -1
  84. package/lib/module/Input/InputOtp.js.map +1 -1
  85. package/lib/module/Input/InputPassword.js +5 -1
  86. package/lib/module/Input/InputPassword.js.map +1 -1
  87. package/lib/module/Input/InputSelect.js +21 -2
  88. package/lib/module/Input/InputSelect.js.map +1 -1
  89. package/lib/module/Input/InputYear.js +94 -0
  90. package/lib/module/Input/InputYear.js.map +1 -0
  91. package/lib/module/Input/README_INPUT.md +1 -0
  92. package/lib/module/Input/README_INPUT_DATE.md +18 -0
  93. package/lib/module/Input/README_INPUT_FILE.md +1 -0
  94. package/lib/module/Input/README_INPUT_MONTH.md +132 -0
  95. package/lib/module/Input/README_INPUT_OTP.md +1 -0
  96. package/lib/module/Input/README_INPUT_SELECT.md +1 -0
  97. package/lib/module/Input/README_INPUT_YEAR.md +115 -0
  98. package/lib/module/Input/Switch.js +6 -2
  99. package/lib/module/Input/Switch.js.map +1 -1
  100. package/lib/module/Input/TextArea.js +5 -0
  101. package/lib/module/Input/TextArea.js.map +1 -1
  102. package/lib/module/Input/partials/InputFile/CardTrigger.js +3 -1
  103. package/lib/module/Input/partials/InputFile/CardTrigger.js.map +1 -1
  104. package/lib/module/Input/partials/InputFile/CardTriggerSmall.js +5 -2
  105. package/lib/module/Input/partials/InputFile/CardTriggerSmall.js.map +1 -1
  106. package/lib/module/Input/partials/InputFile/ItemPreview.js +6 -1
  107. package/lib/module/Input/partials/InputFile/ItemPreview.js.map +1 -1
  108. package/lib/module/Input/partials/PickerField.js +114 -0
  109. package/lib/module/Input/partials/PickerField.js.map +1 -0
  110. package/lib/module/Label/Label.js +3 -1
  111. package/lib/module/Label/Label.js.map +1 -1
  112. package/lib/module/Label/README.md +1 -0
  113. package/lib/module/LabelForm/LabelForm.js +3 -1
  114. package/lib/module/LabelForm/LabelForm.js.map +1 -1
  115. package/lib/module/List/List.js +3 -1
  116. package/lib/module/List/List.js.map +1 -1
  117. package/lib/module/List/ListItem.js +3 -1
  118. package/lib/module/List/ListItem.js.map +1 -1
  119. package/lib/module/List/README.md +2 -0
  120. package/lib/module/Loading/Loading.js +3 -1
  121. package/lib/module/Loading/Loading.js.map +1 -1
  122. package/lib/module/Modal/Modal.js +8 -2
  123. package/lib/module/Modal/Modal.js.map +1 -1
  124. package/lib/module/Modal/README.md +1 -0
  125. package/lib/module/Provider/RequiredUpdateAppsProvider.js +10 -1
  126. package/lib/module/Provider/RequiredUpdateAppsProvider.js.map +1 -1
  127. package/lib/module/RadioButton/README.md +1 -0
  128. package/lib/module/RadioButton/RadioButton.js +7 -2
  129. package/lib/module/RadioButton/RadioButton.js.map +1 -1
  130. package/lib/module/Select/README.md +1 -0
  131. package/lib/module/Select/README_Select.md +1 -0
  132. package/lib/module/Select/Select.js +12 -3
  133. package/lib/module/Select/Select.js.map +1 -1
  134. package/lib/module/Skeleton/README.md +1 -0
  135. package/lib/module/Skeleton/Skeleton.js +3 -1
  136. package/lib/module/Skeleton/Skeleton.js.map +1 -1
  137. package/lib/module/Spinner/Spinner.js +3 -1
  138. package/lib/module/Spinner/Spinner.js.map +1 -1
  139. package/lib/module/Step/README.md +2 -0
  140. package/lib/module/Step/Step.js +3 -1
  141. package/lib/module/Step/Step.js.map +1 -1
  142. package/lib/module/Step/StepItem.js +4 -1
  143. package/lib/module/Step/StepItem.js.map +1 -1
  144. package/lib/module/Tab/README.md +1 -0
  145. package/lib/module/Tab/Tab.js +6 -1
  146. package/lib/module/Tab/Tab.js.map +1 -1
  147. package/lib/module/TextEditor/LinkSheet.js +84 -0
  148. package/lib/module/TextEditor/LinkSheet.js.map +1 -0
  149. package/lib/module/TextEditor/README.md +52 -2
  150. package/lib/module/TextEditor/TextEditor.js +77 -458
  151. package/lib/module/TextEditor/TextEditor.js.map +1 -1
  152. package/lib/module/TextEditor/Toolbar.js +71 -0
  153. package/lib/module/TextEditor/Toolbar.js.map +1 -0
  154. package/lib/module/TextEditor/editorDocument.js +235 -0
  155. package/lib/module/TextEditor/editorDocument.js.map +1 -0
  156. package/lib/module/TextEditor/formatState.js +186 -0
  157. package/lib/module/TextEditor/formatState.js.map +1 -0
  158. package/lib/module/TextEditor/toolbarButtons.js +81 -0
  159. package/lib/module/TextEditor/toolbarButtons.js.map +1 -0
  160. package/lib/module/TextEditor/types.js +2 -0
  161. package/lib/module/Timeline/README.md +2 -0
  162. package/lib/module/Timeline/Timeline.js +3 -1
  163. package/lib/module/Timeline/Timeline.js.map +1 -1
  164. package/lib/module/Timeline/TimelineItem.js +3 -1
  165. package/lib/module/Timeline/TimelineItem.js.map +1 -1
  166. package/lib/module/Toast/README.md +16 -0
  167. package/lib/module/Toast/Toast.js +6 -1
  168. package/lib/module/Toast/Toast.js.map +1 -1
  169. package/lib/module/Typography/README.md +1 -0
  170. package/lib/module/Typography/Typography.js +3 -1
  171. package/lib/module/Typography/Typography.js.map +1 -1
  172. package/lib/module/Typography/type.js.map +1 -1
  173. package/lib/module/Ui/Card.js +4 -1
  174. package/lib/module/Ui/Card.js.map +1 -1
  175. package/lib/module/Ui/Center.js +3 -1
  176. package/lib/module/Ui/Center.js.map +1 -1
  177. package/lib/module/Ui/Col.js +3 -1
  178. package/lib/module/Ui/Col.js.map +1 -1
  179. package/lib/module/Ui/Container.js +3 -1
  180. package/lib/module/Ui/Container.js.map +1 -1
  181. package/lib/module/Ui/Devider.js +4 -1
  182. package/lib/module/Ui/Devider.js.map +1 -1
  183. package/lib/module/Ui/Footer.js +4 -2
  184. package/lib/module/Ui/Footer.js.map +1 -1
  185. package/lib/module/Ui/Gap.js +3 -1
  186. package/lib/module/Ui/Gap.js.map +1 -1
  187. package/lib/module/Ui/Grid.js +3 -1
  188. package/lib/module/Ui/Grid.js.map +1 -1
  189. package/lib/module/Ui/README_CARD.md +1 -0
  190. package/lib/module/Ui/README_CONTAINER.md +1 -0
  191. package/lib/module/Ui/README_DEVIDER.md +5 -0
  192. package/lib/module/Ui/README_FOOTER.md +9 -0
  193. package/lib/module/Ui/README_VIEWINSETS.md +1 -0
  194. package/lib/module/function/README_DATE_FORMATTER.md +35 -0
  195. package/lib/module/function/dateFormatter.js +29 -0
  196. package/lib/module/function/dateFormatter.js.map +1 -1
  197. package/lib/module/helpers/getTestID.js +15 -0
  198. package/lib/module/helpers/getTestID.js.map +1 -0
  199. package/lib/module/index.js +2 -0
  200. package/lib/module/index.js.map +1 -1
  201. package/lib/typescript/src/Accordion/Accordion.d.ts +1 -1
  202. package/lib/typescript/src/Accordion/Accordion.d.ts.map +1 -1
  203. package/lib/typescript/src/Accordion/AccordionItem.d.ts +1 -1
  204. package/lib/typescript/src/Accordion/AccordionItem.d.ts.map +1 -1
  205. package/lib/typescript/src/Accordion/type.d.ts +2 -0
  206. package/lib/typescript/src/Accordion/type.d.ts.map +1 -1
  207. package/lib/typescript/src/Alert/Alert.d.ts +1 -0
  208. package/lib/typescript/src/Alert/Alert.d.ts.map +1 -1
  209. package/lib/typescript/src/Avatar/Avatar.d.ts.map +1 -1
  210. package/lib/typescript/src/Avatar/AvatarGroup.d.ts.map +1 -1
  211. package/lib/typescript/src/Avatar/type.d.ts +2 -0
  212. package/lib/typescript/src/Avatar/type.d.ts.map +1 -1
  213. package/lib/typescript/src/Badge/Badge.d.ts +1 -0
  214. package/lib/typescript/src/Badge/Badge.d.ts.map +1 -1
  215. package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts +1 -0
  216. package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts.map +1 -1
  217. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts +1 -1
  218. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts.map +1 -1
  219. package/lib/typescript/src/BottomSheet/type.d.ts +1 -0
  220. package/lib/typescript/src/BottomSheet/type.d.ts.map +1 -1
  221. package/lib/typescript/src/Button/Button.d.ts.map +1 -1
  222. package/lib/typescript/src/Button/type.d.ts +1 -0
  223. package/lib/typescript/src/Button/type.d.ts.map +1 -1
  224. package/lib/typescript/src/Calendar/Calendar.d.ts +1 -1
  225. package/lib/typescript/src/Calendar/Calendar.d.ts.map +1 -1
  226. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts +6 -0
  227. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts.map +1 -1
  228. package/lib/typescript/src/CheckBox/CheckBox.d.ts +1 -0
  229. package/lib/typescript/src/CheckBox/CheckBox.d.ts.map +1 -1
  230. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts +1 -0
  231. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts.map +1 -1
  232. package/lib/typescript/src/Chip/Chip.d.ts.map +1 -1
  233. package/lib/typescript/src/Chip/ChipItem.d.ts +1 -1
  234. package/lib/typescript/src/Chip/ChipItem.d.ts.map +1 -1
  235. package/lib/typescript/src/Chip/type.d.ts +2 -0
  236. package/lib/typescript/src/Chip/type.d.ts.map +1 -1
  237. package/lib/typescript/src/CounterButton/CounterButton.d.ts +1 -1
  238. package/lib/typescript/src/CounterButton/CounterButton.d.ts.map +1 -1
  239. package/lib/typescript/src/CounterButton/type.d.ts +1 -0
  240. package/lib/typescript/src/CounterButton/type.d.ts.map +1 -1
  241. package/lib/typescript/src/DatePicker/DatePicker.d.ts +2 -1
  242. package/lib/typescript/src/DatePicker/DatePicker.d.ts.map +1 -1
  243. package/lib/typescript/src/DatePicker/MonthPicker.d.ts +2 -1
  244. package/lib/typescript/src/DatePicker/MonthPicker.d.ts.map +1 -1
  245. package/lib/typescript/src/DatePicker/TimePicker.d.ts +2 -1
  246. package/lib/typescript/src/DatePicker/TimePicker.d.ts.map +1 -1
  247. package/lib/typescript/src/DatePicker/YearPicker.d.ts +5 -1
  248. package/lib/typescript/src/DatePicker/YearPicker.d.ts.map +1 -1
  249. package/lib/typescript/src/Drawing/Drawing.d.ts +2 -1
  250. package/lib/typescript/src/Drawing/Drawing.d.ts.map +1 -1
  251. package/lib/typescript/src/DropDown/DropDown.d.ts +1 -1
  252. package/lib/typescript/src/DropDown/DropDown.d.ts.map +1 -1
  253. package/lib/typescript/src/DropDown/type.d.ts +1 -0
  254. package/lib/typescript/src/DropDown/type.d.ts.map +1 -1
  255. package/lib/typescript/src/FileView/PdfView.d.ts +2 -1
  256. package/lib/typescript/src/FileView/PdfView.d.ts.map +1 -1
  257. package/lib/typescript/src/Icon/Icon.d.ts.map +1 -1
  258. package/lib/typescript/src/Icon/icons/FileListStar.d.ts +9 -0
  259. package/lib/typescript/src/Icon/icons/FileListStar.d.ts.map +1 -0
  260. package/lib/typescript/src/Icon/icons/TextFill.d.ts +9 -0
  261. package/lib/typescript/src/Icon/icons/TextFill.d.ts.map +1 -0
  262. package/lib/typescript/src/Icon/type.d.ts +2 -1
  263. package/lib/typescript/src/Icon/type.d.ts.map +1 -1
  264. package/lib/typescript/src/Input/Input.d.ts.map +1 -1
  265. package/lib/typescript/src/Input/InputDate.d.ts +6 -2
  266. package/lib/typescript/src/Input/InputDate.d.ts.map +1 -1
  267. package/lib/typescript/src/Input/InputFile.d.ts +1 -1
  268. package/lib/typescript/src/Input/InputFile.d.ts.map +1 -1
  269. package/lib/typescript/src/Input/InputMonth.d.ts +29 -1
  270. package/lib/typescript/src/Input/InputMonth.d.ts.map +1 -1
  271. package/lib/typescript/src/Input/InputOtp.d.ts +1 -0
  272. package/lib/typescript/src/Input/InputOtp.d.ts.map +1 -1
  273. package/lib/typescript/src/Input/InputPassword.d.ts +2 -1
  274. package/lib/typescript/src/Input/InputPassword.d.ts.map +1 -1
  275. package/lib/typescript/src/Input/InputSelect.d.ts +4 -2
  276. package/lib/typescript/src/Input/InputSelect.d.ts.map +1 -1
  277. package/lib/typescript/src/Input/InputYear.d.ts +34 -0
  278. package/lib/typescript/src/Input/InputYear.d.ts.map +1 -0
  279. package/lib/typescript/src/Input/Switch.d.ts +2 -1
  280. package/lib/typescript/src/Input/Switch.d.ts.map +1 -1
  281. package/lib/typescript/src/Input/TextArea.d.ts +1 -1
  282. package/lib/typescript/src/Input/TextArea.d.ts.map +1 -1
  283. package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts +2 -1
  284. package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts.map +1 -1
  285. package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts +2 -1
  286. package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts.map +1 -1
  287. package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts +2 -1
  288. package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts.map +1 -1
  289. package/lib/typescript/src/Input/partials/PickerField.d.ts +25 -0
  290. package/lib/typescript/src/Input/partials/PickerField.d.ts.map +1 -0
  291. package/lib/typescript/src/Input/type.d.ts +13 -0
  292. package/lib/typescript/src/Input/type.d.ts.map +1 -1
  293. package/lib/typescript/src/Label/Label.d.ts +2 -1
  294. package/lib/typescript/src/Label/Label.d.ts.map +1 -1
  295. package/lib/typescript/src/LabelForm/LabelForm.d.ts +2 -1
  296. package/lib/typescript/src/LabelForm/LabelForm.d.ts.map +1 -1
  297. package/lib/typescript/src/List/List.d.ts +1 -1
  298. package/lib/typescript/src/List/List.d.ts.map +1 -1
  299. package/lib/typescript/src/List/ListItem.d.ts +1 -1
  300. package/lib/typescript/src/List/ListItem.d.ts.map +1 -1
  301. package/lib/typescript/src/List/type.d.ts +2 -0
  302. package/lib/typescript/src/List/type.d.ts.map +1 -1
  303. package/lib/typescript/src/Loading/Loading.d.ts +1 -0
  304. package/lib/typescript/src/Loading/Loading.d.ts.map +1 -1
  305. package/lib/typescript/src/Modal/Modal.d.ts +1 -0
  306. package/lib/typescript/src/Modal/Modal.d.ts.map +1 -1
  307. package/lib/typescript/src/Provider/RequiredUpdateAppsProvider.d.ts.map +1 -1
  308. package/lib/typescript/src/RadioButton/RadioButton.d.ts +1 -0
  309. package/lib/typescript/src/RadioButton/RadioButton.d.ts.map +1 -1
  310. package/lib/typescript/src/Select/Select.d.ts +1 -1
  311. package/lib/typescript/src/Select/Select.d.ts.map +1 -1
  312. package/lib/typescript/src/Select/type.d.ts +1 -0
  313. package/lib/typescript/src/Select/type.d.ts.map +1 -1
  314. package/lib/typescript/src/Skeleton/Skeleton.d.ts.map +1 -1
  315. package/lib/typescript/src/Skeleton/type.d.ts +1 -0
  316. package/lib/typescript/src/Skeleton/type.d.ts.map +1 -1
  317. package/lib/typescript/src/Spinner/Spinner.d.ts +7 -4
  318. package/lib/typescript/src/Spinner/Spinner.d.ts.map +1 -1
  319. package/lib/typescript/src/Step/Step.d.ts +1 -1
  320. package/lib/typescript/src/Step/Step.d.ts.map +1 -1
  321. package/lib/typescript/src/Step/StepItem.d.ts +1 -1
  322. package/lib/typescript/src/Step/StepItem.d.ts.map +1 -1
  323. package/lib/typescript/src/Step/type.d.ts +2 -0
  324. package/lib/typescript/src/Step/type.d.ts.map +1 -1
  325. package/lib/typescript/src/Tab/Tab.d.ts.map +1 -1
  326. package/lib/typescript/src/Tab/type.d.ts +1 -0
  327. package/lib/typescript/src/Tab/type.d.ts.map +1 -1
  328. package/lib/typescript/src/TextEditor/LinkSheet.d.ts +26 -0
  329. package/lib/typescript/src/TextEditor/LinkSheet.d.ts.map +1 -0
  330. package/lib/typescript/src/TextEditor/TextEditor.d.ts +2 -19
  331. package/lib/typescript/src/TextEditor/TextEditor.d.ts.map +1 -1
  332. package/lib/typescript/src/TextEditor/Toolbar.d.ts +16 -0
  333. package/lib/typescript/src/TextEditor/Toolbar.d.ts.map +1 -0
  334. package/lib/typescript/src/TextEditor/editorDocument.d.ts +20 -0
  335. package/lib/typescript/src/TextEditor/editorDocument.d.ts.map +1 -0
  336. package/lib/typescript/src/TextEditor/formatState.d.ts +34 -0
  337. package/lib/typescript/src/TextEditor/formatState.d.ts.map +1 -0
  338. package/lib/typescript/src/TextEditor/toolbarButtons.d.ts +5 -0
  339. package/lib/typescript/src/TextEditor/toolbarButtons.d.ts.map +1 -0
  340. package/lib/typescript/src/TextEditor/types.d.ts +42 -0
  341. package/lib/typescript/src/TextEditor/types.d.ts.map +1 -1
  342. package/lib/typescript/src/Timeline/Timeline.d.ts +2 -1
  343. package/lib/typescript/src/Timeline/Timeline.d.ts.map +1 -1
  344. package/lib/typescript/src/Timeline/TimelineItem.d.ts +2 -1
  345. package/lib/typescript/src/Timeline/TimelineItem.d.ts.map +1 -1
  346. package/lib/typescript/src/Toast/Toast.d.ts +2 -1
  347. package/lib/typescript/src/Toast/Toast.d.ts.map +1 -1
  348. package/lib/typescript/src/Typography/Typography.d.ts.map +1 -1
  349. package/lib/typescript/src/Typography/type.d.ts +1 -0
  350. package/lib/typescript/src/Typography/type.d.ts.map +1 -1
  351. package/lib/typescript/src/Ui/Card.d.ts +2 -1
  352. package/lib/typescript/src/Ui/Card.d.ts.map +1 -1
  353. package/lib/typescript/src/Ui/Center.d.ts +2 -1
  354. package/lib/typescript/src/Ui/Center.d.ts.map +1 -1
  355. package/lib/typescript/src/Ui/Col.d.ts +1 -0
  356. package/lib/typescript/src/Ui/Col.d.ts.map +1 -1
  357. package/lib/typescript/src/Ui/Container.d.ts +2 -1
  358. package/lib/typescript/src/Ui/Container.d.ts.map +1 -1
  359. package/lib/typescript/src/Ui/Devider.d.ts +3 -1
  360. package/lib/typescript/src/Ui/Devider.d.ts.map +1 -1
  361. package/lib/typescript/src/Ui/Footer.d.ts +1 -0
  362. package/lib/typescript/src/Ui/Footer.d.ts.map +1 -1
  363. package/lib/typescript/src/Ui/Gap.d.ts +2 -1
  364. package/lib/typescript/src/Ui/Gap.d.ts.map +1 -1
  365. package/lib/typescript/src/Ui/Grid.d.ts +1 -0
  366. package/lib/typescript/src/Ui/Grid.d.ts.map +1 -1
  367. package/lib/typescript/src/function/dateFormatter.d.ts +11 -0
  368. package/lib/typescript/src/function/dateFormatter.d.ts.map +1 -1
  369. package/lib/typescript/src/helpers/getTestID.d.ts +10 -0
  370. package/lib/typescript/src/helpers/getTestID.d.ts.map +1 -0
  371. package/lib/typescript/src/index.d.ts +6 -0
  372. package/lib/typescript/src/index.d.ts.map +1 -1
  373. package/package.json +19 -6
  374. package/src/Accordion/Accordion.tsx +6 -1
  375. package/src/Accordion/AccordionItem.tsx +2 -1
  376. package/src/Accordion/README.md +2 -0
  377. package/src/Accordion/type.tsx +2 -0
  378. package/src/Alert/Alert.tsx +3 -0
  379. package/src/Alert/README.md +1 -0
  380. package/src/Avatar/Avatar.tsx +2 -0
  381. package/src/Avatar/AvatarGroup.tsx +2 -1
  382. package/src/Avatar/README_AVATAR.md +1 -0
  383. package/src/Avatar/README_AVATARGROUP.md +1 -0
  384. package/src/Avatar/type.tsx +2 -0
  385. package/src/Badge/Badge.tsx +4 -0
  386. package/src/Badge/README.md +1 -0
  387. package/src/BadgeIcon/BadgeIcon.tsx +3 -0
  388. package/src/BadgeIcon/README.md +1 -0
  389. package/src/BottomSheet/BottomSheet.tsx +20 -13
  390. package/src/BottomSheet/README.md +1 -0
  391. package/src/BottomSheet/type.tsx +1 -0
  392. package/src/Button/Button.tsx +2 -0
  393. package/src/Button/README.md +1 -0
  394. package/src/Button/type.tsx +1 -0
  395. package/src/Calendar/Calendar.tsx +8 -1
  396. package/src/Calendar/CalendarPropsType.tsx +6 -0
  397. package/src/Calendar/README.md +2 -0
  398. package/src/CheckBox/CheckBox.tsx +13 -2
  399. package/src/CheckBox/CheckBoxList.tsx +7 -1
  400. package/src/CheckBox/README_CHECKBOX.md +1 -0
  401. package/src/CheckBox/README_CHECKBOXLIST.md +1 -0
  402. package/src/Chip/Chip.tsx +18 -5
  403. package/src/Chip/ChipItem.tsx +2 -0
  404. package/src/Chip/README.md +26 -2
  405. package/src/Chip/README_CHIP_ITEM.md +1 -0
  406. package/src/Chip/type.tsx +2 -0
  407. package/src/CounterButton/CounterButton.tsx +5 -0
  408. package/src/CounterButton/README.md +1 -0
  409. package/src/CounterButton/type.tsx +1 -0
  410. package/src/DatePicker/DatePicker.tsx +21 -5
  411. package/src/DatePicker/MonthPicker.tsx +7 -0
  412. package/src/DatePicker/README_DATEPICKER.md +1 -0
  413. package/src/DatePicker/README_MONTHPICKER.md +1 -0
  414. package/src/DatePicker/README_TIMEPICKER.md +1 -0
  415. package/src/DatePicker/README_YEARPICKER.md +1 -0
  416. package/src/DatePicker/TimePicker.tsx +8 -0
  417. package/src/DatePicker/YearPicker.tsx +16 -3
  418. package/src/Drawing/Drawing.tsx +3 -1
  419. package/src/Drawing/README.md +1 -0
  420. package/src/DropDown/DropDown.tsx +12 -1
  421. package/src/DropDown/README.md +1 -0
  422. package/src/DropDown/type.tsx +1 -0
  423. package/src/FileView/PDF_VIEW_README.md +11 -0
  424. package/src/FileView/PdfView.tsx +4 -3
  425. package/src/Icon/Icon.tsx +14 -2
  426. package/src/Icon/README.md +1 -0
  427. package/src/Icon/icons/FileListStar.tsx +23 -0
  428. package/src/Icon/icons/TextFill.tsx +19 -0
  429. package/src/Icon/type.tsx +3 -0
  430. package/src/Input/Input.tsx +17 -2
  431. package/src/Input/InputDate.tsx +40 -15
  432. package/src/Input/InputFile.tsx +27 -14
  433. package/src/Input/InputMonth.tsx +152 -1
  434. package/src/Input/InputOtp.tsx +12 -2
  435. package/src/Input/InputPassword.tsx +6 -1
  436. package/src/Input/InputSelect.tsx +30 -13
  437. package/src/Input/InputYear.tsx +125 -0
  438. package/src/Input/README_INPUT.md +1 -0
  439. package/src/Input/README_INPUT_DATE.md +18 -0
  440. package/src/Input/README_INPUT_FILE.md +1 -0
  441. package/src/Input/README_INPUT_MONTH.md +132 -0
  442. package/src/Input/README_INPUT_OTP.md +1 -0
  443. package/src/Input/README_INPUT_SELECT.md +1 -0
  444. package/src/Input/README_INPUT_YEAR.md +115 -0
  445. package/src/Input/Switch.tsx +7 -1
  446. package/src/Input/TextArea.tsx +15 -2
  447. package/src/Input/partials/InputFile/CardTrigger.tsx +3 -0
  448. package/src/Input/partials/InputFile/CardTriggerSmall.tsx +4 -1
  449. package/src/Input/partials/InputFile/ItemPreview.tsx +12 -2
  450. package/src/Input/partials/PickerField.tsx +125 -0
  451. package/src/Input/type.tsx +14 -0
  452. package/src/Label/Label.tsx +3 -0
  453. package/src/Label/README.md +1 -0
  454. package/src/LabelForm/LabelForm.tsx +3 -1
  455. package/src/List/List.tsx +2 -2
  456. package/src/List/ListItem.tsx +2 -0
  457. package/src/List/README.md +2 -0
  458. package/src/List/type.tsx +2 -0
  459. package/src/Loading/Loading.tsx +3 -1
  460. package/src/Modal/Modal.tsx +15 -3
  461. package/src/Modal/README.md +1 -0
  462. package/src/Provider/RequiredUpdateAppsProvider.tsx +10 -1
  463. package/src/RadioButton/README.md +1 -0
  464. package/src/RadioButton/RadioButton.tsx +12 -2
  465. package/src/Select/README.md +1 -0
  466. package/src/Select/README_Select.md +1 -0
  467. package/src/Select/Select.tsx +13 -3
  468. package/src/Select/type.tsx +1 -0
  469. package/src/Skeleton/README.md +1 -0
  470. package/src/Skeleton/Skeleton.tsx +2 -0
  471. package/src/Skeleton/type.ts +1 -0
  472. package/src/Spinner/Spinner.tsx +15 -2
  473. package/src/Step/README.md +2 -0
  474. package/src/Step/Step.tsx +2 -2
  475. package/src/Step/StepItem.tsx +7 -2
  476. package/src/Step/type.tsx +2 -0
  477. package/src/Tab/README.md +1 -0
  478. package/src/Tab/Tab.tsx +12 -2
  479. package/src/Tab/type.tsx +1 -0
  480. package/src/TextEditor/LinkSheet.tsx +100 -0
  481. package/src/TextEditor/README.md +52 -2
  482. package/src/TextEditor/TextEditor.tsx +92 -500
  483. package/src/TextEditor/Toolbar.tsx +104 -0
  484. package/src/TextEditor/editorDocument.ts +246 -0
  485. package/src/TextEditor/formatState.ts +186 -0
  486. package/src/TextEditor/toolbarButtons.ts +41 -0
  487. package/src/TextEditor/types.tsx +63 -0
  488. package/src/Timeline/README.md +2 -0
  489. package/src/Timeline/Timeline.tsx +7 -2
  490. package/src/Timeline/TimelineItem.tsx +3 -1
  491. package/src/Toast/README.md +16 -0
  492. package/src/Toast/Toast.tsx +13 -2
  493. package/src/Typography/README.md +1 -0
  494. package/src/Typography/Typography.tsx +6 -1
  495. package/src/Typography/type.tsx +2 -10
  496. package/src/Ui/Card.tsx +4 -0
  497. package/src/Ui/Center.tsx +7 -2
  498. package/src/Ui/Col.tsx +7 -2
  499. package/src/Ui/Container.tsx +7 -2
  500. package/src/Ui/Devider.tsx +2 -2
  501. package/src/Ui/Footer.tsx +6 -3
  502. package/src/Ui/Gap.tsx +8 -2
  503. package/src/Ui/Grid.tsx +3 -2
  504. package/src/Ui/README_CARD.md +1 -0
  505. package/src/Ui/README_CONTAINER.md +1 -0
  506. package/src/Ui/README_DEVIDER.md +5 -0
  507. package/src/Ui/README_FOOTER.md +9 -0
  508. package/src/Ui/README_VIEWINSETS.md +1 -0
  509. package/src/function/README_DATE_FORMATTER.md +35 -0
  510. package/src/function/dateFormatter.ts +40 -0
  511. package/src/helpers/getTestID.ts +15 -0
  512. package/src/index.tsx +6 -0
  513. package/lib/module/Button/tests/Button.test.js +0 -70
  514. package/lib/module/Button/tests/Button.test.js.map +0 -1
  515. package/lib/typescript/src/Button/tests/Button.test.d.ts +0 -2
  516. package/lib/typescript/src/Button/tests/Button.test.d.ts.map +0 -1
  517. package/src/Button/tests/Button.test.tsx +0 -49
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herca/rn-kit",
3
- "version": "0.1.112",
3
+ "version": "0.1.114",
4
4
  "description": "React Native UI Kit",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -72,22 +72,23 @@
72
72
  "@react-native/babel-preset": "0.79.2",
73
73
  "@react-native/eslint-config": "^0.78.0",
74
74
  "@release-it/conventional-changelog": "^9.0.2",
75
- "@types/jest": "^29.5.5",
75
+ "@types/jest": "^30.0.0",
76
76
  "@types/react": "^19.0.0",
77
77
  "commitlint": "^19.6.1",
78
78
  "del-cli": "^5.1.0",
79
79
  "eslint": "^9.22.0",
80
80
  "eslint-config-prettier": "^10.1.1",
81
81
  "eslint-plugin-prettier": "^5.2.3",
82
- "jest": "^29.7.0",
82
+ "jest": "^30.4.2",
83
83
  "prettier": "^3.0.3",
84
84
  "react": "19.0.0",
85
85
  "react-native": "0.79.2",
86
86
  "react-native-builder-bob": "^0.40.8",
87
+ "react-native-safe-area-context": "^5.5.1",
88
+ "react-test-renderer": "19.0.0",
87
89
  "release-it": "^17.10.0",
88
90
  "turbo": "^1.10.7",
89
- "typescript": "^5.8.3",
90
- "react-native-safe-area-context": "^5.5.1"
91
+ "typescript": "^5.8.3"
91
92
  },
92
93
  "peerDependencies": {
93
94
  "react": "*",
@@ -103,7 +104,7 @@
103
104
  "react-native-image-picker": "^8.2.1",
104
105
  "react-native-pager-view": "^6.8.1",
105
106
  "react-native-pdf": "^6.7.7",
106
- "react-native-screens": "^4.11.1",
107
+ "react-native-screens": "4.11.1",
107
108
  "react-native-signature-canvas": "^5.0.1",
108
109
  "react-native-svg": "^15.12.0",
109
110
  "react-native-webview": "^13.15.0"
@@ -111,9 +112,21 @@
111
112
  "workspaces": [
112
113
  "example"
113
114
  ],
115
+ "resolutions": {
116
+ "jest-environment-node": "^30.0.0"
117
+ },
114
118
  "packageManager": "yarn@3.6.1",
115
119
  "jest": {
116
120
  "preset": "react-native",
121
+ "setupFilesAfterEnv": [
122
+ "<rootDir>/jest.setup.js"
123
+ ],
124
+ "testMatch": [
125
+ "**/__tests__/**/*.test.?([mc])[jt]s?(x)"
126
+ ],
127
+ "transformIgnorePatterns": [
128
+ "node_modules/(?!((jest-)?react-native|@react-native(-community)?|@react-navigation|react-native-.*)/)"
129
+ ],
117
130
  "modulePathIgnorePatterns": [
118
131
  "<rootDir>/example/node_modules",
119
132
  "<rootDir>/lib/"
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
2
2
  import { StyleSheet, TouchableOpacity, View } from 'react-native';
3
3
  import List from '../List/List';
4
4
  import ListItem from '../List/ListItem';
5
+ import { getTestID } from '../helpers/getTestID';
5
6
  import type { AccordionProps } from './type';
6
7
 
7
8
  export default function Accordion({
@@ -10,6 +11,7 @@ export default function Accordion({
10
11
  isOpen,
11
12
  onCollapse,
12
13
  variant = 'default',
14
+ testID,
13
15
  }: AccordionProps) {
14
16
  const [isExpanded, setIsExpanded] = useState<boolean>(false);
15
17
  const toggle = () => {
@@ -25,7 +27,10 @@ export default function Accordion({
25
27
  <View>
26
28
  <List style={variant === 'borderless' ? styles.borderless : undefined}>
27
29
  {renderHeader && (
28
- <TouchableOpacity onPress={toggle}>
30
+ <TouchableOpacity
31
+ testID={getTestID(testID, 'trigger')}
32
+ onPress={toggle}
33
+ >
29
34
  <ListItem
30
35
  style={variant === 'borderless' ? styles.borderless : undefined}
31
36
  >
@@ -4,9 +4,10 @@ import ListItem from '../List/ListItem';
4
4
  export default function AccordionItem({
5
5
  children,
6
6
  index = 0,
7
+ testID,
7
8
  }: AccordionItemProps) {
8
9
  return (
9
- <ListItem key={index} isLast>
10
+ <ListItem key={index} isLast testID={testID}>
10
11
  {children}
11
12
  </ListItem>
12
13
  );
@@ -43,6 +43,7 @@ export default function FAQSection() {
43
43
  | `isOpen` | `boolean` | ❌ | `true` | Menentukan apakah Accordion terbuka saat pertama kali dirender. |
44
44
  | `onCollapse` | `(isOpen: boolean) => void` | ❌ | - | Callback saat status terbuka/tutup berubah. |
45
45
  | `variant` | `'default' \| 'borderless'` | ❌ | - | Opsi untuk menampilkan sebuah border di pembungkus accordion nya atau tidak |
46
+ | `testID` | `string` | ❌ | - | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-trigger` untuk header; tiap `AccordionItem` menerima `testID`-nya sendiri. |
46
47
 
47
48
  ### AccordionItem
48
49
 
@@ -50,6 +51,7 @@ export default function FAQSection() {
50
51
  | ---------- | ----------- | ----- | ------- | --------------------------------------------------------------- |
51
52
  | `children` | `ReactNode` | ✅ | - | Konten yang akan ditampilkan saat Accordion dibuka. |
52
53
  | `index` | `number` | ❌ | - | Untuk pengendalian item tertentu jika diperlukan secara manual. |
54
+ | `testID` | `string` | ❌ | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
53
55
 
54
56
  ## Note
55
57
 
@@ -13,8 +13,10 @@ export interface AccordionProps {
13
13
  isOpen?: boolean;
14
14
  onCollapse?: (isOpen: boolean) => void;
15
15
  variant?: 'default' | 'borderless';
16
+ testID?: string;
16
17
  }
17
18
  export interface AccordionItemProps {
18
19
  children: ReactNode;
19
20
  index?: number;
21
+ testID?: string;
20
22
  }
@@ -14,6 +14,7 @@ interface AlertProps {
14
14
  style?: ViewStyle;
15
15
  titleStyle?: StyleProp<ViewStyle>;
16
16
  messageStyle?: StyleProp<ViewStyle>;
17
+ testID?: string;
17
18
  hide?: boolean;
18
19
  }
19
20
 
@@ -75,11 +76,13 @@ const Alert: React.FC<AlertProps> = ({
75
76
  titleStyle,
76
77
  messageStyle,
77
78
  hide = false,
79
+ testID,
78
80
  }) => {
79
81
  const { background, fontColor, borderColor } = COLORS[color];
80
82
 
81
83
  return (
82
84
  <View
85
+ testID={testID}
83
86
  style={[
84
87
  styles.container,
85
88
  {
@@ -22,6 +22,7 @@ Komponen `Alert` digunakan untuk menampilkan pesan notifikasi dengan ikon, judul
22
22
  | `style` | `ViewStyle` | `undefined` | Gaya tambahan untuk container |
23
23
  | `titleStyle` | `StyleProp<ViewStyle>` | `undefined` | Gaya tambahan untuk judul |
24
24
  | `messageStyle` | `StyleProp<ViewStyle>` | `undefined` | Gaya tambahan untuk pesan |
25
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
25
26
 
26
27
  ## 🎨 Warna yang Didukung
27
28
 
@@ -16,11 +16,13 @@ const Avatar: React.FC<AvatarProps> = ({
16
16
  backgroundColor = '#ccc',
17
17
  textColor = '#fff',
18
18
  style,
19
+ testID,
19
20
  }) => {
20
21
  const avatarSize = SIZE_MAP[size] || SIZE_MAP.medium;
21
22
 
22
23
  return (
23
24
  <View
25
+ testID={testID}
24
26
  style={[
25
27
  styles.container,
26
28
  {
@@ -13,13 +13,14 @@ const AvatarGroup: React.FC<AvatarGroupProps> = ({
13
13
  avatars = [],
14
14
  maxVisible = 5,
15
15
  size = 'medium',
16
+ testID,
16
17
  }) => {
17
18
  const avatarSize = SIZE_MAP[size] || SIZE_MAP.medium;
18
19
  const visibleAvatars = avatars.slice(0, maxVisible);
19
20
  const remainingCount = avatars.length - maxVisible;
20
21
 
21
22
  return (
22
- <View style={[styles.container, { height: avatarSize }]}>
23
+ <View testID={testID} style={[styles.container, { height: avatarSize }]}>
23
24
  {visibleAvatars.map((avatar, index) => {
24
25
  const hasImage = avatar.source;
25
26
  const initials = avatar.name;
@@ -20,6 +20,7 @@ Komponen `Avatar` digunakan untuk menampilkan foto pengguna atau inisial nama ji
20
20
  | `backgroundColor` | `string` | `'#ccc'` | Warna latar belakang jika tanpa gambar |
21
21
  | `textColor` | `string` | `'#fff'` | Warna teks inisial jika tanpa gambar |
22
22
  | `style` | `ViewStyle` | `undefined` | Gaya tambahan untuk container |
23
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
23
24
 
24
25
  ## 📏 Ukuran Avatar
25
26
 
@@ -16,6 +16,7 @@ The `AvatarGroup` component displays a group of user avatars. It supports image
16
16
  | `avatars` | `AvatarProps[]` | `[]` | Array of avatar objects. |
17
17
  | `maxVisible` | `number` | `5` | Max number of avatars to display. |
18
18
  | `size` | `'small' | 'medium' | 'large'` | `'medium'` | Size of avatars. |
19
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
19
20
 
20
21
  ### `AvatarProps`
21
22
 
@@ -8,10 +8,12 @@ export interface AvatarProps {
8
8
  backgroundColor?: string;
9
9
  textColor?: string;
10
10
  style?: object;
11
+ testID?: string;
11
12
  }
12
13
 
13
14
  export interface AvatarGroupProps {
14
15
  avatars?: AvatarProps[];
15
16
  maxVisible?: number;
16
17
  size?: AvatarSizeType;
18
+ testID?: string;
17
19
  }
@@ -12,6 +12,7 @@ interface BadgeProps {
12
12
  variant?: Variant;
13
13
  dot?: boolean;
14
14
  children?: React.ReactNode;
15
+ testID?: string;
15
16
  }
16
17
 
17
18
  const COLORS: Record<Variant, { background: string; fontColor: string }> = {
@@ -47,6 +48,7 @@ const Badge: React.FC<BadgeProps> = ({
47
48
  color = 'default',
48
49
  dot = false,
49
50
  children,
51
+ testID,
50
52
  }) => {
51
53
  const safeSize: Size = ['small', 'medium'].includes(size) ? size : 'medium';
52
54
 
@@ -69,6 +71,7 @@ const Badge: React.FC<BadgeProps> = ({
69
71
  if (dot) {
70
72
  return (
71
73
  <View
74
+ testID={testID}
72
75
  style={[
73
76
  styles.dot,
74
77
  {
@@ -85,6 +88,7 @@ const Badge: React.FC<BadgeProps> = ({
85
88
 
86
89
  return (
87
90
  <View
91
+ testID={testID}
88
92
  style={[
89
93
  styles.badge,
90
94
  {
@@ -20,6 +20,7 @@ Komponen `Badge` digunakan untuk menampilkan label kecil yang memberikan informa
20
20
  | `size` | `'small'` \\| `'medium'` | `'medium'` | Ukuran badge |
21
21
  | `dot` | `boolean` | `false` | Jika `true`, hanya menampilkan titik kecil |
22
22
  | `children` | `React.ReactNode` | `undefined` | Jika ada, akan menggantikan `value` sebagai isi badge |
23
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
23
24
 
24
25
  ## 🎨 Warna default yang Tersedia
25
26
 
@@ -9,6 +9,7 @@ interface BaseBadgeProps {
9
9
  color?: Variant | HexColor;
10
10
  size?: Size;
11
11
  variant?: Variant;
12
+ testID?: string;
12
13
  }
13
14
 
14
15
  interface IconBadgeProps extends BaseBadgeProps {
@@ -67,6 +68,7 @@ const BadgeIcon: React.FC<BadgeProps> = ({
67
68
  size = 'medium',
68
69
  color = 'default',
69
70
  children,
71
+ testID,
70
72
  }) => {
71
73
  const safeSize: Size = ['small', 'medium', 'large'].includes(size)
72
74
  ? size
@@ -91,6 +93,7 @@ const BadgeIcon: React.FC<BadgeProps> = ({
91
93
 
92
94
  return (
93
95
  <View
96
+ testID={testID}
94
97
  style={[
95
98
  styles.badge,
96
99
  {
@@ -13,6 +13,7 @@
13
13
  | `color` | `Variant` \| `HexColor` | `"default"` | Warna badge. Bisa berupa nama varian yang tersedia atau kode warna HEX. |
14
14
  | `size` | `"small"` \| `"medium"` \| `"large"` | `"medium"` | Ukuran badge. Mengatur tinggi, lebar minimum, padding, dan radius border. |
15
15
  | `variant` | `Variant` | - | Alias untuk varian warna (tidak digunakan langsung di komponen ini). |
16
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
16
17
 
17
18
  ---
18
19
 
@@ -1,22 +1,23 @@
1
- import { useEffect, useRef, useState, useCallback } from 'react';
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
2
  import {
3
- View,
4
- StyleSheet,
5
- PanResponder,
6
- TouchableOpacity,
7
3
  Animated,
8
- Modal,
9
- KeyboardAvoidingView,
10
- Keyboard,
11
4
  Dimensions,
12
- SafeAreaView,
5
+ Keyboard,
6
+ KeyboardAvoidingView,
7
+ Modal,
8
+ PanResponder,
13
9
  Platform,
10
+ SafeAreaView,
14
11
  StatusBar,
12
+ StyleSheet,
13
+ TouchableOpacity,
14
+ View,
15
15
  type KeyboardEvent,
16
16
  } from 'react-native';
17
- import Container from '../Ui/Container';
18
- import Typography from '../Typography/Typography';
19
17
  import Color from '../Color/Color';
18
+ import { getTestID } from '../helpers/getTestID';
19
+ import Icon from '../Icon';
20
+ import Container from '../Ui/Container';
20
21
  import type { BottomSheetHeighProps, BottomSheetProops } from './type';
21
22
 
22
23
  const statusBarHeight =
@@ -39,6 +40,7 @@ export default function BottomSheet({
39
40
  height,
40
41
  pullBar,
41
42
  footer,
43
+ testID,
42
44
  }: BottomSheetProops) {
43
45
  const [isVisible, setIsVisible] = useState(false);
44
46
  const [heightFooter, setHeightFooter] = useState(0);
@@ -149,6 +151,7 @@ export default function BottomSheet({
149
151
  >
150
152
  <View style={[styles.modalContainer, backdrop && styles.backdrop]}>
151
153
  <TouchableOpacity
154
+ testID={getTestID(testID, 'backdrop')}
152
155
  onPress={handleRequestClose}
153
156
  activeOpacity={1}
154
157
  style={styles.backdropTouchable}
@@ -160,6 +163,7 @@ export default function BottomSheet({
160
163
  style={styles.keyboardAvoiding}
161
164
  >
162
165
  <Animated.View
166
+ testID={testID}
163
167
  style={[
164
168
  styles.bottomSheet,
165
169
  {
@@ -172,15 +176,17 @@ export default function BottomSheet({
172
176
  >
173
177
  {buttonClose && (
174
178
  <TouchableOpacity
179
+ testID={getTestID(testID, 'close')}
175
180
  onPress={handleRequestClose}
176
181
  style={styles.closeButton}
177
182
  >
178
- <Typography>x</Typography>
183
+ <Icon name="times-new" color={Color.gray[900]} size={20} />
179
184
  </TouchableOpacity>
180
185
  )}
181
186
  {closable && (
182
187
  <View
183
188
  {...panResponder.panHandlers}
189
+ testID={getTestID(testID, 'pullbar')}
184
190
  style={styles.dragIndicatorContainer}
185
191
  >
186
192
  {pullBar ? pullBar : <View style={styles.dragIndicator} />}
@@ -196,6 +202,7 @@ export default function BottomSheet({
196
202
  </SafeAreaView>
197
203
  {footer && (
198
204
  <SafeAreaView
205
+ testID={getTestID(testID, 'footer')}
199
206
  onLayout={(event) => {
200
207
  const { height: layoutHeight } = event.nativeEvent.layout;
201
208
  setHeightFooter(layoutHeight);
@@ -235,7 +242,7 @@ const styles = StyleSheet.create({
235
242
  position: 'absolute',
236
243
  backgroundColor: 'white',
237
244
  paddingVertical: 10,
238
- paddingHorizontal: 14,
245
+ paddingHorizontal: 10,
239
246
  borderRadius: 50,
240
247
  top: -50,
241
248
  right: 24,
@@ -19,6 +19,7 @@ Komponen `BottomSheet` adalah modal bawah (slide-up) untuk menampilkan konten di
19
19
  | `height` | `number \| string` | `'auto'` | Tinggi dari konten bottom sheet. |
20
20
  | `pullBar` | `React.ReactNode` | - | Custom elemen untuk drag indicator. |
21
21
  | `footer` | `React.ReactNode` | - | Menambahkan elemen tetap di bawah konten. |
22
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan pada elemen konten (tanpa suffix); menurunkan `-backdrop`, `-close`, `-pullbar`, dan `-footer`. |
22
23
 
23
24
  ---
24
25
 
@@ -12,4 +12,5 @@ export interface BottomSheetProops {
12
12
  height?: BottomSheetHeighProps;
13
13
  pullBar?: React.ReactNode;
14
14
  footer?: React.ReactNode;
15
+ testID?: string;
15
16
  }
@@ -115,6 +115,7 @@ const Button: React.FC<ButtonProps> = ({
115
115
  width,
116
116
  block = false,
117
117
  loading = false,
118
+ testID,
118
119
  }) => {
119
120
  const sizeStyles = sizeStyleMap[size];
120
121
  const fontVariant = fontVariantMap[size];
@@ -131,6 +132,7 @@ const Button: React.FC<ButtonProps> = ({
131
132
 
132
133
  return (
133
134
  <Pressable
135
+ testID={testID}
134
136
  onPress={onPress}
135
137
  disabled={disabled}
136
138
  style={({ pressed }) => {
@@ -24,6 +24,7 @@ Komponen `Button` ini adalah tombol serbaguna untuk aplikasi React Native. Mendu
24
24
  | `width` | `number | string` | - | Lebar tombol bisa dalam piksel atau persentase. |
25
25
  | `block` | `boolean` | `false` | Jika `true`, tombol akan penuh lebar (`width: 100%`). |
26
26
  | `loading` | `boolean` | `false` | Menampilkan indikator loading jika `true`. |
27
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen `Pressable` tombol, tanpa suffix. |
27
28
 
28
29
  ---
29
30
 
@@ -15,6 +15,7 @@ export interface ButtonProps {
15
15
  width?: number | string;
16
16
  block?: boolean;
17
17
  loading?: boolean;
18
+ testID?: string;
18
19
  }
19
20
 
20
21
  export const COLOR_MAP: Record<
@@ -23,6 +23,7 @@ const DEFAULT_SELECTED_BACKGROUND_COLOR = Color.primary[1000];
23
23
  const DEFAULT_SELECTED_TEXT_COLOR = Color.base.white100;
24
24
  const DEFAULT_DISABLED_BACKGROUND_COLOR = Color.base.white100;
25
25
  const DEFAULT_DISABLED_TEXT_COLOR = Color.gray[400];
26
+ const DEFAULT_TODAY_TEXT_COLOR = Color.info[500];
26
27
 
27
28
  export const formatDate = (date: Date | undefined | null) => {
28
29
  if (!date) return null;
@@ -43,6 +44,7 @@ const Calendar = ({
43
44
  selectedTextColor = DEFAULT_SELECTED_TEXT_COLOR,
44
45
  disabledBackgroundColor = DEFAULT_DISABLED_BACKGROUND_COLOR,
45
46
  disabledTextColor = DEFAULT_DISABLED_TEXT_COLOR,
47
+ todayTextColor = DEFAULT_TODAY_TEXT_COLOR,
46
48
  dayName = DAYS,
47
49
  language = 'en',
48
50
  initialDate = new Date(),
@@ -50,6 +52,7 @@ const Calendar = ({
50
52
  dateEnd,
51
53
  onMonthChange,
52
54
  onYearChange,
55
+ testID,
53
56
  }: CalendarTypes) => {
54
57
  const [currentDate, setCurrentDate] = useState(initialDate);
55
58
  const [startDate, setStartDate] = useState<Date | null>(null);
@@ -256,6 +259,10 @@ const Calendar = ({
256
259
 
257
260
  if (mark?.selected) return mark?.textColor || selectedTextColor;
258
261
 
262
+ // Last before the ordinary colour: today is a hint about which day it is,
263
+ // so anything the user or the caller actually decided outranks it.
264
+ if (isSameDate(new Date(), date)) return todayTextColor;
265
+
259
266
  return Color.gray[700];
260
267
  };
261
268
 
@@ -322,7 +329,7 @@ const Calendar = ({
322
329
  const year = currentDate.getFullYear();
323
330
 
324
331
  return (
325
- <View style={styles.container}>
332
+ <View testID={testID} style={styles.container}>
326
333
  <View style={styles.header}>
327
334
  <TouchableOpacity style={styles.buttonNav} onPress={goToPrevMonth}>
328
335
  <Icon name="ArrowLeft" color={Color.base.white100} size={10} />
@@ -62,6 +62,11 @@ export interface CalendarTypes {
62
62
  selectedTextColor?: string;
63
63
  disabledBackgroundColor?: string;
64
64
  disabledTextColor?: string;
65
+ /**
66
+ * Colour of today's number. Applies only when today is not selected,
67
+ * disabled or marked -- those outrank it.
68
+ */
69
+ todayTextColor?: string;
65
70
  disabledDays?: {
66
71
  [day in WeekDay]?: boolean | DisabledDayStyle;
67
72
  };
@@ -72,4 +77,5 @@ export interface CalendarTypes {
72
77
  dateEnd?: string | null;
73
78
  onMonthChange?: (month: number) => void;
74
79
  onYearChange?: (year: number) => void;
80
+ testID?: string;
75
81
  }
@@ -29,9 +29,11 @@ Komponen kalender ini dibuat menggunakan React Native dan memungkinkan pengguna
29
29
  | `onChange` | `(date: Date \| [Date, Date]) => void` | — | Fungsi callback saat tanggal dipilih |
30
30
  | `selectedBackgroundColor` | `string` (CSS color) | `'#0f62fe'` | Warna latar belakang tanggal yang dipilih |
31
31
  | `selectedTextColor` | `string` (CSS color) | `'#ffffff'` | Warna teks pada tanggal yang dipilih |
32
+ | `todayTextColor` | `string` (CSS color) | `Color.info[500]` | Warna angka tanggal hari ini. Hanya berlaku bila hari ini tidak sedang dipilih, dinonaktifkan, atau ditandai lewat `markedDates` — ketiganya menang atas ini. |
32
33
  | `initialDate` | `Date` | `new Date(2026, 1, 1)` | Inisialisasi tanggal saat pertamakali render |
33
34
  | `dateStart` | `string \| null` | `2025-11-28` | Kontroler tanggal mulai |
34
35
  | `dateEnd` | `string \| null` | `2025-11-28` | Kontroler tanggal selesai |
36
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
35
37
 
36
38
  ---
37
39
 
@@ -1,7 +1,10 @@
1
- import { Color, Icon, Typography } from '@herca/rn-kit';
1
+ import Color from '../Color/Color';
2
+ import Icon from '../Icon';
3
+ import Typography from '../Typography/Typography';
2
4
  import React, { useEffect, useState } from 'react';
3
5
  import { Pressable, StyleSheet, View } from 'react-native';
4
6
  import type { Variant } from './type';
7
+ import { getTestID } from '../helpers/getTestID';
5
8
  // import type { ColorVariantType } from '../Color/type';
6
9
 
7
10
  interface CheckBoxProps {
@@ -13,6 +16,7 @@ interface CheckBoxProps {
13
16
  renderLabel?: () => React.ReactNode;
14
17
  renderHint?: () => React.ReactNode;
15
18
  color?: Variant;
19
+ testID?: string;
16
20
  }
17
21
 
18
22
  const COLORS: Record<Variant, { background: string; borderColor: string }> = {
@@ -38,6 +42,7 @@ const CheckBox: React.FC<CheckBoxProps> = ({
38
42
  renderLabel,
39
43
  renderHint,
40
44
  color = 'primary',
45
+ testID,
41
46
  }) => {
42
47
  const [value, setValue] = useState<boolean>(false);
43
48
  const { background, borderColor } = COLORS[color];
@@ -54,6 +59,7 @@ const CheckBox: React.FC<CheckBoxProps> = ({
54
59
 
55
60
  return (
56
61
  <Pressable
62
+ testID={testID}
57
63
  onPress={() => !disabled && handlePress()}
58
64
  style={styles.container}
59
65
  >
@@ -71,7 +77,12 @@ const CheckBox: React.FC<CheckBoxProps> = ({
71
77
  </View>
72
78
  <View>
73
79
  {label && (
74
- <Typography variant="t2" weight="medium" color={Color.gray[900]}>
80
+ <Typography
81
+ testID={getTestID(testID, 'label')}
82
+ variant="t2"
83
+ weight="medium"
84
+ color={Color.gray[900]}
85
+ >
75
86
  {label}
76
87
  </Typography>
77
88
  )}
@@ -1,6 +1,9 @@
1
1
  import React from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
- import { Typography, Color, CheckBox } from '@herca/rn-kit';
3
+ import Typography from '../Typography/Typography';
4
+ import Color from '../Color/Color';
5
+ import CheckBox from './CheckBox';
6
+ import { getTestID } from '../helpers/getTestID';
4
7
  import type { Variant } from './type';
5
8
 
6
9
  interface CheckBoxListItem {
@@ -15,6 +18,7 @@ interface CheckBoxListProps {
15
18
  onChange: (selected: string[]) => void;
16
19
  direction?: 'vertical' | 'horizontal';
17
20
  color?: Variant;
21
+ testID?: string;
18
22
  }
19
23
 
20
24
  const CheckBoxList: React.FC<CheckBoxListProps> = ({
@@ -23,6 +27,7 @@ const CheckBoxList: React.FC<CheckBoxListProps> = ({
23
27
  onChange,
24
28
  direction = 'vertical',
25
29
  color = 'primary',
30
+ testID,
26
31
  }) => {
27
32
  const toggleValue = (value: string) => {
28
33
  const newSelected = selectedValues.includes(value)
@@ -42,6 +47,7 @@ const CheckBoxList: React.FC<CheckBoxListProps> = ({
42
47
  {items.map((item) => (
43
48
  <CheckBox
44
49
  key={item.value}
50
+ testID={getTestID(testID, `option-${item.value}`)}
45
51
  checked={selectedValues.includes(item.value)}
46
52
  color={color}
47
53
  onChange={() => toggleValue(item.value)}
@@ -47,3 +47,4 @@ export default function App() {
47
47
  | `disabled` | `boolean` | Jika `true`, checkbox tidak bisa ditekan. Default: `false`. |
48
48
  | `renderLabel` | `() => React.ReactNode` | Alternatif render untuk label kustom selain `label`. |
49
49
  | `renderHint` | `() => React.ReactNode` | Alternatif render untuk hint kustom selain `hint`. |
50
+ | `testID` | `string` | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan ke `Pressable`; menurunkan `-label` untuk elemen label. |
@@ -46,3 +46,4 @@ export default function App() {
46
46
  | `onChange` | `(selected: string[]) => void` | Callback saat nilai pilihan berubah. | |
47
47
  | `direction` | \`'vertical' | 'horizontal'\` (opsional) | Arah tampilan checkbox (default: `'vertical'`). |
48
48
  | `color` | `primary \| danger \| warning \| orange \| info \| success \| purple ` | warna background jika checkbox di centang | Arah tampilan checkbox (default: `'vertical'`). |
49
+ | `testID` | `string` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-option-{value}` untuk tiap item checkbox. | |