@herca/rn-kit 0.1.113 → 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 (507) 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 +14 -2
  69. package/lib/module/Icon/Icon.js.map +1 -1
  70. package/lib/module/Icon/README.md +1 -0
  71. package/lib/module/Input/Input.js +7 -0
  72. package/lib/module/Input/Input.js.map +1 -1
  73. package/lib/module/Input/InputDate.js +35 -8
  74. package/lib/module/Input/InputDate.js.map +1 -1
  75. package/lib/module/Input/InputFile.js +28 -11
  76. package/lib/module/Input/InputFile.js.map +1 -1
  77. package/lib/module/Input/InputMonth.js +111 -1
  78. package/lib/module/Input/InputMonth.js.map +1 -1
  79. package/lib/module/Input/InputOtp.js +6 -1
  80. package/lib/module/Input/InputOtp.js.map +1 -1
  81. package/lib/module/Input/InputPassword.js +5 -1
  82. package/lib/module/Input/InputPassword.js.map +1 -1
  83. package/lib/module/Input/InputSelect.js +21 -2
  84. package/lib/module/Input/InputSelect.js.map +1 -1
  85. package/lib/module/Input/InputYear.js +94 -0
  86. package/lib/module/Input/InputYear.js.map +1 -0
  87. package/lib/module/Input/README_INPUT.md +1 -0
  88. package/lib/module/Input/README_INPUT_DATE.md +18 -0
  89. package/lib/module/Input/README_INPUT_FILE.md +1 -0
  90. package/lib/module/Input/README_INPUT_MONTH.md +132 -0
  91. package/lib/module/Input/README_INPUT_OTP.md +1 -0
  92. package/lib/module/Input/README_INPUT_SELECT.md +1 -0
  93. package/lib/module/Input/README_INPUT_YEAR.md +115 -0
  94. package/lib/module/Input/Switch.js +6 -2
  95. package/lib/module/Input/Switch.js.map +1 -1
  96. package/lib/module/Input/TextArea.js +5 -0
  97. package/lib/module/Input/TextArea.js.map +1 -1
  98. package/lib/module/Input/partials/InputFile/CardTrigger.js +3 -1
  99. package/lib/module/Input/partials/InputFile/CardTrigger.js.map +1 -1
  100. package/lib/module/Input/partials/InputFile/CardTriggerSmall.js +5 -2
  101. package/lib/module/Input/partials/InputFile/CardTriggerSmall.js.map +1 -1
  102. package/lib/module/Input/partials/InputFile/ItemPreview.js +6 -1
  103. package/lib/module/Input/partials/InputFile/ItemPreview.js.map +1 -1
  104. package/lib/module/Input/partials/PickerField.js +114 -0
  105. package/lib/module/Input/partials/PickerField.js.map +1 -0
  106. package/lib/module/Label/Label.js +3 -1
  107. package/lib/module/Label/Label.js.map +1 -1
  108. package/lib/module/Label/README.md +1 -0
  109. package/lib/module/LabelForm/LabelForm.js +3 -1
  110. package/lib/module/LabelForm/LabelForm.js.map +1 -1
  111. package/lib/module/List/List.js +3 -1
  112. package/lib/module/List/List.js.map +1 -1
  113. package/lib/module/List/ListItem.js +3 -1
  114. package/lib/module/List/ListItem.js.map +1 -1
  115. package/lib/module/List/README.md +2 -0
  116. package/lib/module/Loading/Loading.js +3 -1
  117. package/lib/module/Loading/Loading.js.map +1 -1
  118. package/lib/module/Modal/Modal.js +8 -2
  119. package/lib/module/Modal/Modal.js.map +1 -1
  120. package/lib/module/Modal/README.md +1 -0
  121. package/lib/module/Provider/RequiredUpdateAppsProvider.js +10 -1
  122. package/lib/module/Provider/RequiredUpdateAppsProvider.js.map +1 -1
  123. package/lib/module/RadioButton/README.md +1 -0
  124. package/lib/module/RadioButton/RadioButton.js +7 -2
  125. package/lib/module/RadioButton/RadioButton.js.map +1 -1
  126. package/lib/module/Select/README.md +1 -0
  127. package/lib/module/Select/README_Select.md +1 -0
  128. package/lib/module/Select/Select.js +12 -3
  129. package/lib/module/Select/Select.js.map +1 -1
  130. package/lib/module/Skeleton/README.md +1 -0
  131. package/lib/module/Skeleton/Skeleton.js +3 -1
  132. package/lib/module/Skeleton/Skeleton.js.map +1 -1
  133. package/lib/module/Spinner/Spinner.js +3 -1
  134. package/lib/module/Spinner/Spinner.js.map +1 -1
  135. package/lib/module/Step/README.md +2 -0
  136. package/lib/module/Step/Step.js +3 -1
  137. package/lib/module/Step/Step.js.map +1 -1
  138. package/lib/module/Step/StepItem.js +4 -1
  139. package/lib/module/Step/StepItem.js.map +1 -1
  140. package/lib/module/Tab/README.md +1 -0
  141. package/lib/module/Tab/Tab.js +6 -1
  142. package/lib/module/Tab/Tab.js.map +1 -1
  143. package/lib/module/TextEditor/LinkSheet.js +84 -0
  144. package/lib/module/TextEditor/LinkSheet.js.map +1 -0
  145. package/lib/module/TextEditor/README.md +52 -2
  146. package/lib/module/TextEditor/TextEditor.js +77 -458
  147. package/lib/module/TextEditor/TextEditor.js.map +1 -1
  148. package/lib/module/TextEditor/Toolbar.js +71 -0
  149. package/lib/module/TextEditor/Toolbar.js.map +1 -0
  150. package/lib/module/TextEditor/editorDocument.js +235 -0
  151. package/lib/module/TextEditor/editorDocument.js.map +1 -0
  152. package/lib/module/TextEditor/formatState.js +186 -0
  153. package/lib/module/TextEditor/formatState.js.map +1 -0
  154. package/lib/module/TextEditor/toolbarButtons.js +81 -0
  155. package/lib/module/TextEditor/toolbarButtons.js.map +1 -0
  156. package/lib/module/TextEditor/types.js +2 -0
  157. package/lib/module/Timeline/README.md +2 -0
  158. package/lib/module/Timeline/Timeline.js +3 -1
  159. package/lib/module/Timeline/Timeline.js.map +1 -1
  160. package/lib/module/Timeline/TimelineItem.js +3 -1
  161. package/lib/module/Timeline/TimelineItem.js.map +1 -1
  162. package/lib/module/Toast/README.md +16 -0
  163. package/lib/module/Toast/Toast.js +6 -1
  164. package/lib/module/Toast/Toast.js.map +1 -1
  165. package/lib/module/Typography/README.md +1 -0
  166. package/lib/module/Typography/Typography.js +3 -1
  167. package/lib/module/Typography/Typography.js.map +1 -1
  168. package/lib/module/Typography/type.js.map +1 -1
  169. package/lib/module/Ui/Card.js +4 -1
  170. package/lib/module/Ui/Card.js.map +1 -1
  171. package/lib/module/Ui/Center.js +3 -1
  172. package/lib/module/Ui/Center.js.map +1 -1
  173. package/lib/module/Ui/Col.js +3 -1
  174. package/lib/module/Ui/Col.js.map +1 -1
  175. package/lib/module/Ui/Container.js +3 -1
  176. package/lib/module/Ui/Container.js.map +1 -1
  177. package/lib/module/Ui/Devider.js +4 -1
  178. package/lib/module/Ui/Devider.js.map +1 -1
  179. package/lib/module/Ui/Footer.js +4 -2
  180. package/lib/module/Ui/Footer.js.map +1 -1
  181. package/lib/module/Ui/Gap.js +3 -1
  182. package/lib/module/Ui/Gap.js.map +1 -1
  183. package/lib/module/Ui/Grid.js +3 -1
  184. package/lib/module/Ui/Grid.js.map +1 -1
  185. package/lib/module/Ui/README_CARD.md +1 -0
  186. package/lib/module/Ui/README_CONTAINER.md +1 -0
  187. package/lib/module/Ui/README_DEVIDER.md +5 -0
  188. package/lib/module/Ui/README_FOOTER.md +9 -0
  189. package/lib/module/Ui/README_VIEWINSETS.md +1 -0
  190. package/lib/module/function/README_DATE_FORMATTER.md +35 -0
  191. package/lib/module/function/dateFormatter.js +29 -0
  192. package/lib/module/function/dateFormatter.js.map +1 -1
  193. package/lib/module/helpers/getTestID.js +15 -0
  194. package/lib/module/helpers/getTestID.js.map +1 -0
  195. package/lib/module/index.js +2 -0
  196. package/lib/module/index.js.map +1 -1
  197. package/lib/typescript/src/Accordion/Accordion.d.ts +1 -1
  198. package/lib/typescript/src/Accordion/Accordion.d.ts.map +1 -1
  199. package/lib/typescript/src/Accordion/AccordionItem.d.ts +1 -1
  200. package/lib/typescript/src/Accordion/AccordionItem.d.ts.map +1 -1
  201. package/lib/typescript/src/Accordion/type.d.ts +2 -0
  202. package/lib/typescript/src/Accordion/type.d.ts.map +1 -1
  203. package/lib/typescript/src/Alert/Alert.d.ts +1 -0
  204. package/lib/typescript/src/Alert/Alert.d.ts.map +1 -1
  205. package/lib/typescript/src/Avatar/Avatar.d.ts.map +1 -1
  206. package/lib/typescript/src/Avatar/AvatarGroup.d.ts.map +1 -1
  207. package/lib/typescript/src/Avatar/type.d.ts +2 -0
  208. package/lib/typescript/src/Avatar/type.d.ts.map +1 -1
  209. package/lib/typescript/src/Badge/Badge.d.ts +1 -0
  210. package/lib/typescript/src/Badge/Badge.d.ts.map +1 -1
  211. package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts +1 -0
  212. package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts.map +1 -1
  213. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts +1 -1
  214. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts.map +1 -1
  215. package/lib/typescript/src/BottomSheet/type.d.ts +1 -0
  216. package/lib/typescript/src/BottomSheet/type.d.ts.map +1 -1
  217. package/lib/typescript/src/Button/Button.d.ts.map +1 -1
  218. package/lib/typescript/src/Button/type.d.ts +1 -0
  219. package/lib/typescript/src/Button/type.d.ts.map +1 -1
  220. package/lib/typescript/src/Calendar/Calendar.d.ts +1 -1
  221. package/lib/typescript/src/Calendar/Calendar.d.ts.map +1 -1
  222. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts +6 -0
  223. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts.map +1 -1
  224. package/lib/typescript/src/CheckBox/CheckBox.d.ts +1 -0
  225. package/lib/typescript/src/CheckBox/CheckBox.d.ts.map +1 -1
  226. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts +1 -0
  227. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts.map +1 -1
  228. package/lib/typescript/src/Chip/Chip.d.ts.map +1 -1
  229. package/lib/typescript/src/Chip/ChipItem.d.ts +1 -1
  230. package/lib/typescript/src/Chip/ChipItem.d.ts.map +1 -1
  231. package/lib/typescript/src/Chip/type.d.ts +2 -0
  232. package/lib/typescript/src/Chip/type.d.ts.map +1 -1
  233. package/lib/typescript/src/CounterButton/CounterButton.d.ts +1 -1
  234. package/lib/typescript/src/CounterButton/CounterButton.d.ts.map +1 -1
  235. package/lib/typescript/src/CounterButton/type.d.ts +1 -0
  236. package/lib/typescript/src/CounterButton/type.d.ts.map +1 -1
  237. package/lib/typescript/src/DatePicker/DatePicker.d.ts +2 -1
  238. package/lib/typescript/src/DatePicker/DatePicker.d.ts.map +1 -1
  239. package/lib/typescript/src/DatePicker/MonthPicker.d.ts +2 -1
  240. package/lib/typescript/src/DatePicker/MonthPicker.d.ts.map +1 -1
  241. package/lib/typescript/src/DatePicker/TimePicker.d.ts +2 -1
  242. package/lib/typescript/src/DatePicker/TimePicker.d.ts.map +1 -1
  243. package/lib/typescript/src/DatePicker/YearPicker.d.ts +5 -1
  244. package/lib/typescript/src/DatePicker/YearPicker.d.ts.map +1 -1
  245. package/lib/typescript/src/Drawing/Drawing.d.ts +2 -1
  246. package/lib/typescript/src/Drawing/Drawing.d.ts.map +1 -1
  247. package/lib/typescript/src/DropDown/DropDown.d.ts +1 -1
  248. package/lib/typescript/src/DropDown/DropDown.d.ts.map +1 -1
  249. package/lib/typescript/src/DropDown/type.d.ts +1 -0
  250. package/lib/typescript/src/DropDown/type.d.ts.map +1 -1
  251. package/lib/typescript/src/FileView/PdfView.d.ts +2 -1
  252. package/lib/typescript/src/FileView/PdfView.d.ts.map +1 -1
  253. package/lib/typescript/src/Icon/Icon.d.ts.map +1 -1
  254. package/lib/typescript/src/Icon/type.d.ts +1 -0
  255. package/lib/typescript/src/Icon/type.d.ts.map +1 -1
  256. package/lib/typescript/src/Input/Input.d.ts.map +1 -1
  257. package/lib/typescript/src/Input/InputDate.d.ts +6 -2
  258. package/lib/typescript/src/Input/InputDate.d.ts.map +1 -1
  259. package/lib/typescript/src/Input/InputFile.d.ts +1 -1
  260. package/lib/typescript/src/Input/InputFile.d.ts.map +1 -1
  261. package/lib/typescript/src/Input/InputMonth.d.ts +29 -1
  262. package/lib/typescript/src/Input/InputMonth.d.ts.map +1 -1
  263. package/lib/typescript/src/Input/InputOtp.d.ts +1 -0
  264. package/lib/typescript/src/Input/InputOtp.d.ts.map +1 -1
  265. package/lib/typescript/src/Input/InputPassword.d.ts +2 -1
  266. package/lib/typescript/src/Input/InputPassword.d.ts.map +1 -1
  267. package/lib/typescript/src/Input/InputSelect.d.ts +4 -2
  268. package/lib/typescript/src/Input/InputSelect.d.ts.map +1 -1
  269. package/lib/typescript/src/Input/InputYear.d.ts +34 -0
  270. package/lib/typescript/src/Input/InputYear.d.ts.map +1 -0
  271. package/lib/typescript/src/Input/Switch.d.ts +2 -1
  272. package/lib/typescript/src/Input/Switch.d.ts.map +1 -1
  273. package/lib/typescript/src/Input/TextArea.d.ts +1 -1
  274. package/lib/typescript/src/Input/TextArea.d.ts.map +1 -1
  275. package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts +2 -1
  276. package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts.map +1 -1
  277. package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts +2 -1
  278. package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts.map +1 -1
  279. package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts +2 -1
  280. package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts.map +1 -1
  281. package/lib/typescript/src/Input/partials/PickerField.d.ts +25 -0
  282. package/lib/typescript/src/Input/partials/PickerField.d.ts.map +1 -0
  283. package/lib/typescript/src/Input/type.d.ts +13 -0
  284. package/lib/typescript/src/Input/type.d.ts.map +1 -1
  285. package/lib/typescript/src/Label/Label.d.ts +2 -1
  286. package/lib/typescript/src/Label/Label.d.ts.map +1 -1
  287. package/lib/typescript/src/LabelForm/LabelForm.d.ts +2 -1
  288. package/lib/typescript/src/LabelForm/LabelForm.d.ts.map +1 -1
  289. package/lib/typescript/src/List/List.d.ts +1 -1
  290. package/lib/typescript/src/List/List.d.ts.map +1 -1
  291. package/lib/typescript/src/List/ListItem.d.ts +1 -1
  292. package/lib/typescript/src/List/ListItem.d.ts.map +1 -1
  293. package/lib/typescript/src/List/type.d.ts +2 -0
  294. package/lib/typescript/src/List/type.d.ts.map +1 -1
  295. package/lib/typescript/src/Loading/Loading.d.ts +1 -0
  296. package/lib/typescript/src/Loading/Loading.d.ts.map +1 -1
  297. package/lib/typescript/src/Modal/Modal.d.ts +1 -0
  298. package/lib/typescript/src/Modal/Modal.d.ts.map +1 -1
  299. package/lib/typescript/src/Provider/RequiredUpdateAppsProvider.d.ts.map +1 -1
  300. package/lib/typescript/src/RadioButton/RadioButton.d.ts +1 -0
  301. package/lib/typescript/src/RadioButton/RadioButton.d.ts.map +1 -1
  302. package/lib/typescript/src/Select/Select.d.ts +1 -1
  303. package/lib/typescript/src/Select/Select.d.ts.map +1 -1
  304. package/lib/typescript/src/Select/type.d.ts +1 -0
  305. package/lib/typescript/src/Select/type.d.ts.map +1 -1
  306. package/lib/typescript/src/Skeleton/Skeleton.d.ts.map +1 -1
  307. package/lib/typescript/src/Skeleton/type.d.ts +1 -0
  308. package/lib/typescript/src/Skeleton/type.d.ts.map +1 -1
  309. package/lib/typescript/src/Spinner/Spinner.d.ts +7 -4
  310. package/lib/typescript/src/Spinner/Spinner.d.ts.map +1 -1
  311. package/lib/typescript/src/Step/Step.d.ts +1 -1
  312. package/lib/typescript/src/Step/Step.d.ts.map +1 -1
  313. package/lib/typescript/src/Step/StepItem.d.ts +1 -1
  314. package/lib/typescript/src/Step/StepItem.d.ts.map +1 -1
  315. package/lib/typescript/src/Step/type.d.ts +2 -0
  316. package/lib/typescript/src/Step/type.d.ts.map +1 -1
  317. package/lib/typescript/src/Tab/Tab.d.ts.map +1 -1
  318. package/lib/typescript/src/Tab/type.d.ts +1 -0
  319. package/lib/typescript/src/Tab/type.d.ts.map +1 -1
  320. package/lib/typescript/src/TextEditor/LinkSheet.d.ts +26 -0
  321. package/lib/typescript/src/TextEditor/LinkSheet.d.ts.map +1 -0
  322. package/lib/typescript/src/TextEditor/TextEditor.d.ts +2 -19
  323. package/lib/typescript/src/TextEditor/TextEditor.d.ts.map +1 -1
  324. package/lib/typescript/src/TextEditor/Toolbar.d.ts +16 -0
  325. package/lib/typescript/src/TextEditor/Toolbar.d.ts.map +1 -0
  326. package/lib/typescript/src/TextEditor/editorDocument.d.ts +20 -0
  327. package/lib/typescript/src/TextEditor/editorDocument.d.ts.map +1 -0
  328. package/lib/typescript/src/TextEditor/formatState.d.ts +34 -0
  329. package/lib/typescript/src/TextEditor/formatState.d.ts.map +1 -0
  330. package/lib/typescript/src/TextEditor/toolbarButtons.d.ts +5 -0
  331. package/lib/typescript/src/TextEditor/toolbarButtons.d.ts.map +1 -0
  332. package/lib/typescript/src/TextEditor/types.d.ts +42 -0
  333. package/lib/typescript/src/TextEditor/types.d.ts.map +1 -1
  334. package/lib/typescript/src/Timeline/Timeline.d.ts +2 -1
  335. package/lib/typescript/src/Timeline/Timeline.d.ts.map +1 -1
  336. package/lib/typescript/src/Timeline/TimelineItem.d.ts +2 -1
  337. package/lib/typescript/src/Timeline/TimelineItem.d.ts.map +1 -1
  338. package/lib/typescript/src/Toast/Toast.d.ts +2 -1
  339. package/lib/typescript/src/Toast/Toast.d.ts.map +1 -1
  340. package/lib/typescript/src/Typography/Typography.d.ts.map +1 -1
  341. package/lib/typescript/src/Typography/type.d.ts +1 -0
  342. package/lib/typescript/src/Typography/type.d.ts.map +1 -1
  343. package/lib/typescript/src/Ui/Card.d.ts +2 -1
  344. package/lib/typescript/src/Ui/Card.d.ts.map +1 -1
  345. package/lib/typescript/src/Ui/Center.d.ts +2 -1
  346. package/lib/typescript/src/Ui/Center.d.ts.map +1 -1
  347. package/lib/typescript/src/Ui/Col.d.ts +1 -0
  348. package/lib/typescript/src/Ui/Col.d.ts.map +1 -1
  349. package/lib/typescript/src/Ui/Container.d.ts +2 -1
  350. package/lib/typescript/src/Ui/Container.d.ts.map +1 -1
  351. package/lib/typescript/src/Ui/Devider.d.ts +3 -1
  352. package/lib/typescript/src/Ui/Devider.d.ts.map +1 -1
  353. package/lib/typescript/src/Ui/Footer.d.ts +1 -0
  354. package/lib/typescript/src/Ui/Footer.d.ts.map +1 -1
  355. package/lib/typescript/src/Ui/Gap.d.ts +2 -1
  356. package/lib/typescript/src/Ui/Gap.d.ts.map +1 -1
  357. package/lib/typescript/src/Ui/Grid.d.ts +1 -0
  358. package/lib/typescript/src/Ui/Grid.d.ts.map +1 -1
  359. package/lib/typescript/src/function/dateFormatter.d.ts +11 -0
  360. package/lib/typescript/src/function/dateFormatter.d.ts.map +1 -1
  361. package/lib/typescript/src/helpers/getTestID.d.ts +10 -0
  362. package/lib/typescript/src/helpers/getTestID.d.ts.map +1 -0
  363. package/lib/typescript/src/index.d.ts +6 -0
  364. package/lib/typescript/src/index.d.ts.map +1 -1
  365. package/package.json +16 -3
  366. package/src/Accordion/Accordion.tsx +6 -1
  367. package/src/Accordion/AccordionItem.tsx +2 -1
  368. package/src/Accordion/README.md +2 -0
  369. package/src/Accordion/type.tsx +2 -0
  370. package/src/Alert/Alert.tsx +3 -0
  371. package/src/Alert/README.md +1 -0
  372. package/src/Avatar/Avatar.tsx +2 -0
  373. package/src/Avatar/AvatarGroup.tsx +2 -1
  374. package/src/Avatar/README_AVATAR.md +1 -0
  375. package/src/Avatar/README_AVATARGROUP.md +1 -0
  376. package/src/Avatar/type.tsx +2 -0
  377. package/src/Badge/Badge.tsx +4 -0
  378. package/src/Badge/README.md +1 -0
  379. package/src/BadgeIcon/BadgeIcon.tsx +3 -0
  380. package/src/BadgeIcon/README.md +1 -0
  381. package/src/BottomSheet/BottomSheet.tsx +20 -13
  382. package/src/BottomSheet/README.md +1 -0
  383. package/src/BottomSheet/type.tsx +1 -0
  384. package/src/Button/Button.tsx +2 -0
  385. package/src/Button/README.md +1 -0
  386. package/src/Button/type.tsx +1 -0
  387. package/src/Calendar/Calendar.tsx +8 -1
  388. package/src/Calendar/CalendarPropsType.tsx +6 -0
  389. package/src/Calendar/README.md +2 -0
  390. package/src/CheckBox/CheckBox.tsx +13 -2
  391. package/src/CheckBox/CheckBoxList.tsx +7 -1
  392. package/src/CheckBox/README_CHECKBOX.md +1 -0
  393. package/src/CheckBox/README_CHECKBOXLIST.md +1 -0
  394. package/src/Chip/Chip.tsx +18 -5
  395. package/src/Chip/ChipItem.tsx +2 -0
  396. package/src/Chip/README.md +26 -2
  397. package/src/Chip/README_CHIP_ITEM.md +1 -0
  398. package/src/Chip/type.tsx +2 -0
  399. package/src/CounterButton/CounterButton.tsx +5 -0
  400. package/src/CounterButton/README.md +1 -0
  401. package/src/CounterButton/type.tsx +1 -0
  402. package/src/DatePicker/DatePicker.tsx +21 -5
  403. package/src/DatePicker/MonthPicker.tsx +7 -0
  404. package/src/DatePicker/README_DATEPICKER.md +1 -0
  405. package/src/DatePicker/README_MONTHPICKER.md +1 -0
  406. package/src/DatePicker/README_TIMEPICKER.md +1 -0
  407. package/src/DatePicker/README_YEARPICKER.md +1 -0
  408. package/src/DatePicker/TimePicker.tsx +8 -0
  409. package/src/DatePicker/YearPicker.tsx +16 -3
  410. package/src/Drawing/Drawing.tsx +3 -1
  411. package/src/Drawing/README.md +1 -0
  412. package/src/DropDown/DropDown.tsx +12 -1
  413. package/src/DropDown/README.md +1 -0
  414. package/src/DropDown/type.tsx +1 -0
  415. package/src/FileView/PDF_VIEW_README.md +11 -0
  416. package/src/FileView/PdfView.tsx +4 -3
  417. package/src/Icon/Icon.tsx +10 -2
  418. package/src/Icon/README.md +1 -0
  419. package/src/Icon/type.tsx +1 -0
  420. package/src/Input/Input.tsx +17 -2
  421. package/src/Input/InputDate.tsx +40 -15
  422. package/src/Input/InputFile.tsx +27 -14
  423. package/src/Input/InputMonth.tsx +152 -1
  424. package/src/Input/InputOtp.tsx +12 -2
  425. package/src/Input/InputPassword.tsx +6 -1
  426. package/src/Input/InputSelect.tsx +30 -13
  427. package/src/Input/InputYear.tsx +125 -0
  428. package/src/Input/README_INPUT.md +1 -0
  429. package/src/Input/README_INPUT_DATE.md +18 -0
  430. package/src/Input/README_INPUT_FILE.md +1 -0
  431. package/src/Input/README_INPUT_MONTH.md +132 -0
  432. package/src/Input/README_INPUT_OTP.md +1 -0
  433. package/src/Input/README_INPUT_SELECT.md +1 -0
  434. package/src/Input/README_INPUT_YEAR.md +115 -0
  435. package/src/Input/Switch.tsx +7 -1
  436. package/src/Input/TextArea.tsx +15 -2
  437. package/src/Input/partials/InputFile/CardTrigger.tsx +3 -0
  438. package/src/Input/partials/InputFile/CardTriggerSmall.tsx +4 -1
  439. package/src/Input/partials/InputFile/ItemPreview.tsx +12 -2
  440. package/src/Input/partials/PickerField.tsx +125 -0
  441. package/src/Input/type.tsx +14 -0
  442. package/src/Label/Label.tsx +3 -0
  443. package/src/Label/README.md +1 -0
  444. package/src/LabelForm/LabelForm.tsx +3 -1
  445. package/src/List/List.tsx +2 -2
  446. package/src/List/ListItem.tsx +2 -0
  447. package/src/List/README.md +2 -0
  448. package/src/List/type.tsx +2 -0
  449. package/src/Loading/Loading.tsx +3 -1
  450. package/src/Modal/Modal.tsx +15 -3
  451. package/src/Modal/README.md +1 -0
  452. package/src/Provider/RequiredUpdateAppsProvider.tsx +10 -1
  453. package/src/RadioButton/README.md +1 -0
  454. package/src/RadioButton/RadioButton.tsx +12 -2
  455. package/src/Select/README.md +1 -0
  456. package/src/Select/README_Select.md +1 -0
  457. package/src/Select/Select.tsx +13 -3
  458. package/src/Select/type.tsx +1 -0
  459. package/src/Skeleton/README.md +1 -0
  460. package/src/Skeleton/Skeleton.tsx +2 -0
  461. package/src/Skeleton/type.ts +1 -0
  462. package/src/Spinner/Spinner.tsx +15 -2
  463. package/src/Step/README.md +2 -0
  464. package/src/Step/Step.tsx +2 -2
  465. package/src/Step/StepItem.tsx +7 -2
  466. package/src/Step/type.tsx +2 -0
  467. package/src/Tab/README.md +1 -0
  468. package/src/Tab/Tab.tsx +12 -2
  469. package/src/Tab/type.tsx +1 -0
  470. package/src/TextEditor/LinkSheet.tsx +100 -0
  471. package/src/TextEditor/README.md +52 -2
  472. package/src/TextEditor/TextEditor.tsx +92 -500
  473. package/src/TextEditor/Toolbar.tsx +104 -0
  474. package/src/TextEditor/editorDocument.ts +246 -0
  475. package/src/TextEditor/formatState.ts +186 -0
  476. package/src/TextEditor/toolbarButtons.ts +41 -0
  477. package/src/TextEditor/types.tsx +63 -0
  478. package/src/Timeline/README.md +2 -0
  479. package/src/Timeline/Timeline.tsx +7 -2
  480. package/src/Timeline/TimelineItem.tsx +3 -1
  481. package/src/Toast/README.md +16 -0
  482. package/src/Toast/Toast.tsx +13 -2
  483. package/src/Typography/README.md +1 -0
  484. package/src/Typography/Typography.tsx +6 -1
  485. package/src/Typography/type.tsx +2 -10
  486. package/src/Ui/Card.tsx +4 -0
  487. package/src/Ui/Center.tsx +7 -2
  488. package/src/Ui/Col.tsx +7 -2
  489. package/src/Ui/Container.tsx +7 -2
  490. package/src/Ui/Devider.tsx +2 -2
  491. package/src/Ui/Footer.tsx +6 -3
  492. package/src/Ui/Gap.tsx +8 -2
  493. package/src/Ui/Grid.tsx +3 -2
  494. package/src/Ui/README_CARD.md +1 -0
  495. package/src/Ui/README_CONTAINER.md +1 -0
  496. package/src/Ui/README_DEVIDER.md +5 -0
  497. package/src/Ui/README_FOOTER.md +9 -0
  498. package/src/Ui/README_VIEWINSETS.md +1 -0
  499. package/src/function/README_DATE_FORMATTER.md +35 -0
  500. package/src/function/dateFormatter.ts +40 -0
  501. package/src/helpers/getTestID.ts +15 -0
  502. package/src/index.tsx +6 -0
  503. package/lib/module/Button/tests/Button.test.js +0 -70
  504. package/lib/module/Button/tests/Button.test.js.map +0 -1
  505. package/lib/typescript/src/Button/tests/Button.test.d.ts +0 -2
  506. package/lib/typescript/src/Button/tests/Button.test.d.ts.map +0 -1
  507. package/src/Button/tests/Button.test.tsx +0 -49
package/src/Chip/type.tsx CHANGED
@@ -135,6 +135,7 @@ export interface ChipItem {
135
135
  isHorizontal?: boolean;
136
136
  onPress?: (isDisabled: boolean, value: ChipOptionProps) => void;
137
137
  onLayout?: (event: LayoutChangeEvent) => void;
138
+ itemTestID?: string;
138
139
  }
139
140
  export interface ChipProps {
140
141
  options: ChipOptionProps[];
@@ -153,4 +154,5 @@ export interface ChipProps {
153
154
  refreshing?: boolean;
154
155
  footer?: React.ComponentType<any> | React.ReactElement | null | undefined;
155
156
  header?: React.ComponentType<any> | React.ReactElement | null | undefined;
157
+ testID?: string;
156
158
  }
@@ -4,6 +4,7 @@ import Color from '../Color/Color';
4
4
  import Icon from '../Icon';
5
5
  import type { CounterButtonType } from './type';
6
6
  import { fontSizeMap } from '../Typography/type';
7
+ import { getTestID } from '../helpers/getTestID';
7
8
 
8
9
  export default function CounterButton({
9
10
  variant = 'default',
@@ -13,6 +14,7 @@ export default function CounterButton({
13
14
  max,
14
15
  disabledDecrease = false,
15
16
  disabledIncrease = false,
17
+ testID,
16
18
  }: CounterButtonType) {
17
19
  const [count, setCount] = useState<number>(value);
18
20
  const [inputValue, setInputValue] = useState<string>(String(value));
@@ -74,6 +76,7 @@ export default function CounterButton({
74
76
  ]}
75
77
  >
76
78
  <Pressable
79
+ testID={getTestID(testID, 'decrement')}
77
80
  style={[
78
81
  variant === 'default' ? styles.buttonDefault : styles.buttonColor,
79
82
  isDecreaseDisabled && variant === 'color'
@@ -99,6 +102,7 @@ export default function CounterButton({
99
102
  </Pressable>
100
103
 
101
104
  <TextInput
105
+ testID={getTestID(testID, 'input')}
102
106
  style={[
103
107
  styles.input,
104
108
  { fontSize: fontSizeMap['t3'], color: Color.gray[900] },
@@ -109,6 +113,7 @@ export default function CounterButton({
109
113
  />
110
114
 
111
115
  <Pressable
116
+ testID={getTestID(testID, 'increment')}
112
117
  style={[
113
118
  variant === 'default' ? styles.buttonDefault : styles.buttonColor,
114
119
  isIncreaseDisabled && variant === 'color'
@@ -24,6 +24,7 @@ Komponen `CounterButton` adalah tombol penghitung sederhana (+ / -) yang digunak
24
24
  | `variant` | `'default'` \| `'color'` | `'default'` | Menentukan gaya visual: `default` (outline) atau `color` (filled). |
25
25
  | `disabledDecrease` | boolean | `'false'` | disabled decrease |
26
26
  | `disabledIncrease` | boolean | `'false'` | disabled increase |
27
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-decrement`, `-input`, dan `-increment` untuk tiap elemen. |
27
28
 
28
29
  ---
29
30
 
@@ -6,4 +6,5 @@ export interface CounterButtonType {
6
6
  max?: number;
7
7
  disabledDecrease?: boolean;
8
8
  disabledIncrease?: boolean;
9
+ testID?: string;
9
10
  }
@@ -11,6 +11,7 @@ import {
11
11
  type DateRangeProps,
12
12
  } from '../Calendar/CalendarPropsType';
13
13
  import Color from '../Color/Color';
14
+ import { getTestID } from '../helpers/getTestID';
14
15
 
15
16
  interface DatePickerProps extends CalendarTypes {
16
17
  onChange: (selectedDate: DateRangeProps) => void;
@@ -26,6 +27,7 @@ interface DatePickerProps extends CalendarTypes {
26
27
  cancelLabel?: string;
27
28
  isCancelButtonDisabled?: boolean;
28
29
  isConfirmButtonDisabled?: boolean;
30
+ testID?: string;
29
31
  }
30
32
 
31
33
  export default function DatePicker({
@@ -42,6 +44,7 @@ export default function DatePicker({
42
44
  cancelLabel = 'Batalkan',
43
45
  isCancelButtonDisabled = false,
44
46
  isConfirmButtonDisabled = false,
47
+ testID,
45
48
  ...calendarProps
46
49
  }: DatePickerProps) {
47
50
  const [errorValidate, setErrorValidate] = useState<boolean>(false);
@@ -136,12 +139,14 @@ export default function DatePicker({
136
139
  return (
137
140
  <View>
138
141
  <BottomSheet
142
+ testID={getTestID(testID, 'sheet')}
139
143
  isOpen={isOpen}
140
144
  onClose={onClose}
141
145
  footer={
142
146
  <View style={styles.footerContainer}>
143
147
  <View style={styles.buttonWrapper}>
144
148
  <Button
149
+ testID={getTestID(testID, 'cancel')}
145
150
  variant="tertiary"
146
151
  title={cancelLabel}
147
152
  color="primary"
@@ -151,6 +156,7 @@ export default function DatePicker({
151
156
  </View>
152
157
  <View style={styles.buttonWrapper}>
153
158
  <Button
159
+ testID={getTestID(testID, 'confirm')}
154
160
  title={confirmLabel}
155
161
  color="primary"
156
162
  onPress={handleOnPressSubmitButton}
@@ -166,11 +172,21 @@ export default function DatePicker({
166
172
  onChange={handleOnChangeCalendar}
167
173
  {...calendarProps}
168
174
  />
169
- <Alert
170
- color="danger"
171
- message={hint ? hint : 'Error validation'}
172
- hide={!errorValidate}
173
- />
175
+ {testID ? (
176
+ <View testID={getTestID(testID, 'error')}>
177
+ <Alert
178
+ color="danger"
179
+ message={hint ? hint : 'Error validation'}
180
+ hide={!errorValidate}
181
+ />
182
+ </View>
183
+ ) : (
184
+ <Alert
185
+ color="danger"
186
+ message={hint ? hint : 'Error validation'}
187
+ hide={!errorValidate}
188
+ />
189
+ )}
174
190
  </BottomSheet>
175
191
  </View>
176
192
  );
@@ -5,6 +5,7 @@ import Typography from '../Typography/Typography';
5
5
  import Button from '../Button/Button';
6
6
  import Color from '../Color/Color';
7
7
  import { generateMonthOptions } from './helpers';
8
+ import { getTestID } from '../helpers/getTestID';
8
9
 
9
10
  type PickerMode = 'single' | 'range' | 'multiple';
10
11
 
@@ -18,6 +19,7 @@ interface MonthPickerProps {
18
19
  title?: string;
19
20
  cancelLabel?: string;
20
21
  confirmLabel?: string;
22
+ testID?: string;
21
23
  }
22
24
 
23
25
  export default function MonthPicker({
@@ -28,6 +30,7 @@ export default function MonthPicker({
28
30
  cancelLabel = 'Batal',
29
31
  confirmLabel = 'pilih',
30
32
  title = 'Pilih Bulan',
33
+ testID,
31
34
  }: MonthPickerProps) {
32
35
  const [rangeValue, setRangeValue] = useState<{
33
36
  startDate: number | null;
@@ -91,12 +94,14 @@ export default function MonthPicker({
91
94
 
92
95
  return (
93
96
  <BottomSheet
97
+ testID={getTestID(testID, 'sheet')}
94
98
  isOpen={isOpen}
95
99
  onClose={onClose}
96
100
  footer={
97
101
  <View style={styles.containerBottomSheetFooter}>
98
102
  <View style={styles.flex1}>
99
103
  <Button
104
+ testID={getTestID(testID, 'cancel')}
100
105
  title={cancelLabel}
101
106
  variant="tertiary"
102
107
  size="medium"
@@ -106,6 +111,7 @@ export default function MonthPicker({
106
111
  </View>
107
112
  <View style={styles.flex1}>
108
113
  <Button
114
+ testID={getTestID(testID, 'confirm')}
109
115
  title={confirmLabel}
110
116
  color="primary"
111
117
  size="medium"
@@ -137,6 +143,7 @@ export default function MonthPicker({
137
143
  return (
138
144
  <View style={styles.yearItem}>
139
145
  <TouchableOpacity
146
+ testID={getTestID(testID, `option-${item.value}`)}
140
147
  onPress={() => handleSelectMonth(item.value)}
141
148
  style={[
142
149
  styles.option,
@@ -26,6 +26,7 @@ Komponen ini extend dari Calendar, jadi kalian bisa menggunakan semua props yang
26
26
  | `isOpen` | `boolean` | Menentukan apakah BottomSheet sedang terbuka |
27
27
  | `hasError` | `boolean` | (Opsional) Menandai jika terjadi kesalahan validasi |
28
28
  | `value` | DateRangeProps | (Opsional) set default value |
29
+ | `testID` | `string` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-error`. |
29
30
 
30
31
  ---
31
32
 
@@ -14,6 +14,7 @@ Komponen **MonthPicker** adalah komponen pemilih bulan berbasis **React Native**
14
14
  | `onClose` | `() => void` | `undefined` | Callback yang dipanggil saat pengguna menekan tombol **Batal** atau menutup **BottomSheet**. |
15
15
  | `onChange` | `(value: number[] \| { startDate: number \| null; endDate: number \| null }) => void` | `undefined` | Callback yang dipanggil ketika pengguna menekan tombol **Pilih**. Parameter yang dikirim tergantung pada `mode`. |
16
16
  | `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | Menentukan cara pemilihan bulan. |
17
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-option-{value}` untuk tiap bulan. |
17
18
 
18
19
  ### Bentuk *value* yang Dikirim oleh `onChange`
19
20
 
@@ -12,6 +12,7 @@
12
12
  | `onClose` | `() => void` | `-` | Callback saat pengguna menutup **BottomSheet** atau menekan tombol **Batal**. |
13
13
  | `onChange` | `(value: { hour: number; minute: number }) => void` | `-` | Callback saat pengguna menekan tombol **Pilih**. Objek yang dikirim berisi `hour` & `minute`. |
14
14
  | `value` | `{ hour: number; minute: number }` | `{hour: 0, minute: 0}` | Props untuk mengontrol value dari parent |
15
+ | `testID` | `string` | `-` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, `-hour`, dan `-minute`. |
15
16
 
16
17
  ### Bentuk _value_ `onChange`
17
18
 
@@ -18,6 +18,7 @@ Semua outputnya dibungkus dalam komponen **BottomSheet** untuk konsistensi UI.
18
18
  | `onClose` | `() => void` | `-` | Dipanggil saat pengguna menutup picker atau menekan **Batal**. |
19
19
  | `onChange` | `(value: number[] \| { startDate: number \| null; endDate: number \| null }) => void` | `-` | Dipanggil setelah pengguna menekan **Pilih**. Bentuk *value* bergantung pada `mode`. |
20
20
  | `mode` | `'single' \| 'range' \| 'multiple'` | `'single'` | Menentukan mode pemilihan. |
21
+ | `testID` | `string` | `-` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-cancel`, `-confirm`, dan `-option-{year}` untuk tiap tahun. |
21
22
 
22
23
  ### Bentuk *value* `onChange`
23
24
 
@@ -13,6 +13,7 @@ import Button from '../Button/Button';
13
13
  import Color from '../Color/Color';
14
14
  import Typography from '../Typography/Typography';
15
15
  import AnimatedItem from './partials/AnimatedItem';
16
+ import { getTestID } from '../helpers/getTestID';
16
17
 
17
18
  const ITEM_HEIGHT = 40;
18
19
  const SCREEN_WIDTH = Dimensions.get('window').width;
@@ -29,6 +30,7 @@ interface TimePickerProps {
29
30
  title?: string;
30
31
  confirmLabel?: string;
31
32
  cancelLabel?: string;
33
+ testID?: string;
32
34
  }
33
35
 
34
36
  const generateInfiniteData = (max: number, cycles: number) => {
@@ -44,6 +46,7 @@ export default function TimePickerWheel({
44
46
  title = 'Pilih Waktu',
45
47
  cancelLabel = 'Batal',
46
48
  confirmLabel = 'Pilih',
49
+ testID,
47
50
  }: TimePickerProps) {
48
51
  const [selectedHour, setSelectedHour] = useState<number>(value?.hour ?? 0);
49
52
  const [selectedMinute, setSelectedMinute] = useState<number>(
@@ -188,12 +191,14 @@ export default function TimePickerWheel({
188
191
 
189
192
  return (
190
193
  <BottomSheet
194
+ testID={getTestID(testID, 'sheet')}
191
195
  isOpen={isOpen}
192
196
  onClose={onClose}
193
197
  footer={
194
198
  <View style={styles.footer}>
195
199
  <View style={styles.flex1}>
196
200
  <Button
201
+ testID={getTestID(testID, 'cancel')}
197
202
  title={cancelLabel}
198
203
  variant="tertiary"
199
204
  onPress={onClose}
@@ -203,6 +208,7 @@ export default function TimePickerWheel({
203
208
  </View>
204
209
  <View style={styles.flex1}>
205
210
  <Button
211
+ testID={getTestID(testID, 'confirm')}
206
212
  title={confirmLabel}
207
213
  onPress={handleSubmit}
208
214
  color="primary"
@@ -232,6 +238,7 @@ export default function TimePickerWheel({
232
238
  {/* Hour Picker */}
233
239
  <View style={styles.pickerColumn}>
234
240
  <Animated.FlatList
241
+ testID={getTestID(testID, 'hour')}
235
242
  ref={hourRef}
236
243
  data={hours}
237
244
  renderItem={renderHourItem}
@@ -258,6 +265,7 @@ export default function TimePickerWheel({
258
265
  {/* Minute Picker */}
259
266
  <View style={styles.pickerColumn}>
260
267
  <Animated.FlatList
268
+ testID={getTestID(testID, 'minute')}
261
269
  ref={minuteRef}
262
270
  data={minutes}
263
271
  renderItem={renderMinuteItem}
@@ -5,6 +5,7 @@ import Typography from '../Typography/Typography';
5
5
  import Button from '../Button/Button';
6
6
  import Color from '../Color/Color';
7
7
  import Icon from '../Icon';
8
+ import { getTestID } from '../helpers/getTestID';
8
9
 
9
10
  type PickerMode = 'single' | 'range' | 'multiple';
10
11
 
@@ -15,6 +16,10 @@ interface YearPickerProps {
15
16
  value: number[] | { startDate: number | null; endDate: number | null }
16
17
  ) => void;
17
18
  mode?: PickerMode;
19
+ title?: string;
20
+ cancelLabel?: string;
21
+ confirmLabel?: string;
22
+ testID?: string;
18
23
  }
19
24
 
20
25
  export default function YearPicker({
@@ -22,6 +27,10 @@ export default function YearPicker({
22
27
  onClose,
23
28
  onChange,
24
29
  mode = 'single',
30
+ title = 'Pilih Tahun',
31
+ cancelLabel = 'Batal',
32
+ confirmLabel = 'Pilih',
33
+ testID,
25
34
  }: YearPickerProps) {
26
35
  const currentYear = new Date().getFullYear();
27
36
  const pageSize = 9;
@@ -103,13 +112,15 @@ export default function YearPicker({
103
112
 
104
113
  return (
105
114
  <BottomSheet
115
+ testID={getTestID(testID, 'sheet')}
106
116
  isOpen={isOpen}
107
117
  onClose={onClose}
108
118
  footer={
109
119
  <View style={styles.containerBottomSheetFooter}>
110
120
  <View style={styles.flex1}>
111
121
  <Button
112
- title="Batal"
122
+ testID={getTestID(testID, 'cancel')}
123
+ title={cancelLabel}
113
124
  variant="tertiary"
114
125
  size="medium"
115
126
  color="primary"
@@ -118,7 +129,8 @@ export default function YearPicker({
118
129
  </View>
119
130
  <View style={styles.flex1}>
120
131
  <Button
121
- title="Pilih"
132
+ testID={getTestID(testID, 'confirm')}
133
+ title={confirmLabel}
122
134
  color="primary"
123
135
  size="medium"
124
136
  onPress={handleSubmit}
@@ -136,7 +148,7 @@ export default function YearPicker({
136
148
  <Icon name="ArrowLeft" color={Color.base.white100} size={10} />
137
149
  </TouchableOpacity>
138
150
  <Typography variant="t1" weight="semibold" color={Color.gray[900]}>
139
- Pilih Tahun
151
+ {title}
140
152
  </Typography>
141
153
  <TouchableOpacity
142
154
  style={styles.buttonNav}
@@ -162,6 +174,7 @@ export default function YearPicker({
162
174
  return (
163
175
  <View style={styles.yearItem}>
164
176
  <TouchableOpacity
177
+ testID={getTestID(testID, `option-${item}`)}
165
178
  onPress={() => handleSelectYear(item)}
166
179
  style={[
167
180
  styles.option,
@@ -16,6 +16,7 @@ interface DrawingProps {
16
16
  disabled?: boolean;
17
17
  hint?: string;
18
18
  hasError?: boolean;
19
+ testID?: string;
19
20
  }
20
21
 
21
22
  const Drawing = ({
@@ -26,6 +27,7 @@ const Drawing = ({
26
27
  disabled,
27
28
  hint,
28
29
  hasError,
30
+ testID,
29
31
  }: DrawingProps) => {
30
32
  const ref = useRef<SignatureViewRef | null>(null);
31
33
 
@@ -108,7 +110,7 @@ const Drawing = ({
108
110
  }, [dataURL]);
109
111
 
110
112
  return (
111
- <View style={styles.container}>
113
+ <View testID={testID} style={styles.container}>
112
114
  <View style={styles.drawerContainer}>
113
115
  <SignatureCanvas
114
116
  key={canvasKey}
@@ -56,3 +56,4 @@ export default function SignatureForm() {
56
56
  | Prop | Tipe | Default | Deskripsi |
57
57
  | -------- | -------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------- |
58
58
  | `onDraw` | `(value?: string \| undefined) ⇒ void` | `undefined` | Callback berisi tanda tangan **base64** saat pengguna menggambar (dipicu otomatis di `onDraw`). |
59
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
@@ -14,6 +14,7 @@ import {
14
14
  import Color from '../Color/Color';
15
15
  import type { DropDownProps } from './type';
16
16
  import type { ChipOptionProps } from '../Chip/type';
17
+ import { getTestID } from '../helpers/getTestID';
17
18
 
18
19
  const Dropdown = ({
19
20
  options,
@@ -23,6 +24,7 @@ const Dropdown = ({
23
24
  renderItem,
24
25
  width,
25
26
  value,
27
+ testID,
26
28
  }: DropDownProps) => {
27
29
  const [isOpen, setIsOpen] = useState(false);
28
30
  const [selected, setSelected] = useState<string | number>();
@@ -67,12 +69,17 @@ const Dropdown = ({
67
69
 
68
70
  return (
69
71
  <>
70
- <TouchableOpacity ref={buttonRef} onPress={handleToggle}>
72
+ <TouchableOpacity
73
+ testID={getTestID(testID, 'trigger')}
74
+ ref={buttonRef}
75
+ onPress={handleToggle}
76
+ >
71
77
  {renderButton}
72
78
  </TouchableOpacity>
73
79
  {isOpen && (
74
80
  <Modal transparent animationType="none" visible>
75
81
  <Pressable
82
+ testID={getTestID(testID, 'modal')}
76
83
  style={StyleSheet.absoluteFillObject}
77
84
  onPress={() => setIsOpen(false)}
78
85
  />
@@ -95,6 +102,10 @@ const Dropdown = ({
95
102
  {options.map((item, idx) => (
96
103
  <TouchableOpacity
97
104
  key={idx}
105
+ testID={getTestID(
106
+ testID,
107
+ item.value != null ? `option-${item.value}` : `item-${idx}`
108
+ )}
98
109
  onPress={() => handlePressOption(item)}
99
110
  style={[
100
111
  styles.option,
@@ -26,6 +26,7 @@ Serta modul standar React Native: `Modal`, `ScrollView`, dll. Tidak memerlukan l
26
26
  | `renderItem` | `React.ReactNode` | `undefined` | Elemen yang dipakai sebagai tombol di tiap item yang ada di dalam dropdown |
27
27
  | `width` | `number` | `undefined` | Angka yang digunakan untuk mengatur lebar pembungkus list |
28
28
  | `value` | `number \| string` | `undefined` | Props yang dapat memungkinkan state selected dari luar |
29
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-trigger`, `-modal`, dan `-option-{value}` (atau `-item-{index}` jika opsi tidak memiliki `value`) untuk tiap opsi. |
29
30
 
30
31
  ### Struktur `ChipOptionProps`
31
32
 
@@ -9,4 +9,5 @@ export interface DropDownProps {
9
9
  renderItem?: (item: ChipOptionProps, index: number) => React.ReactNode;
10
10
  width?: number;
11
11
  value?: string | number | null;
12
+ testID?: string;
12
13
  }
@@ -13,3 +13,14 @@ npm install react-native-pdf
13
13
  # atau
14
14
  yarn add react-native-pdf
15
15
  ```
16
+
17
+ ---
18
+
19
+ ## Props
20
+
21
+ | Props | Tipe | Wajib | Default | Deskripsi |
22
+ | -------- | --------------------------------- | ----- | ------- | ----------------------------------------------------------------------------------------------------- |
23
+ | `source` | `{ uri, headers, cache, ... }` | ✅ | - | Sumber dokumen PDF. Kalau kosong, komponen merender container placeholder. |
24
+ | `testID` | `string` | ❌ | - | ID untuk automation testing (Maestro/Detox/Appium). Tetap terpasang pada placeholder saat `source` kosong. |
25
+
26
+ Props lain diteruskan apa adanya ke `Pdf` dari `react-native-pdf`.
@@ -14,13 +14,14 @@ type Source = {
14
14
 
15
15
  interface Props extends React.ComponentProps<typeof Pdf> {
16
16
  source: Source;
17
+ testID?: string;
17
18
  }
18
19
 
19
- const PdfView = ({ source, ...props }: Props) => {
20
- if (!source) return <View />;
20
+ const PdfView = ({ source, testID, ...props }: Props) => {
21
+ if (!source) return <View testID={testID} />;
21
22
 
22
23
  return (
23
- <View style={styles.container}>
24
+ <View testID={testID} style={styles.container}>
24
25
  <Pdf source={source} style={styles.pdf} {...props} />
25
26
  </View>
26
27
  );
package/src/Icon/Icon.tsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { type ViewStyle } from 'react-native';
2
+ import { View, type ViewStyle } from 'react-native';
3
3
  import AirPlane from './icons/AirPlane';
4
4
  import AlignCenter from './icons/AlignCenter';
5
5
  import AlignLeft from './icons/AlignLeft';
@@ -353,6 +353,7 @@ const Icon: React.FC<IconProps> = ({
353
353
  size = 24,
354
354
  color = '#000',
355
355
  style,
356
+ testID,
356
357
  }) => {
357
358
  const SelectedIcon = icons[name];
358
359
 
@@ -360,7 +361,14 @@ const Icon: React.FC<IconProps> = ({
360
361
  return null;
361
362
  }
362
363
 
363
- return <SelectedIcon size={size} color={color} style={style} />;
364
+ const icon = <SelectedIcon size={size} color={color} style={style} />;
365
+
366
+ // The 170 files in ./icons take only size/color and spread nothing, so a
367
+ // testID handed to them would be dropped. Wrapping is the one-file fix --
368
+ // and only when an id is actually asked for, so existing call sites keep
369
+ // their exact tree. Teaching every icon to forward testID would be the
370
+ // thorough fix; it is a 170-file codemod and not what this change is.
371
+ return testID ? <View testID={testID}>{icon}</View> : icon;
364
372
  };
365
373
 
366
374
  export default Icon;
@@ -45,6 +45,7 @@ export default function App() {
45
45
  | `size` | number | 24 | Ukuran icon dalam piksel |
46
46
  | `color` | string | "#000" | Warna icon |
47
47
  | `style` | object | `{}` | Gaya tambahan (optional) |
48
+ | `testID` | `string` | - | ID untuk automation testing. Ikon dibungkus View ber-testID hanya saat prop ini diisi. |
48
49
 
49
50
  ## Daftar Icon
50
51
 
package/src/Icon/type.tsx CHANGED
@@ -178,4 +178,5 @@ export interface IconProps {
178
178
  size?: number;
179
179
  color?: string;
180
180
  style?: ViewStyle;
181
+ testID?: string;
181
182
  }
@@ -4,6 +4,7 @@ import { Icon } from '../Icon';
4
4
  import Color from '../Color/Color';
5
5
  import LabelForm from '../LabelForm/LabelForm';
6
6
  import Typography from '../Typography/Typography';
7
+ import { getTestID } from '../helpers/getTestID';
7
8
  import type { InputProps } from './type';
8
9
 
9
10
  const Input = React.forwardRef<TextInput, InputProps>(
@@ -24,6 +25,7 @@ const Input = React.forwardRef<TextInput, InputProps>(
24
25
  iconRightColor,
25
26
  prefix,
26
27
  required = false,
28
+ testID,
27
29
  ...rest
28
30
  },
29
31
  ref
@@ -50,7 +52,13 @@ const Input = React.forwardRef<TextInput, InputProps>(
50
52
 
51
53
  return (
52
54
  <View style={styles.gap}>
53
- {label ? <LabelForm title={label} required={required} /> : null}
55
+ {label ? (
56
+ <LabelForm
57
+ testID={getTestID(testID, 'label')}
58
+ title={label}
59
+ required={required}
60
+ />
61
+ ) : null}
54
62
 
55
63
  <View
56
64
  style={[
@@ -69,6 +77,7 @@ const Input = React.forwardRef<TextInput, InputProps>(
69
77
  {prefix && <View style={styles.prefixContainer}>{prefix}</View>}
70
78
 
71
79
  <TextInput
80
+ testID={getTestID(testID, 'input')}
72
81
  {...rest}
73
82
  ref={ref}
74
83
  style={[styles.input, style]}
@@ -82,6 +91,7 @@ const Input = React.forwardRef<TextInput, InputProps>(
82
91
  <View style={styles.rightContainer}>
83
92
  {clearButton && inputValue !== '' && (
84
93
  <TouchableOpacity
94
+ testID={getTestID(testID, 'clear')}
85
95
  onPress={handleClear}
86
96
  style={iconRight && styles.mr8}
87
97
  >
@@ -89,7 +99,11 @@ const Input = React.forwardRef<TextInput, InputProps>(
89
99
  </TouchableOpacity>
90
100
  )}
91
101
  {iconRight && (
92
- <TouchableOpacity onPress={onPressIconRight} hitSlop={10}>
102
+ <TouchableOpacity
103
+ testID={getTestID(testID, 'toggle')}
104
+ onPress={onPressIconRight}
105
+ hitSlop={10}
106
+ >
93
107
  <Icon
94
108
  name={iconRight}
95
109
  size={20}
@@ -102,6 +116,7 @@ const Input = React.forwardRef<TextInput, InputProps>(
102
116
  </View>
103
117
  {hint ? (
104
118
  <Typography
119
+ testID={getTestID(testID, 'error')}
105
120
  color={hasError ? Color.danger[500] : Color.gray[700]}
106
121
  variant="t3"
107
122
  weight="medium"