shad-m 1.0.0 → 1.0.2

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 (628) hide show
  1. package/dist/common/interactive/list.d.ts +1 -1
  2. package/dist/common/interactive/select/variants.d.ts +1 -1
  3. package/dist/components/alert-dialog.d.ts +2 -2
  4. package/dist/components/badge.d.ts +3 -3
  5. package/dist/components/button.d.ts +4 -4
  6. package/dist/components/chip.d.ts +2 -2
  7. package/dist/components/command.d.ts +7 -7
  8. package/dist/components/dialog.d.ts +2 -2
  9. package/dist/components/input-otp.d.ts +2 -2
  10. package/dist/components/resizable.d.ts +1 -1
  11. package/dist/components/sidebar.d.ts +1 -1
  12. package/dist/components/spinner.d.ts +2 -2
  13. package/dist/components/stepper.d.ts +3 -3
  14. package/dist/components/toggle-group.d.ts +2 -2
  15. package/dist/components/toggle.d.ts +2 -2
  16. package/dist/index.css +43 -0
  17. package/dist/index.css.map +1 -0
  18. package/dist/index.d.ts +59 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +8189 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/index.mjs +7846 -0
  23. package/dist/index.mjs.map +1 -0
  24. package/package.json +34 -2
  25. package/dist/assets/Animation/index.js +0 -180
  26. package/dist/assets/Animation/index.js.map +0 -1
  27. package/dist/assets/Animation/index.mjs +0 -79
  28. package/dist/assets/Animation/index.mjs.map +0 -1
  29. package/dist/assets/Icon/index.js +0 -2102
  30. package/dist/assets/Icon/index.js.map +0 -1
  31. package/dist/assets/Icon/index.mjs +0 -421
  32. package/dist/assets/Icon/index.mjs.map +0 -1
  33. package/dist/assets/Image/index.js +0 -755
  34. package/dist/assets/Image/index.js.map +0 -1
  35. package/dist/assets/Image/index.mjs +0 -150
  36. package/dist/assets/Image/index.mjs.map +0 -1
  37. package/dist/common/display/countdown.js +0 -68
  38. package/dist/common/display/countdown.js.map +0 -1
  39. package/dist/common/display/countdown.mjs +0 -46
  40. package/dist/common/display/countdown.mjs.map +0 -1
  41. package/dist/common/display/display-field-group.js +0 -91
  42. package/dist/common/display/display-field-group.js.map +0 -1
  43. package/dist/common/display/display-field-group.mjs +0 -89
  44. package/dist/common/display/display-field-group.mjs.map +0 -1
  45. package/dist/common/display/display-field.js +0 -46
  46. package/dist/common/display/display-field.js.map +0 -1
  47. package/dist/common/display/display-field.mjs +0 -40
  48. package/dist/common/display/display-field.mjs.map +0 -1
  49. package/dist/common/display/display-html-string.js +0 -52
  50. package/dist/common/display/display-html-string.js.map +0 -1
  51. package/dist/common/display/display-html-string.mjs +0 -30
  52. package/dist/common/display/display-html-string.mjs.map +0 -1
  53. package/dist/common/display/index.js +0 -59
  54. package/dist/common/display/index.js.map +0 -1
  55. package/dist/common/display/index.mjs +0 -10
  56. package/dist/common/display/index.mjs.map +0 -1
  57. package/dist/common/display/page-breadcrumb.js +0 -43
  58. package/dist/common/display/page-breadcrumb.js.map +0 -1
  59. package/dist/common/display/page-breadcrumb.mjs +0 -37
  60. package/dist/common/display/page-breadcrumb.mjs.map +0 -1
  61. package/dist/common/display/page-v2.js +0 -58
  62. package/dist/common/display/page-v2.js.map +0 -1
  63. package/dist/common/display/page-v2.mjs +0 -20
  64. package/dist/common/display/page-v2.mjs.map +0 -1
  65. package/dist/common/display/page.js +0 -155
  66. package/dist/common/display/page.js.map +0 -1
  67. package/dist/common/display/page.mjs +0 -138
  68. package/dist/common/display/page.mjs.map +0 -1
  69. package/dist/common/display/score-meter.js +0 -161
  70. package/dist/common/display/score-meter.js.map +0 -1
  71. package/dist/common/display/score-meter.mjs +0 -140
  72. package/dist/common/display/score-meter.mjs.map +0 -1
  73. package/dist/common/display/sidebar/app-sidebar.js +0 -114
  74. package/dist/common/display/sidebar/app-sidebar.js.map +0 -1
  75. package/dist/common/display/sidebar/app-sidebar.mjs +0 -92
  76. package/dist/common/display/sidebar/app-sidebar.mjs.map +0 -1
  77. package/dist/common/display/sidebar/index.js +0 -89
  78. package/dist/common/display/sidebar/index.js.map +0 -1
  79. package/dist/common/display/sidebar/index.mjs +0 -81
  80. package/dist/common/display/sidebar/index.mjs.map +0 -1
  81. package/dist/common/display/sidebar/nav-main.js +0 -406
  82. package/dist/common/display/sidebar/nav-main.js.map +0 -1
  83. package/dist/common/display/sidebar/nav-main.mjs +0 -400
  84. package/dist/common/display/sidebar/nav-main.mjs.map +0 -1
  85. package/dist/common/display/sidebar/sidebar-sheet.js +0 -140
  86. package/dist/common/display/sidebar/sidebar-sheet.js.map +0 -1
  87. package/dist/common/display/sidebar/sidebar-sheet.mjs +0 -118
  88. package/dist/common/display/sidebar/sidebar-sheet.mjs.map +0 -1
  89. package/dist/common/display/sidebar/types.js +0 -4
  90. package/dist/common/display/sidebar/types.js.map +0 -1
  91. package/dist/common/display/sidebar/types.mjs +0 -3
  92. package/dist/common/display/sidebar/types.mjs.map +0 -1
  93. package/dist/common/display/status-state.js +0 -97
  94. package/dist/common/display/status-state.js.map +0 -1
  95. package/dist/common/display/status-state.mjs +0 -88
  96. package/dist/common/display/status-state.mjs.map +0 -1
  97. package/dist/common/forms/auto-form.js +0 -101
  98. package/dist/common/forms/auto-form.js.map +0 -1
  99. package/dist/common/forms/auto-form.mjs +0 -78
  100. package/dist/common/forms/auto-form.mjs.map +0 -1
  101. package/dist/common/forms/form-field.js +0 -58
  102. package/dist/common/forms/form-field.js.map +0 -1
  103. package/dist/common/forms/form-field.mjs +0 -56
  104. package/dist/common/forms/form-field.mjs.map +0 -1
  105. package/dist/common/forms/form-input-field.js +0 -64
  106. package/dist/common/forms/form-input-field.js.map +0 -1
  107. package/dist/common/forms/form-input-field.mjs +0 -62
  108. package/dist/common/forms/form-input-field.mjs.map +0 -1
  109. package/dist/common/forms/index.js +0 -22
  110. package/dist/common/forms/index.js.map +0 -1
  111. package/dist/common/forms/index.mjs +0 -5
  112. package/dist/common/forms/index.mjs.map +0 -1
  113. package/dist/common/forms/switch-field.js +0 -106
  114. package/dist/common/forms/switch-field.js.map +0 -1
  115. package/dist/common/forms/switch-field.mjs +0 -104
  116. package/dist/common/forms/switch-field.mjs.map +0 -1
  117. package/dist/common/interactive/alert-dialog-wrapper.js +0 -141
  118. package/dist/common/interactive/alert-dialog-wrapper.js.map +0 -1
  119. package/dist/common/interactive/alert-dialog-wrapper.mjs +0 -119
  120. package/dist/common/interactive/alert-dialog-wrapper.mjs.map +0 -1
  121. package/dist/common/interactive/autocomplete.js +0 -178
  122. package/dist/common/interactive/autocomplete.js.map +0 -1
  123. package/dist/common/interactive/autocomplete.mjs +0 -157
  124. package/dist/common/interactive/autocomplete.mjs.map +0 -1
  125. package/dist/common/interactive/copy-tooltip.js +0 -152
  126. package/dist/common/interactive/copy-tooltip.js.map +0 -1
  127. package/dist/common/interactive/copy-tooltip.mjs +0 -143
  128. package/dist/common/interactive/copy-tooltip.mjs.map +0 -1
  129. package/dist/common/interactive/date-field.js +0 -303
  130. package/dist/common/interactive/date-field.js.map +0 -1
  131. package/dist/common/interactive/date-field.mjs +0 -281
  132. package/dist/common/interactive/date-field.mjs.map +0 -1
  133. package/dist/common/interactive/date-input/date-input.js +0 -68
  134. package/dist/common/interactive/date-input/date-input.js.map +0 -1
  135. package/dist/common/interactive/date-input/date-input.mjs +0 -62
  136. package/dist/common/interactive/date-input/date-input.mjs.map +0 -1
  137. package/dist/common/interactive/date-input/index.js +0 -17
  138. package/dist/common/interactive/date-input/index.js.map +0 -1
  139. package/dist/common/interactive/date-input/index.mjs +0 -4
  140. package/dist/common/interactive/date-input/index.mjs.map +0 -1
  141. package/dist/common/interactive/date-input/types.js +0 -4
  142. package/dist/common/interactive/date-input/types.js.map +0 -1
  143. package/dist/common/interactive/date-input/types.mjs +0 -3
  144. package/dist/common/interactive/date-input/types.mjs.map +0 -1
  145. package/dist/common/interactive/date-input/use-typed-date.js +0 -478
  146. package/dist/common/interactive/date-input/use-typed-date.js.map +0 -1
  147. package/dist/common/interactive/date-input/use-typed-date.mjs +0 -476
  148. package/dist/common/interactive/date-input/use-typed-date.mjs.map +0 -1
  149. package/dist/common/interactive/date-input/utils.js +0 -34
  150. package/dist/common/interactive/date-input/utils.js.map +0 -1
  151. package/dist/common/interactive/date-input/utils.mjs +0 -29
  152. package/dist/common/interactive/date-input/utils.mjs.map +0 -1
  153. package/dist/common/interactive/date-picker.js +0 -616
  154. package/dist/common/interactive/date-picker.js.map +0 -1
  155. package/dist/common/interactive/date-picker.mjs +0 -594
  156. package/dist/common/interactive/date-picker.mjs.map +0 -1
  157. package/dist/common/interactive/date-range-input/date-range-input.js +0 -82
  158. package/dist/common/interactive/date-range-input/date-range-input.js.map +0 -1
  159. package/dist/common/interactive/date-range-input/date-range-input.mjs +0 -76
  160. package/dist/common/interactive/date-range-input/date-range-input.mjs.map +0 -1
  161. package/dist/common/interactive/date-range-input/index.js +0 -12
  162. package/dist/common/interactive/date-range-input/index.js.map +0 -1
  163. package/dist/common/interactive/date-range-input/index.mjs +0 -3
  164. package/dist/common/interactive/date-range-input/index.mjs.map +0 -1
  165. package/dist/common/interactive/date-range-input/types.js +0 -4
  166. package/dist/common/interactive/date-range-input/types.js.map +0 -1
  167. package/dist/common/interactive/date-range-input/types.mjs +0 -3
  168. package/dist/common/interactive/date-range-input/types.mjs.map +0 -1
  169. package/dist/common/interactive/date-range-input/use-typed-date-range.js +0 -602
  170. package/dist/common/interactive/date-range-input/use-typed-date-range.js.map +0 -1
  171. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs +0 -600
  172. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs.map +0 -1
  173. package/dist/common/interactive/date-time-picker.js +0 -215
  174. package/dist/common/interactive/date-time-picker.js.map +0 -1
  175. package/dist/common/interactive/date-time-picker.mjs +0 -213
  176. package/dist/common/interactive/date-time-picker.mjs.map +0 -1
  177. package/dist/common/interactive/dialog-wrapper.js +0 -124
  178. package/dist/common/interactive/dialog-wrapper.js.map +0 -1
  179. package/dist/common/interactive/dialog-wrapper.mjs +0 -102
  180. package/dist/common/interactive/dialog-wrapper.mjs.map +0 -1
  181. package/dist/common/interactive/filter.js +0 -287
  182. package/dist/common/interactive/filter.js.map +0 -1
  183. package/dist/common/interactive/filter.mjs +0 -280
  184. package/dist/common/interactive/filter.mjs.map +0 -1
  185. package/dist/common/interactive/index.js +0 -235
  186. package/dist/common/interactive/index.js.map +0 -1
  187. package/dist/common/interactive/index.mjs +0 -24
  188. package/dist/common/interactive/index.mjs.map +0 -1
  189. package/dist/common/interactive/list.js +0 -160
  190. package/dist/common/interactive/list.js.map +0 -1
  191. package/dist/common/interactive/list.mjs +0 -134
  192. package/dist/common/interactive/list.mjs.map +0 -1
  193. package/dist/common/interactive/otp-dialog/index.js +0 -35
  194. package/dist/common/interactive/otp-dialog/index.js.map +0 -1
  195. package/dist/common/interactive/otp-dialog/index.mjs +0 -6
  196. package/dist/common/interactive/otp-dialog/index.mjs.map +0 -1
  197. package/dist/common/interactive/otp-dialog/otp-dialog.js +0 -325
  198. package/dist/common/interactive/otp-dialog/otp-dialog.js.map +0 -1
  199. package/dist/common/interactive/otp-dialog/otp-dialog.mjs +0 -303
  200. package/dist/common/interactive/otp-dialog/otp-dialog.mjs.map +0 -1
  201. package/dist/common/interactive/otp-dialog/reducer.js +0 -40
  202. package/dist/common/interactive/otp-dialog/reducer.js.map +0 -1
  203. package/dist/common/interactive/otp-dialog/reducer.mjs +0 -37
  204. package/dist/common/interactive/otp-dialog/reducer.mjs.map +0 -1
  205. package/dist/common/interactive/otp-dialog/types.js +0 -15
  206. package/dist/common/interactive/otp-dialog/types.js.map +0 -1
  207. package/dist/common/interactive/otp-dialog/types.mjs +0 -13
  208. package/dist/common/interactive/otp-dialog/types.mjs.map +0 -1
  209. package/dist/common/interactive/otp-dialog/utils.js +0 -24
  210. package/dist/common/interactive/otp-dialog/utils.js.map +0 -1
  211. package/dist/common/interactive/otp-dialog/utils.mjs +0 -21
  212. package/dist/common/interactive/otp-dialog/utils.mjs.map +0 -1
  213. package/dist/common/interactive/pagination/PaginationSkeleton.js +0 -51
  214. package/dist/common/interactive/pagination/PaginationSkeleton.js.map +0 -1
  215. package/dist/common/interactive/pagination/PaginationSkeleton.mjs +0 -49
  216. package/dist/common/interactive/pagination/PaginationSkeleton.mjs.map +0 -1
  217. package/dist/common/interactive/pagination/index.js +0 -235
  218. package/dist/common/interactive/pagination/index.js.map +0 -1
  219. package/dist/common/interactive/pagination/index.mjs +0 -223
  220. package/dist/common/interactive/pagination/index.mjs.map +0 -1
  221. package/dist/common/interactive/pagination/usePagination.js +0 -28
  222. package/dist/common/interactive/pagination/usePagination.js.map +0 -1
  223. package/dist/common/interactive/pagination/usePagination.mjs +0 -25
  224. package/dist/common/interactive/pagination/usePagination.mjs.map +0 -1
  225. package/dist/common/interactive/popover-wrapper.js +0 -138
  226. package/dist/common/interactive/popover-wrapper.js.map +0 -1
  227. package/dist/common/interactive/popover-wrapper.mjs +0 -116
  228. package/dist/common/interactive/popover-wrapper.mjs.map +0 -1
  229. package/dist/common/interactive/pressable.js +0 -84
  230. package/dist/common/interactive/pressable.js.map +0 -1
  231. package/dist/common/interactive/pressable.mjs +0 -62
  232. package/dist/common/interactive/pressable.mjs.map +0 -1
  233. package/dist/common/interactive/select/context.js +0 -38
  234. package/dist/common/interactive/select/context.js.map +0 -1
  235. package/dist/common/interactive/select/context.mjs +0 -14
  236. package/dist/common/interactive/select/context.mjs.map +0 -1
  237. package/dist/common/interactive/select/index.js +0 -123
  238. package/dist/common/interactive/select/index.js.map +0 -1
  239. package/dist/common/interactive/select/index.mjs +0 -18
  240. package/dist/common/interactive/select/index.mjs.map +0 -1
  241. package/dist/common/interactive/select/select-body.js +0 -89
  242. package/dist/common/interactive/select/select-body.js.map +0 -1
  243. package/dist/common/interactive/select/select-body.mjs +0 -67
  244. package/dist/common/interactive/select/select-body.mjs.map +0 -1
  245. package/dist/common/interactive/select/select-close.js +0 -38
  246. package/dist/common/interactive/select/select-close.js.map +0 -1
  247. package/dist/common/interactive/select/select-close.mjs +0 -16
  248. package/dist/common/interactive/select/select-close.mjs.map +0 -1
  249. package/dist/common/interactive/select/select-content-auto-layout.js +0 -221
  250. package/dist/common/interactive/select/select-content-auto-layout.js.map +0 -1
  251. package/dist/common/interactive/select/select-content-auto-layout.mjs +0 -199
  252. package/dist/common/interactive/select/select-content-auto-layout.mjs.map +0 -1
  253. package/dist/common/interactive/select/select-content-group-auto-layout.js +0 -411
  254. package/dist/common/interactive/select/select-content-group-auto-layout.js.map +0 -1
  255. package/dist/common/interactive/select/select-content-group-auto-layout.mjs +0 -389
  256. package/dist/common/interactive/select/select-content-group-auto-layout.mjs.map +0 -1
  257. package/dist/common/interactive/select/select-content.js +0 -187
  258. package/dist/common/interactive/select/select-content.js.map +0 -1
  259. package/dist/common/interactive/select/select-content.mjs +0 -165
  260. package/dist/common/interactive/select/select-content.mjs.map +0 -1
  261. package/dist/common/interactive/select/select-footer.js +0 -82
  262. package/dist/common/interactive/select/select-footer.js.map +0 -1
  263. package/dist/common/interactive/select/select-footer.mjs +0 -60
  264. package/dist/common/interactive/select/select-footer.mjs.map +0 -1
  265. package/dist/common/interactive/select/select-item.js +0 -214
  266. package/dist/common/interactive/select/select-item.js.map +0 -1
  267. package/dist/common/interactive/select/select-item.mjs +0 -191
  268. package/dist/common/interactive/select/select-item.mjs.map +0 -1
  269. package/dist/common/interactive/select/select-layout.js +0 -66
  270. package/dist/common/interactive/select/select-layout.js.map +0 -1
  271. package/dist/common/interactive/select/select-layout.mjs +0 -41
  272. package/dist/common/interactive/select/select-layout.mjs.map +0 -1
  273. package/dist/common/interactive/select/select-search.js +0 -55
  274. package/dist/common/interactive/select/select-search.js.map +0 -1
  275. package/dist/common/interactive/select/select-search.mjs +0 -33
  276. package/dist/common/interactive/select/select-search.mjs.map +0 -1
  277. package/dist/common/interactive/select/select-states.js +0 -57
  278. package/dist/common/interactive/select/select-states.js.map +0 -1
  279. package/dist/common/interactive/select/select-states.mjs +0 -34
  280. package/dist/common/interactive/select/select-states.mjs.map +0 -1
  281. package/dist/common/interactive/select/select-trigger.js +0 -310
  282. package/dist/common/interactive/select/select-trigger.js.map +0 -1
  283. package/dist/common/interactive/select/select-trigger.mjs +0 -286
  284. package/dist/common/interactive/select/select-trigger.mjs.map +0 -1
  285. package/dist/common/interactive/select/select-value.js +0 -52
  286. package/dist/common/interactive/select/select-value.js.map +0 -1
  287. package/dist/common/interactive/select/select-value.mjs +0 -30
  288. package/dist/common/interactive/select/select-value.mjs.map +0 -1
  289. package/dist/common/interactive/select/select.js +0 -184
  290. package/dist/common/interactive/select/select.js.map +0 -1
  291. package/dist/common/interactive/select/select.mjs +0 -162
  292. package/dist/common/interactive/select/select.mjs.map +0 -1
  293. package/dist/common/interactive/select/types.js +0 -4
  294. package/dist/common/interactive/select/types.js.map +0 -1
  295. package/dist/common/interactive/select/types.mjs +0 -3
  296. package/dist/common/interactive/select/types.mjs.map +0 -1
  297. package/dist/common/interactive/select/utils.js +0 -31
  298. package/dist/common/interactive/select/utils.js.map +0 -1
  299. package/dist/common/interactive/select/utils.mjs +0 -28
  300. package/dist/common/interactive/select/utils.mjs.map +0 -1
  301. package/dist/common/interactive/select/variants.js +0 -27
  302. package/dist/common/interactive/select/variants.js.map +0 -1
  303. package/dist/common/interactive/select/variants.mjs +0 -25
  304. package/dist/common/interactive/select/variants.mjs.map +0 -1
  305. package/dist/common/interactive/select-chip.js +0 -76
  306. package/dist/common/interactive/select-chip.js.map +0 -1
  307. package/dist/common/interactive/select-chip.mjs +0 -74
  308. package/dist/common/interactive/select-chip.mjs.map +0 -1
  309. package/dist/common/interactive/select-level.js +0 -236
  310. package/dist/common/interactive/select-level.js.map +0 -1
  311. package/dist/common/interactive/select-level.mjs +0 -230
  312. package/dist/common/interactive/select-level.mjs.map +0 -1
  313. package/dist/common/interactive/select-range.js +0 -211
  314. package/dist/common/interactive/select-range.js.map +0 -1
  315. package/dist/common/interactive/select-range.mjs +0 -209
  316. package/dist/common/interactive/select-range.mjs.map +0 -1
  317. package/dist/common/interactive/select-with-api.js +0 -767
  318. package/dist/common/interactive/select-with-api.js.map +0 -1
  319. package/dist/common/interactive/select-with-api.mjs +0 -758
  320. package/dist/common/interactive/select-with-api.mjs.map +0 -1
  321. package/dist/common/interactive/select.js +0 -15
  322. package/dist/common/interactive/select.js.map +0 -1
  323. package/dist/common/interactive/select.mjs +0 -4
  324. package/dist/common/interactive/select.mjs.map +0 -1
  325. package/dist/common/interactive/sheet-wrapper.js +0 -105
  326. package/dist/common/interactive/sheet-wrapper.js.map +0 -1
  327. package/dist/common/interactive/sheet-wrapper.mjs +0 -83
  328. package/dist/common/interactive/sheet-wrapper.mjs.map +0 -1
  329. package/dist/common/interactive/table/enhanced-table.js +0 -390
  330. package/dist/common/interactive/table/enhanced-table.js.map +0 -1
  331. package/dist/common/interactive/table/enhanced-table.mjs +0 -388
  332. package/dist/common/interactive/table/enhanced-table.mjs.map +0 -1
  333. package/dist/common/interactive/table/index.js +0 -83
  334. package/dist/common/interactive/table/index.js.map +0 -1
  335. package/dist/common/interactive/table/index.mjs +0 -68
  336. package/dist/common/interactive/table/index.mjs.map +0 -1
  337. package/dist/common/interactive/table/table-pagination.js +0 -12
  338. package/dist/common/interactive/table/table-pagination.js.map +0 -1
  339. package/dist/common/interactive/table/table-pagination.mjs +0 -10
  340. package/dist/common/interactive/table/table-pagination.mjs.map +0 -1
  341. package/dist/common/interactive/table/types.js +0 -4
  342. package/dist/common/interactive/table/types.js.map +0 -1
  343. package/dist/common/interactive/table/types.mjs +0 -3
  344. package/dist/common/interactive/table/types.mjs.map +0 -1
  345. package/dist/common/interactive/time-picker.js +0 -313
  346. package/dist/common/interactive/time-picker.js.map +0 -1
  347. package/dist/common/interactive/time-picker.mjs +0 -307
  348. package/dist/common/interactive/time-picker.mjs.map +0 -1
  349. package/dist/common/interactive/types.js +0 -4
  350. package/dist/common/interactive/types.js.map +0 -1
  351. package/dist/common/interactive/types.mjs +0 -3
  352. package/dist/common/interactive/types.mjs.map +0 -1
  353. package/dist/common/pages/page-404.js +0 -16
  354. package/dist/common/pages/page-404.js.map +0 -1
  355. package/dist/common/pages/page-404.mjs +0 -11
  356. package/dist/common/pages/page-404.mjs.map +0 -1
  357. package/dist/common/pages/page-500.js +0 -30
  358. package/dist/common/pages/page-500.js.map +0 -1
  359. package/dist/common/pages/page-500.mjs +0 -25
  360. package/dist/common/pages/page-500.mjs.map +0 -1
  361. package/dist/components/accordion.js +0 -65
  362. package/dist/components/accordion.js.map +0 -1
  363. package/dist/components/accordion.mjs +0 -39
  364. package/dist/components/accordion.mjs.map +0 -1
  365. package/dist/components/alert-dialog.js +0 -231
  366. package/dist/components/alert-dialog.js.map +0 -1
  367. package/dist/components/alert-dialog.mjs +0 -197
  368. package/dist/components/alert-dialog.mjs.map +0 -1
  369. package/dist/components/alert.js +0 -97
  370. package/dist/components/alert.js.map +0 -1
  371. package/dist/components/alert.mjs +0 -72
  372. package/dist/components/alert.mjs.map +0 -1
  373. package/dist/components/aspect-ratio.js +0 -29
  374. package/dist/components/aspect-ratio.js.map +0 -1
  375. package/dist/components/aspect-ratio.mjs +0 -7
  376. package/dist/components/aspect-ratio.mjs.map +0 -1
  377. package/dist/components/avatar.js +0 -64
  378. package/dist/components/avatar.js.map +0 -1
  379. package/dist/components/avatar.mjs +0 -39
  380. package/dist/components/avatar.mjs.map +0 -1
  381. package/dist/components/badge.js +0 -72
  382. package/dist/components/badge.js.map +0 -1
  383. package/dist/components/badge.mjs +0 -69
  384. package/dist/components/badge.mjs.map +0 -1
  385. package/dist/components/breadcrumb.js +0 -109
  386. package/dist/components/breadcrumb.js.map +0 -1
  387. package/dist/components/breadcrumb.mjs +0 -81
  388. package/dist/components/breadcrumb.mjs.map +0 -1
  389. package/dist/components/button.js +0 -250
  390. package/dist/components/button.js.map +0 -1
  391. package/dist/components/button.mjs +0 -226
  392. package/dist/components/button.mjs.map +0 -1
  393. package/dist/components/calendar.js +0 -681
  394. package/dist/components/calendar.js.map +0 -1
  395. package/dist/components/calendar.mjs +0 -659
  396. package/dist/components/calendar.mjs.map +0 -1
  397. package/dist/components/card.js +0 -98
  398. package/dist/components/card.js.map +0 -1
  399. package/dist/components/card.mjs +0 -71
  400. package/dist/components/card.mjs.map +0 -1
  401. package/dist/components/carousel.js +0 -237
  402. package/dist/components/carousel.js.map +0 -1
  403. package/dist/components/carousel.mjs +0 -208
  404. package/dist/components/carousel.mjs.map +0 -1
  405. package/dist/components/chart.js +0 -252
  406. package/dist/components/chart.js.map +0 -1
  407. package/dist/components/chart.mjs +0 -224
  408. package/dist/components/chart.mjs.map +0 -1
  409. package/dist/components/checkbox.js +0 -97
  410. package/dist/components/checkbox.js.map +0 -1
  411. package/dist/components/checkbox.mjs +0 -74
  412. package/dist/components/checkbox.mjs.map +0 -1
  413. package/dist/components/chip.js +0 -88
  414. package/dist/components/chip.js.map +0 -1
  415. package/dist/components/chip.mjs +0 -82
  416. package/dist/components/chip.mjs.map +0 -1
  417. package/dist/components/collapsible.js +0 -33
  418. package/dist/components/collapsible.js.map +0 -1
  419. package/dist/components/collapsible.mjs +0 -9
  420. package/dist/components/collapsible.mjs.map +0 -1
  421. package/dist/components/command.js +0 -125
  422. package/dist/components/command.js.map +0 -1
  423. package/dist/components/command.mjs +0 -95
  424. package/dist/components/command.mjs.map +0 -1
  425. package/dist/components/context-menu.js +0 -168
  426. package/dist/components/context-menu.js.map +0 -1
  427. package/dist/components/context-menu.mjs +0 -131
  428. package/dist/components/context-menu.mjs.map +0 -1
  429. package/dist/components/dialog.js +0 -192
  430. package/dist/components/dialog.js.map +0 -1
  431. package/dist/components/dialog.mjs +0 -159
  432. package/dist/components/dialog.mjs.map +0 -1
  433. package/dist/components/drawer.js +0 -98
  434. package/dist/components/drawer.js.map +0 -1
  435. package/dist/components/drawer.mjs +0 -67
  436. package/dist/components/drawer.mjs.map +0 -1
  437. package/dist/components/dropdown-menu.js +0 -163
  438. package/dist/components/dropdown-menu.js.map +0 -1
  439. package/dist/components/dropdown-menu.mjs +0 -126
  440. package/dist/components/dropdown-menu.mjs.map +0 -1
  441. package/dist/components/form.js +0 -123
  442. package/dist/components/form.js.map +0 -1
  443. package/dist/components/form.mjs +0 -94
  444. package/dist/components/form.mjs.map +0 -1
  445. package/dist/components/hover-card.js +0 -50
  446. package/dist/components/hover-card.js.map +0 -1
  447. package/dist/components/hover-card.mjs +0 -25
  448. package/dist/components/hover-card.mjs.map +0 -1
  449. package/dist/components/input-otp.js +0 -84
  450. package/dist/components/input-otp.js.map +0 -1
  451. package/dist/components/input-otp.mjs +0 -59
  452. package/dist/components/input-otp.mjs.map +0 -1
  453. package/dist/components/input.js +0 -858
  454. package/dist/components/input.js.map +0 -1
  455. package/dist/components/input.mjs +0 -831
  456. package/dist/components/input.mjs.map +0 -1
  457. package/dist/components/label.js +0 -38
  458. package/dist/components/label.js.map +0 -1
  459. package/dist/components/label.mjs +0 -15
  460. package/dist/components/label.mjs.map +0 -1
  461. package/dist/components/lottie.js +0 -59
  462. package/dist/components/lottie.js.map +0 -1
  463. package/dist/components/lottie.mjs +0 -49
  464. package/dist/components/lottie.mjs.map +0 -1
  465. package/dist/components/menubar.js +0 -195
  466. package/dist/components/menubar.js.map +0 -1
  467. package/dist/components/menubar.mjs +0 -157
  468. package/dist/components/menubar.mjs.map +0 -1
  469. package/dist/components/navigation-menu.js +0 -126
  470. package/dist/components/navigation-menu.js.map +0 -1
  471. package/dist/components/navigation-menu.mjs +0 -95
  472. package/dist/components/navigation-menu.mjs.map +0 -1
  473. package/dist/components/pagination.js +0 -112
  474. package/dist/components/pagination.js.map +0 -1
  475. package/dist/components/pagination.mjs +0 -84
  476. package/dist/components/pagination.mjs.map +0 -1
  477. package/dist/components/popover.js +0 -63
  478. package/dist/components/popover.js.map +0 -1
  479. package/dist/components/popover.mjs +0 -38
  480. package/dist/components/popover.mjs.map +0 -1
  481. package/dist/components/progress.js +0 -50
  482. package/dist/components/progress.js.map +0 -1
  483. package/dist/components/progress.mjs +0 -27
  484. package/dist/components/progress.mjs.map +0 -1
  485. package/dist/components/radio-group.js +0 -91
  486. package/dist/components/radio-group.js.map +0 -1
  487. package/dist/components/radio-group.mjs +0 -67
  488. package/dist/components/radio-group.mjs.map +0 -1
  489. package/dist/components/resizable.js +0 -59
  490. package/dist/components/resizable.js.map +0 -1
  491. package/dist/components/resizable.mjs +0 -35
  492. package/dist/components/resizable.mjs.map +0 -1
  493. package/dist/components/responsive-popover.js +0 -74
  494. package/dist/components/responsive-popover.js.map +0 -1
  495. package/dist/components/responsive-popover.mjs +0 -50
  496. package/dist/components/responsive-popover.mjs.map +0 -1
  497. package/dist/components/scroll-area.js +0 -63
  498. package/dist/components/scroll-area.js.map +0 -1
  499. package/dist/components/scroll-area.mjs +0 -39
  500. package/dist/components/scroll-area.mjs.map +0 -1
  501. package/dist/components/separator.js +0 -47
  502. package/dist/components/separator.js.map +0 -1
  503. package/dist/components/separator.mjs +0 -24
  504. package/dist/components/separator.mjs.map +0 -1
  505. package/dist/components/sheet.js +0 -239
  506. package/dist/components/sheet.js.map +0 -1
  507. package/dist/components/sheet.mjs +0 -206
  508. package/dist/components/sheet.mjs.map +0 -1
  509. package/dist/components/sidebar.js +0 -888
  510. package/dist/components/sidebar.js.map +0 -1
  511. package/dist/components/sidebar.mjs +0 -842
  512. package/dist/components/sidebar.mjs.map +0 -1
  513. package/dist/components/skeleton.js +0 -153
  514. package/dist/components/skeleton.js.map +0 -1
  515. package/dist/components/skeleton.mjs +0 -127
  516. package/dist/components/skeleton.mjs.map +0 -1
  517. package/dist/components/slider.js +0 -45
  518. package/dist/components/slider.js.map +0 -1
  519. package/dist/components/slider.mjs +0 -22
  520. package/dist/components/slider.mjs.map +0 -1
  521. package/dist/components/sonner.js +0 -76
  522. package/dist/components/sonner.js.map +0 -1
  523. package/dist/components/sonner.mjs +0 -71
  524. package/dist/components/sonner.mjs.map +0 -1
  525. package/dist/components/spinner.js +0 -59
  526. package/dist/components/spinner.js.map +0 -1
  527. package/dist/components/spinner.mjs +0 -36
  528. package/dist/components/spinner.mjs.map +0 -1
  529. package/dist/components/stepper.js +0 -726
  530. package/dist/components/stepper.js.map +0 -1
  531. package/dist/components/stepper.mjs +0 -702
  532. package/dist/components/stepper.mjs.map +0 -1
  533. package/dist/components/switch.js +0 -85
  534. package/dist/components/switch.js.map +0 -1
  535. package/dist/components/switch.mjs +0 -62
  536. package/dist/components/switch.mjs.map +0 -1
  537. package/dist/components/table.js +0 -91
  538. package/dist/components/table.js.map +0 -1
  539. package/dist/components/table.mjs +0 -62
  540. package/dist/components/table.mjs.map +0 -1
  541. package/dist/components/tabs.js +0 -287
  542. package/dist/components/tabs.js.map +0 -1
  543. package/dist/components/tabs.mjs +0 -261
  544. package/dist/components/tabs.mjs.map +0 -1
  545. package/dist/components/textarea.js +0 -200
  546. package/dist/components/textarea.js.map +0 -1
  547. package/dist/components/textarea.mjs +0 -174
  548. package/dist/components/textarea.mjs.map +0 -1
  549. package/dist/components/toggle-group.js +0 -67
  550. package/dist/components/toggle-group.js.map +0 -1
  551. package/dist/components/toggle-group.mjs +0 -43
  552. package/dist/components/toggle-group.mjs.map +0 -1
  553. package/dist/components/toggle.js +0 -63
  554. package/dist/components/toggle.js.map +0 -1
  555. package/dist/components/toggle.mjs +0 -39
  556. package/dist/components/toggle.mjs.map +0 -1
  557. package/dist/components/tooltip.js +0 -172
  558. package/dist/components/tooltip.js.map +0 -1
  559. package/dist/components/tooltip.mjs +0 -145
  560. package/dist/components/tooltip.mjs.map +0 -1
  561. package/dist/hooks/index.js +0 -27
  562. package/dist/hooks/index.js.map +0 -1
  563. package/dist/hooks/index.mjs +0 -6
  564. package/dist/hooks/index.mjs.map +0 -1
  565. package/dist/hooks/useCopyToClipboard.js +0 -59
  566. package/dist/hooks/useCopyToClipboard.js.map +0 -1
  567. package/dist/hooks/useCopyToClipboard.mjs +0 -57
  568. package/dist/hooks/useCopyToClipboard.mjs.map +0 -1
  569. package/dist/hooks/useDevice.js +0 -20
  570. package/dist/hooks/useDevice.js.map +0 -1
  571. package/dist/hooks/useDevice.mjs +0 -14
  572. package/dist/hooks/useDevice.mjs.map +0 -1
  573. package/dist/hooks/useDialogTracking.js +0 -113
  574. package/dist/hooks/useDialogTracking.js.map +0 -1
  575. package/dist/hooks/useDialogTracking.mjs +0 -91
  576. package/dist/hooks/useDialogTracking.mjs.map +0 -1
  577. package/dist/hooks/useIsMounted.js +0 -15
  578. package/dist/hooks/useIsMounted.js.map +0 -1
  579. package/dist/hooks/useIsMounted.mjs +0 -13
  580. package/dist/hooks/useIsMounted.mjs.map +0 -1
  581. package/dist/hooks/usePathname.js +0 -85
  582. package/dist/hooks/usePathname.js.map +0 -1
  583. package/dist/hooks/usePathname.mjs +0 -83
  584. package/dist/hooks/usePathname.mjs.map +0 -1
  585. package/dist/icons.js +0 -14
  586. package/dist/icons.js.map +0 -1
  587. package/dist/icons.mjs +0 -3
  588. package/dist/icons.mjs.map +0 -1
  589. package/dist/lib/formatCurrency.js +0 -187
  590. package/dist/lib/formatCurrency.js.map +0 -1
  591. package/dist/lib/formatCurrency.mjs +0 -185
  592. package/dist/lib/formatCurrency.mjs.map +0 -1
  593. package/dist/lib/helpers.js +0 -171
  594. package/dist/lib/helpers.js.map +0 -1
  595. package/dist/lib/helpers.mjs +0 -157
  596. package/dist/lib/helpers.mjs.map +0 -1
  597. package/dist/lib/index.js +0 -33
  598. package/dist/lib/index.js.map +0 -1
  599. package/dist/lib/index.mjs +0 -6
  600. package/dist/lib/index.mjs.map +0 -1
  601. package/dist/lib/types.js +0 -11
  602. package/dist/lib/types.js.map +0 -1
  603. package/dist/lib/types.mjs +0 -9
  604. package/dist/lib/types.mjs.map +0 -1
  605. package/dist/lib/utils.js +0 -24
  606. package/dist/lib/utils.js.map +0 -1
  607. package/dist/lib/utils.mjs +0 -19
  608. package/dist/lib/utils.mjs.map +0 -1
  609. package/dist/providers/DeviceSizeWatcher/index.js +0 -72
  610. package/dist/providers/DeviceSizeWatcher/index.js.map +0 -1
  611. package/dist/providers/DeviceSizeWatcher/index.mjs +0 -47
  612. package/dist/providers/DeviceSizeWatcher/index.mjs.map +0 -1
  613. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js +0 -22
  614. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js.map +0 -1
  615. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs +0 -20
  616. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs.map +0 -1
  617. package/dist/providers/UISystemProvider.js +0 -197
  618. package/dist/providers/UISystemProvider.js.map +0 -1
  619. package/dist/providers/UISystemProvider.mjs +0 -188
  620. package/dist/providers/UISystemProvider.mjs.map +0 -1
  621. package/dist/providers/index.js +0 -24
  622. package/dist/providers/index.js.map +0 -1
  623. package/dist/providers/index.mjs +0 -3
  624. package/dist/providers/index.mjs.map +0 -1
  625. package/dist/theme.js +0 -333
  626. package/dist/theme.js.map +0 -1
  627. package/dist/theme.mjs +0 -327
  628. package/dist/theme.mjs.map +0 -1
@@ -1,303 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var input = require('@/components/input');
5
- var icons = require('@/icons');
6
- var utils = require('@/lib/utils');
7
- var dateFns = require('date-fns');
8
- var locale = require('date-fns/locale');
9
- var React = require('react');
10
-
11
- function _interopNamespace(e) {
12
- if (e && e.__esModule) return e;
13
- var n = Object.create(null);
14
- if (e) {
15
- Object.keys(e).forEach(function (k) {
16
- if (k !== 'default') {
17
- var d = Object.getOwnPropertyDescriptor(e, k);
18
- Object.defineProperty(n, k, d.get ? d : {
19
- enumerable: true,
20
- get: function () { return e[k]; }
21
- });
22
- }
23
- });
24
- }
25
- n.default = e;
26
- return Object.freeze(n);
27
- }
28
-
29
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
-
31
- const parseStringToDate = (dateStr, format2 = "dd/MM/yyyy") => {
32
- if (!dateStr) return null;
33
- try {
34
- const parsedDate = dateFns.parse(dateStr, format2, /* @__PURE__ */ new Date());
35
- return dateFns.isValid(parsedDate) ? parsedDate : null;
36
- } catch (error) {
37
- return null;
38
- }
39
- };
40
- const getDateValue = (value, format2 = "dd/MM/yyyy") => {
41
- if (!value) return null;
42
- if (typeof value === "string") return parseStringToDate(value, format2);
43
- return value instanceof Date ? value : null;
44
- };
45
- const formatDateToString = (date, dateFormat = "dd/MM/yyyy") => {
46
- if (!date || !dateFns.isValid(date)) return "";
47
- try {
48
- return dateFns.format(date, dateFormat, { locale: locale.vi });
49
- } catch (error) {
50
- return "";
51
- }
52
- };
53
- const formatDateInput = (input) => {
54
- const digitsOnly = input.replace(/\D/g, "");
55
- if (digitsOnly.length <= 2) {
56
- return digitsOnly;
57
- } else if (digitsOnly.length <= 4) {
58
- return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2)}`;
59
- } else if (digitsOnly.length <= 8) {
60
- return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2, 4)}/${digitsOnly.slice(4)}`;
61
- } else {
62
- return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2, 4)}/${digitsOnly.slice(4, 8)}`;
63
- }
64
- };
65
- const validateDateInput = (input, dateFormat = "dd/MM/yyyy", minDate, maxDate, strictValidation = false) => {
66
- if (!input) return { isValid: true };
67
- if (strictValidation && input.length !== 10) {
68
- return { isValid: false, error: "Vui l\xF2ng nh\u1EADp \u0111\u1EA7y \u0111\u1EE7 ng\xE0y th\xE1ng (dd/MM/yyyy)" };
69
- }
70
- if (input.length < 10) {
71
- return { isValid: true };
72
- }
73
- const parts = input.split("/");
74
- if (parts.length !== 3) {
75
- return { isValid: false, error: "\u0110\u1ECBnh d\u1EA1ng ng\xE0y kh\xF4ng h\u1EE3p l\u1EC7" };
76
- }
77
- const day = parseInt(parts[0] || "0", 10);
78
- const month = parseInt(parts[1] || "0", 10);
79
- const year = parseInt(parts[2] || "0", 10);
80
- if (isNaN(day) || day < 1 || day > 31) {
81
- return { isValid: false, error: "Ng\xE0y ph\u1EA3i t\u1EEB 01 \u0111\u1EBFn 31" };
82
- }
83
- if (isNaN(month) || month < 1 || month > 12) {
84
- return { isValid: false, error: "Th\xE1ng ph\u1EA3i t\u1EEB 01 \u0111\u1EBFn 12" };
85
- }
86
- if (isNaN(year) || year < 1900 || year > 2099) {
87
- return { isValid: false, error: "N\u0103m ph\u1EA3i t\u1EEB 1900 \u0111\u1EBFn 2099" };
88
- }
89
- const date = new Date(year, month - 1, day);
90
- if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
91
- return { isValid: false, error: "Ng\xE0y kh\xF4ng t\u1ED3n t\u1EA1i" };
92
- }
93
- if (minDate && date < minDate) {
94
- return {
95
- isValid: false,
96
- error: `Ng\xE0y kh\xF4ng \u0111\u01B0\u1EE3c nh\u1ECF h\u01A1n ${formatDateToString(minDate, dateFormat)}`
97
- };
98
- }
99
- if (maxDate && date > maxDate) {
100
- return {
101
- isValid: false,
102
- error: `Ng\xE0y kh\xF4ng \u0111\u01B0\u1EE3c l\u1EDBn h\u01A1n ${formatDateToString(maxDate, dateFormat)}`
103
- };
104
- }
105
- return { isValid: true };
106
- };
107
- const DateField = React__namespace.forwardRef(
108
- ({
109
- value,
110
- defaultValue,
111
- onChange,
112
- onInputChange,
113
- placeholder = "dd/MM/yyyy",
114
- label,
115
- disabled = false,
116
- isError = false,
117
- errorText,
118
- helpText,
119
- size = "default",
120
- className,
121
- inputClassName,
122
- minDate,
123
- maxDate,
124
- showCalendarIcon = true,
125
- showClearButton = true,
126
- format: dateFormat = "dd/MM/yyyy",
127
- strictValidation = false,
128
- style,
129
- onCalendarIconClick,
130
- onClearValue,
131
- onInputClick,
132
- ...props
133
- }, ref) => {
134
- const initialDate = getDateValue(value || defaultValue, dateFormat);
135
- const initialInputValue = formatDateToString(initialDate, dateFormat);
136
- const [inputValue, setInputValue] = React__namespace.useState(initialInputValue);
137
- const [internalError, setInternalError] = React__namespace.useState("");
138
- const [isFocused, setIsFocused] = React__namespace.useState(false);
139
- React__namespace.useEffect(() => {
140
- const dateValue = getDateValue(value, dateFormat);
141
- const formattedValue = formatDateToString(dateValue, dateFormat);
142
- setInputValue(formattedValue);
143
- }, [value, dateFormat]);
144
- const handleInputChange = React__namespace.useCallback(
145
- (e) => {
146
- const rawValue = e.target.value;
147
- const formattedValue = formatDateInput(rawValue);
148
- setInputValue(formattedValue);
149
- onInputChange?.(formattedValue);
150
- const validation = validateDateInput(
151
- formattedValue,
152
- dateFormat,
153
- minDate,
154
- maxDate,
155
- strictValidation
156
- );
157
- if (validation.isValid) {
158
- setInternalError("");
159
- if (formattedValue.length === 10) {
160
- const parsedDate = parseStringToDate(formattedValue, dateFormat);
161
- if (parsedDate) {
162
- onChange?.(parsedDate);
163
- } else {
164
- onChange?.(null);
165
- }
166
- }
167
- } else {
168
- setInternalError(validation.error || "");
169
- if (formattedValue.length === 10) {
170
- onChange?.(null);
171
- }
172
- }
173
- },
174
- [onChange, onInputChange, dateFormat, minDate, maxDate, strictValidation]
175
- );
176
- const handleInputClick = React__namespace.useCallback(
177
- (e) => {
178
- const input = e.currentTarget;
179
- if (!input || !inputValue) {
180
- onInputClick?.();
181
- return;
182
- }
183
- const cursorPosition = input.selectionStart || 0;
184
- let selectionStart = 0;
185
- let selectionEnd = 0;
186
- if (cursorPosition <= 2) {
187
- selectionStart = 0;
188
- selectionEnd = 2;
189
- } else if (cursorPosition <= 5) {
190
- selectionStart = 3;
191
- selectionEnd = 5;
192
- } else {
193
- selectionStart = 6;
194
- selectionEnd = 10;
195
- }
196
- setTimeout(() => {
197
- input.setSelectionRange(selectionStart, selectionEnd);
198
- }, 0);
199
- onInputClick?.();
200
- },
201
- [inputValue, onInputClick]
202
- );
203
- const handleFocus = React__namespace.useCallback(
204
- (e) => {
205
- setIsFocused(true);
206
- if (inputValue) {
207
- const input = e.currentTarget;
208
- setTimeout(() => {
209
- input.setSelectionRange(0, 2);
210
- }, 0);
211
- }
212
- },
213
- [inputValue]
214
- );
215
- const handleBlur = React__namespace.useCallback(() => {
216
- setIsFocused(false);
217
- if (inputValue) {
218
- const validation = validateDateInput(inputValue, dateFormat, minDate, maxDate, true);
219
- if (!validation.isValid) {
220
- setInternalError(validation.error || "");
221
- }
222
- }
223
- }, [inputValue, dateFormat, minDate, maxDate]);
224
- const handleClear = React__namespace.useCallback(() => {
225
- setInputValue("");
226
- setInternalError("");
227
- onChange?.(null);
228
- onInputChange?.("");
229
- onClearValue?.();
230
- }, [onChange, onInputChange, onClearValue]);
231
- const handleKeyPress = React__namespace.useCallback((e) => {
232
- if (!/[\d/]/.test(e.key) && !["Backspace", "Delete", "ArrowLeft", "ArrowRight", "Tab"].includes(e.key)) {
233
- e.preventDefault();
234
- }
235
- }, []);
236
- const handleKeyDown = React__namespace.useCallback(
237
- (e) => {
238
- const input = e.currentTarget;
239
- const cursorPosition = input.selectionStart || 0;
240
- const selectionLength = (input.selectionEnd || 0) - (input.selectionStart || 0);
241
- const isSegmentSelected = selectionLength > 0;
242
- if (e.key === "ArrowLeft" && isSegmentSelected) {
243
- e.preventDefault();
244
- if (cursorPosition <= 2) {
245
- input.setSelectionRange(6, 10);
246
- } else if (cursorPosition <= 5) {
247
- input.setSelectionRange(0, 2);
248
- } else {
249
- input.setSelectionRange(3, 5);
250
- }
251
- } else if (e.key === "ArrowRight" && isSegmentSelected) {
252
- e.preventDefault();
253
- if (cursorPosition <= 2) {
254
- input.setSelectionRange(3, 5);
255
- } else if (cursorPosition <= 5) {
256
- input.setSelectionRange(6, 10);
257
- } else {
258
- input.setSelectionRange(0, 2);
259
- }
260
- } else {
261
- handleKeyPress(e);
262
- }
263
- },
264
- [handleKeyPress]
265
- );
266
- const hasError = isError || !!internalError;
267
- const displayErrorText = errorText || internalError;
268
- const displayHelpText = isFocused && !hasError ? helpText || `\u0110\u1ECBnh d\u1EA1ng: ${dateFormat.toLowerCase()}` : helpText;
269
- return /* @__PURE__ */ jsxRuntime.jsx(
270
- input.Input,
271
- {
272
- ref,
273
- type: "text",
274
- value: inputValue,
275
- onChange: handleInputChange,
276
- onFocus: handleFocus,
277
- onBlur: handleBlur,
278
- onKeyDown: handleKeyDown,
279
- onClick: handleInputClick,
280
- placeholder,
281
- label,
282
- disabled,
283
- isError: hasError,
284
- errorText: displayErrorText,
285
- helpText: displayHelpText,
286
- size,
287
- className: utils.cn("w-full", className),
288
- inputClassName: utils.cn("font-mono w-full min-w-0 flex-1", inputClassName),
289
- showRemoveIcon: showClearButton && !!inputValue && !disabled,
290
- onClearValue: handleClear,
291
- buttonIcon: showCalendarIcon ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cursor-pointer", "data-calendar-icon": true, children: /* @__PURE__ */ jsxRuntime.jsx(icons.CalendarOutlinedIcon, { className: "h-5 w-5" }) }) : void 0,
292
- maxLength: 10,
293
- style: { width: "100%", ...style },
294
- ...props
295
- }
296
- );
297
- }
298
- );
299
- DateField.displayName = "DateField";
300
-
301
- exports.DateField = DateField;
302
- //# sourceMappingURL=date-field.js.map
303
- //# sourceMappingURL=date-field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/common/interactive/date-field.tsx"],"names":["format","parse","isValid","vi","React","jsx","Input","cn","CalendarOutlinedIcon"],"mappings":"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","file":"date-field.js","sourcesContent":["'use client';\n\nimport { Input } from '@/components/input';\nimport { CalendarOutlinedIcon } from '@/icons';\nimport { cn } from '@/lib/utils';\nimport { format, isValid, parse } from 'date-fns';\nimport { vi } from 'date-fns/locale';\nimport * as React from 'react';\n\nexport interface DateFieldProps {\n /**\n * The selected date value\n * Can be a Date object or a string in 'dd/MM/yyyy' format\n */\n value?: Date | string | null;\n\n /**\n * Default date value\n */\n defaultValue?: Date | string;\n\n /**\n * Callback fired when the date value changes\n */\n onChange?: (date: Date | null) => void;\n\n /**\n * Callback fired when the input value changes (raw string)\n */\n onInputChange?: (value: string) => void;\n\n /**\n * Input placeholder\n */\n placeholder?: string;\n\n /**\n * Input label\n */\n label?: string;\n\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n\n /**\n * Whether the input is in error state\n */\n isError?: boolean;\n\n /**\n * Error message to display\n */\n errorText?: string;\n\n /**\n * Help text to display\n */\n helpText?: string;\n\n /**\n * Input size\n */\n size?: 'default' | 'lg';\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Input CSS classes\n */\n inputClassName?: string;\n\n /**\n * Minimum date allowed\n */\n minDate?: Date;\n\n /**\n * Maximum date allowed\n */\n maxDate?: Date;\n\n /**\n * Whether to show calendar icon\n */\n showCalendarIcon?: boolean;\n\n /**\n * Whether to show clear button\n */\n showClearButton?: boolean;\n\n /**\n * Custom date format (default: 'dd/MM/yyyy')\n */\n format?: string;\n\n /**\n * Whether to enable strict validation\n */\n strictValidation?: boolean;\n\n /**\n * Inline styles\n */\n style?: React.CSSProperties;\n\n /**\n * Callback when calendar icon is clicked\n */\n onCalendarIconClick?: () => void;\n\n /**\n * Callback when clear button is clicked\n */\n onClearValue?: () => void;\n\n /**\n * Callback when input is clicked\n */\n onInputClick?: () => void;\n}\n\n/**\n * Converts a date string in dd/MM/yyyy format to a Date object\n */\nconst parseStringToDate = (dateStr: string, format: string = 'dd/MM/yyyy'): Date | null => {\n if (!dateStr) return null;\n try {\n const parsedDate = parse(dateStr, format, new Date());\n return isValid(parsedDate) ? parsedDate : null;\n } catch (error) {\n return null;\n }\n};\n\n/**\n * Gets a Date object from either a Date or a string\n */\nconst getDateValue = (\n value: Date | string | null | undefined,\n format: string = 'dd/MM/yyyy',\n): Date | null => {\n if (!value) return null;\n if (typeof value === 'string') return parseStringToDate(value, format);\n return value instanceof Date ? value : null;\n};\n\n/**\n * Formats a date to string\n */\nconst formatDateToString = (date: Date | null, dateFormat: string = 'dd/MM/yyyy'): string => {\n if (!date || !isValid(date)) return '';\n try {\n return format(date, dateFormat, { locale: vi });\n } catch (error) {\n return '';\n }\n};\n\n/**\n * Smart date input formatter that handles partial input\n */\nconst formatDateInput = (input: string): string => {\n // Remove all non-digit characters\n const digitsOnly = input.replace(/\\D/g, '');\n\n // Apply dd/MM/yyyy format progressively\n if (digitsOnly.length <= 2) {\n return digitsOnly;\n } else if (digitsOnly.length <= 4) {\n return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2)}`;\n } else if (digitsOnly.length <= 8) {\n return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2, 4)}/${digitsOnly.slice(4)}`;\n } else {\n // Limit to 8 digits (ddMMyyyy)\n return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2, 4)}/${digitsOnly.slice(4, 8)}`;\n }\n};\n\n/**\n * Validate date input with strict rules\n */\nconst validateDateInput = (\n input: string,\n dateFormat: string = 'dd/MM/yyyy',\n minDate?: Date,\n maxDate?: Date,\n strictValidation: boolean = false,\n): { isValid: boolean; error?: string } => {\n if (!input) return { isValid: true };\n\n // Check if input is complete (dd/MM/yyyy = 10 characters)\n if (strictValidation && input.length !== 10) {\n return { isValid: false, error: 'Vui lòng nhập đầy đủ ngày tháng (dd/MM/yyyy)' };\n }\n\n // For incomplete input, don't show error yet\n if (input.length < 10) {\n return { isValid: true };\n }\n\n // Parse components manually for strict validation\n const parts = input.split('/');\n if (parts.length !== 3) {\n return { isValid: false, error: 'Định dạng ngày không hợp lệ' };\n }\n\n const day = parseInt(parts[0] || '0', 10);\n const month = parseInt(parts[1] || '0', 10);\n const year = parseInt(parts[2] || '0', 10);\n\n // Validate ranges\n if (isNaN(day) || day < 1 || day > 31) {\n return { isValid: false, error: 'Ngày phải từ 01 đến 31' };\n }\n\n if (isNaN(month) || month < 1 || month > 12) {\n return { isValid: false, error: 'Tháng phải từ 01 đến 12' };\n }\n\n if (isNaN(year) || year < 1900 || year > 2099) {\n return { isValid: false, error: 'Năm phải từ 1900 đến 2099' };\n }\n\n // Check if date is valid (e.g., 31/02/2023 is invalid)\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return { isValid: false, error: 'Ngày không tồn tại' };\n }\n\n // Check min date\n if (minDate && date < minDate) {\n return {\n isValid: false,\n error: `Ngày không được nhỏ hơn ${formatDateToString(minDate, dateFormat)}`,\n };\n }\n\n // Check max date\n if (maxDate && date > maxDate) {\n return {\n isValid: false,\n error: `Ngày không được lớn hơn ${formatDateToString(maxDate, dateFormat)}`,\n };\n }\n\n return { isValid: true };\n};\n\nexport const DateField = React.forwardRef<HTMLInputElement, DateFieldProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onInputChange,\n placeholder = 'dd/MM/yyyy',\n label,\n disabled = false,\n isError = false,\n errorText,\n helpText,\n size = 'default',\n className,\n inputClassName,\n minDate,\n maxDate,\n showCalendarIcon = true,\n showClearButton = true,\n format: dateFormat = 'dd/MM/yyyy',\n strictValidation = false,\n style,\n onCalendarIconClick,\n onClearValue,\n onInputClick,\n\n ...props\n },\n ref,\n ) => {\n // Convert initial value to date\n const initialDate = getDateValue(value || defaultValue, dateFormat);\n const initialInputValue = formatDateToString(initialDate, dateFormat);\n\n // Internal state\n const [inputValue, setInputValue] = React.useState(initialInputValue);\n const [internalError, setInternalError] = React.useState<string>('');\n const [isFocused, setIsFocused] = React.useState(false);\n\n // Update input value when external value changes\n React.useEffect(() => {\n const dateValue = getDateValue(value, dateFormat);\n const formattedValue = formatDateToString(dateValue, dateFormat);\n setInputValue(formattedValue);\n }, [value, dateFormat]);\n\n // Handle input change\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value;\n const formattedValue = formatDateInput(rawValue);\n\n setInputValue(formattedValue);\n onInputChange?.(formattedValue);\n\n // Validate and parse date\n const validation = validateDateInput(\n formattedValue,\n dateFormat,\n minDate,\n maxDate,\n strictValidation,\n );\n\n if (validation.isValid) {\n setInternalError('');\n\n // Only parse and set date if input is complete (10 characters)\n if (formattedValue.length === 10) {\n const parsedDate = parseStringToDate(formattedValue, dateFormat);\n if (parsedDate) {\n onChange?.(parsedDate);\n } else {\n // Only clear if the complete input is invalid\n onChange?.(null);\n }\n }\n // Don't clear date for incomplete input - let user continue typing\n } else {\n setInternalError(validation.error || '');\n // Only call onChange with null for complete invalid dates\n if (formattedValue.length === 10) {\n onChange?.(null);\n }\n }\n },\n [onChange, onInputChange, dateFormat, minDate, maxDate, strictValidation],\n );\n\n // Handle input click - segmented selection based on cursor position\n const handleInputClick = React.useCallback(\n (e: React.MouseEvent<HTMLInputElement>) => {\n const input = e.currentTarget;\n if (!input || !inputValue) {\n // Call external onClick handler if provided\n onInputClick?.();\n return;\n }\n\n // Get cursor position\n const cursorPosition = input.selectionStart || 0;\n\n // Determine which segment to select based on cursor position\n // Format: dd/MM/yyyy (10 characters)\n // Positions: 01/34/6789\n let selectionStart = 0;\n let selectionEnd = 0;\n\n if (cursorPosition <= 2) {\n // Day segment (positions 0-1)\n selectionStart = 0;\n selectionEnd = 2;\n } else if (cursorPosition <= 5) {\n // Month segment (positions 3-4)\n selectionStart = 3;\n selectionEnd = 5;\n } else {\n // Year segment (positions 6-9)\n selectionStart = 6;\n selectionEnd = 10;\n }\n\n // Select the segment\n setTimeout(() => {\n input.setSelectionRange(selectionStart, selectionEnd);\n }, 0);\n\n // Call external onClick handler if provided\n onInputClick?.();\n },\n [inputValue, onInputClick],\n );\n\n // Handle focus with segmented selection\n const handleFocus = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n\n // Select first segment (day) when focusing\n if (inputValue) {\n const input = e.currentTarget;\n // Use setTimeout to ensure selection happens after focus\n setTimeout(() => {\n input.setSelectionRange(0, 2); // Select day segment\n }, 0);\n }\n },\n [inputValue],\n );\n\n // Handle blur\n const handleBlur = React.useCallback(() => {\n setIsFocused(false);\n\n // On blur, validate more strictly\n if (inputValue) {\n const validation = validateDateInput(inputValue, dateFormat, minDate, maxDate, true);\n if (!validation.isValid) {\n setInternalError(validation.error || '');\n }\n }\n }, [inputValue, dateFormat, minDate, maxDate]);\n\n // Handle clear\n const handleClear = React.useCallback(() => {\n setInputValue('');\n setInternalError('');\n onChange?.(null);\n onInputChange?.('');\n onClearValue?.();\n }, [onChange, onInputChange, onClearValue]);\n\n // Handle key press\n const handleKeyPress = React.useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\n // Allow only digits and forward slash\n if (\n !/[\\d/]/.test(e.key) &&\n !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(e.key)\n ) {\n e.preventDefault();\n }\n }, []);\n\n // Handle key down for segment navigation\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n const input = e.currentTarget;\n const cursorPosition = input.selectionStart || 0;\n const selectionLength = (input.selectionEnd || 0) - (input.selectionStart || 0);\n\n // Check if we have a segment selected\n const isSegmentSelected = selectionLength > 0;\n\n if (e.key === 'ArrowLeft' && isSegmentSelected) {\n e.preventDefault();\n // Move to previous segment\n if (cursorPosition <= 2) {\n // At day segment, go to year segment (wrap around)\n input.setSelectionRange(6, 10);\n } else if (cursorPosition <= 5) {\n // At month segment, go to day\n input.setSelectionRange(0, 2);\n } else {\n // At year segment, go to month\n input.setSelectionRange(3, 5);\n }\n } else if (e.key === 'ArrowRight' && isSegmentSelected) {\n e.preventDefault();\n // Move to next segment\n if (cursorPosition <= 2) {\n // At day segment, go to month\n input.setSelectionRange(3, 5);\n } else if (cursorPosition <= 5) {\n // At month segment, go to year\n input.setSelectionRange(6, 10);\n } else {\n // At year segment, go to day (wrap around)\n input.setSelectionRange(0, 2);\n }\n } else {\n // Call original key press handler for other keys\n handleKeyPress(e);\n }\n },\n [handleKeyPress],\n );\n\n // Determine error state and message\n const hasError = isError || !!internalError;\n const displayErrorText = errorText || internalError;\n\n // Show help text with format hint when focused and no error\n const displayHelpText =\n isFocused && !hasError ? helpText || `Định dạng: ${dateFormat.toLowerCase()}` : helpText;\n\n return (\n <Input\n ref={ref}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onClick={handleInputClick}\n placeholder={placeholder}\n label={label}\n disabled={disabled}\n isError={hasError}\n errorText={displayErrorText}\n helpText={displayHelpText}\n size={size}\n className={cn('w-full', className)}\n inputClassName={cn('font-mono w-full min-w-0 flex-1', inputClassName)}\n showRemoveIcon={showClearButton && !!inputValue && !disabled}\n onClearValue={handleClear}\n buttonIcon={\n showCalendarIcon ? (\n <div className=\"cursor-pointer\" data-calendar-icon>\n <CalendarOutlinedIcon className=\"h-5 w-5\" />\n </div>\n ) : undefined\n }\n maxLength={10} // dd/MM/yyyy = 10 characters\n style={{ width: '100%', ...style }}\n {...props}\n />\n );\n },\n);\n\nDateField.displayName = 'DateField';\n"]}
@@ -1,281 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { Input } from '@/components/input';
3
- import { CalendarOutlinedIcon } from '@/icons';
4
- import { cn } from '@/lib/utils';
5
- import { isValid, format, parse } from 'date-fns';
6
- import { vi } from 'date-fns/locale';
7
- import * as React from 'react';
8
-
9
- const parseStringToDate = (dateStr, format2 = "dd/MM/yyyy") => {
10
- if (!dateStr) return null;
11
- try {
12
- const parsedDate = parse(dateStr, format2, /* @__PURE__ */ new Date());
13
- return isValid(parsedDate) ? parsedDate : null;
14
- } catch (error) {
15
- return null;
16
- }
17
- };
18
- const getDateValue = (value, format2 = "dd/MM/yyyy") => {
19
- if (!value) return null;
20
- if (typeof value === "string") return parseStringToDate(value, format2);
21
- return value instanceof Date ? value : null;
22
- };
23
- const formatDateToString = (date, dateFormat = "dd/MM/yyyy") => {
24
- if (!date || !isValid(date)) return "";
25
- try {
26
- return format(date, dateFormat, { locale: vi });
27
- } catch (error) {
28
- return "";
29
- }
30
- };
31
- const formatDateInput = (input) => {
32
- const digitsOnly = input.replace(/\D/g, "");
33
- if (digitsOnly.length <= 2) {
34
- return digitsOnly;
35
- } else if (digitsOnly.length <= 4) {
36
- return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2)}`;
37
- } else if (digitsOnly.length <= 8) {
38
- return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2, 4)}/${digitsOnly.slice(4)}`;
39
- } else {
40
- return `${digitsOnly.slice(0, 2)}/${digitsOnly.slice(2, 4)}/${digitsOnly.slice(4, 8)}`;
41
- }
42
- };
43
- const validateDateInput = (input, dateFormat = "dd/MM/yyyy", minDate, maxDate, strictValidation = false) => {
44
- if (!input) return { isValid: true };
45
- if (strictValidation && input.length !== 10) {
46
- return { isValid: false, error: "Vui l\xF2ng nh\u1EADp \u0111\u1EA7y \u0111\u1EE7 ng\xE0y th\xE1ng (dd/MM/yyyy)" };
47
- }
48
- if (input.length < 10) {
49
- return { isValid: true };
50
- }
51
- const parts = input.split("/");
52
- if (parts.length !== 3) {
53
- return { isValid: false, error: "\u0110\u1ECBnh d\u1EA1ng ng\xE0y kh\xF4ng h\u1EE3p l\u1EC7" };
54
- }
55
- const day = parseInt(parts[0] || "0", 10);
56
- const month = parseInt(parts[1] || "0", 10);
57
- const year = parseInt(parts[2] || "0", 10);
58
- if (isNaN(day) || day < 1 || day > 31) {
59
- return { isValid: false, error: "Ng\xE0y ph\u1EA3i t\u1EEB 01 \u0111\u1EBFn 31" };
60
- }
61
- if (isNaN(month) || month < 1 || month > 12) {
62
- return { isValid: false, error: "Th\xE1ng ph\u1EA3i t\u1EEB 01 \u0111\u1EBFn 12" };
63
- }
64
- if (isNaN(year) || year < 1900 || year > 2099) {
65
- return { isValid: false, error: "N\u0103m ph\u1EA3i t\u1EEB 1900 \u0111\u1EBFn 2099" };
66
- }
67
- const date = new Date(year, month - 1, day);
68
- if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
69
- return { isValid: false, error: "Ng\xE0y kh\xF4ng t\u1ED3n t\u1EA1i" };
70
- }
71
- if (minDate && date < minDate) {
72
- return {
73
- isValid: false,
74
- error: `Ng\xE0y kh\xF4ng \u0111\u01B0\u1EE3c nh\u1ECF h\u01A1n ${formatDateToString(minDate, dateFormat)}`
75
- };
76
- }
77
- if (maxDate && date > maxDate) {
78
- return {
79
- isValid: false,
80
- error: `Ng\xE0y kh\xF4ng \u0111\u01B0\u1EE3c l\u1EDBn h\u01A1n ${formatDateToString(maxDate, dateFormat)}`
81
- };
82
- }
83
- return { isValid: true };
84
- };
85
- const DateField = React.forwardRef(
86
- ({
87
- value,
88
- defaultValue,
89
- onChange,
90
- onInputChange,
91
- placeholder = "dd/MM/yyyy",
92
- label,
93
- disabled = false,
94
- isError = false,
95
- errorText,
96
- helpText,
97
- size = "default",
98
- className,
99
- inputClassName,
100
- minDate,
101
- maxDate,
102
- showCalendarIcon = true,
103
- showClearButton = true,
104
- format: dateFormat = "dd/MM/yyyy",
105
- strictValidation = false,
106
- style,
107
- onCalendarIconClick,
108
- onClearValue,
109
- onInputClick,
110
- ...props
111
- }, ref) => {
112
- const initialDate = getDateValue(value || defaultValue, dateFormat);
113
- const initialInputValue = formatDateToString(initialDate, dateFormat);
114
- const [inputValue, setInputValue] = React.useState(initialInputValue);
115
- const [internalError, setInternalError] = React.useState("");
116
- const [isFocused, setIsFocused] = React.useState(false);
117
- React.useEffect(() => {
118
- const dateValue = getDateValue(value, dateFormat);
119
- const formattedValue = formatDateToString(dateValue, dateFormat);
120
- setInputValue(formattedValue);
121
- }, [value, dateFormat]);
122
- const handleInputChange = React.useCallback(
123
- (e) => {
124
- const rawValue = e.target.value;
125
- const formattedValue = formatDateInput(rawValue);
126
- setInputValue(formattedValue);
127
- onInputChange?.(formattedValue);
128
- const validation = validateDateInput(
129
- formattedValue,
130
- dateFormat,
131
- minDate,
132
- maxDate,
133
- strictValidation
134
- );
135
- if (validation.isValid) {
136
- setInternalError("");
137
- if (formattedValue.length === 10) {
138
- const parsedDate = parseStringToDate(formattedValue, dateFormat);
139
- if (parsedDate) {
140
- onChange?.(parsedDate);
141
- } else {
142
- onChange?.(null);
143
- }
144
- }
145
- } else {
146
- setInternalError(validation.error || "");
147
- if (formattedValue.length === 10) {
148
- onChange?.(null);
149
- }
150
- }
151
- },
152
- [onChange, onInputChange, dateFormat, minDate, maxDate, strictValidation]
153
- );
154
- const handleInputClick = React.useCallback(
155
- (e) => {
156
- const input = e.currentTarget;
157
- if (!input || !inputValue) {
158
- onInputClick?.();
159
- return;
160
- }
161
- const cursorPosition = input.selectionStart || 0;
162
- let selectionStart = 0;
163
- let selectionEnd = 0;
164
- if (cursorPosition <= 2) {
165
- selectionStart = 0;
166
- selectionEnd = 2;
167
- } else if (cursorPosition <= 5) {
168
- selectionStart = 3;
169
- selectionEnd = 5;
170
- } else {
171
- selectionStart = 6;
172
- selectionEnd = 10;
173
- }
174
- setTimeout(() => {
175
- input.setSelectionRange(selectionStart, selectionEnd);
176
- }, 0);
177
- onInputClick?.();
178
- },
179
- [inputValue, onInputClick]
180
- );
181
- const handleFocus = React.useCallback(
182
- (e) => {
183
- setIsFocused(true);
184
- if (inputValue) {
185
- const input = e.currentTarget;
186
- setTimeout(() => {
187
- input.setSelectionRange(0, 2);
188
- }, 0);
189
- }
190
- },
191
- [inputValue]
192
- );
193
- const handleBlur = React.useCallback(() => {
194
- setIsFocused(false);
195
- if (inputValue) {
196
- const validation = validateDateInput(inputValue, dateFormat, minDate, maxDate, true);
197
- if (!validation.isValid) {
198
- setInternalError(validation.error || "");
199
- }
200
- }
201
- }, [inputValue, dateFormat, minDate, maxDate]);
202
- const handleClear = React.useCallback(() => {
203
- setInputValue("");
204
- setInternalError("");
205
- onChange?.(null);
206
- onInputChange?.("");
207
- onClearValue?.();
208
- }, [onChange, onInputChange, onClearValue]);
209
- const handleKeyPress = React.useCallback((e) => {
210
- if (!/[\d/]/.test(e.key) && !["Backspace", "Delete", "ArrowLeft", "ArrowRight", "Tab"].includes(e.key)) {
211
- e.preventDefault();
212
- }
213
- }, []);
214
- const handleKeyDown = React.useCallback(
215
- (e) => {
216
- const input = e.currentTarget;
217
- const cursorPosition = input.selectionStart || 0;
218
- const selectionLength = (input.selectionEnd || 0) - (input.selectionStart || 0);
219
- const isSegmentSelected = selectionLength > 0;
220
- if (e.key === "ArrowLeft" && isSegmentSelected) {
221
- e.preventDefault();
222
- if (cursorPosition <= 2) {
223
- input.setSelectionRange(6, 10);
224
- } else if (cursorPosition <= 5) {
225
- input.setSelectionRange(0, 2);
226
- } else {
227
- input.setSelectionRange(3, 5);
228
- }
229
- } else if (e.key === "ArrowRight" && isSegmentSelected) {
230
- e.preventDefault();
231
- if (cursorPosition <= 2) {
232
- input.setSelectionRange(3, 5);
233
- } else if (cursorPosition <= 5) {
234
- input.setSelectionRange(6, 10);
235
- } else {
236
- input.setSelectionRange(0, 2);
237
- }
238
- } else {
239
- handleKeyPress(e);
240
- }
241
- },
242
- [handleKeyPress]
243
- );
244
- const hasError = isError || !!internalError;
245
- const displayErrorText = errorText || internalError;
246
- const displayHelpText = isFocused && !hasError ? helpText || `\u0110\u1ECBnh d\u1EA1ng: ${dateFormat.toLowerCase()}` : helpText;
247
- return /* @__PURE__ */ jsx(
248
- Input,
249
- {
250
- ref,
251
- type: "text",
252
- value: inputValue,
253
- onChange: handleInputChange,
254
- onFocus: handleFocus,
255
- onBlur: handleBlur,
256
- onKeyDown: handleKeyDown,
257
- onClick: handleInputClick,
258
- placeholder,
259
- label,
260
- disabled,
261
- isError: hasError,
262
- errorText: displayErrorText,
263
- helpText: displayHelpText,
264
- size,
265
- className: cn("w-full", className),
266
- inputClassName: cn("font-mono w-full min-w-0 flex-1", inputClassName),
267
- showRemoveIcon: showClearButton && !!inputValue && !disabled,
268
- onClearValue: handleClear,
269
- buttonIcon: showCalendarIcon ? /* @__PURE__ */ jsx("div", { className: "cursor-pointer", "data-calendar-icon": true, children: /* @__PURE__ */ jsx(CalendarOutlinedIcon, { className: "h-5 w-5" }) }) : void 0,
270
- maxLength: 10,
271
- style: { width: "100%", ...style },
272
- ...props
273
- }
274
- );
275
- }
276
- );
277
- DateField.displayName = "DateField";
278
-
279
- export { DateField };
280
- //# sourceMappingURL=date-field.mjs.map
281
- //# sourceMappingURL=date-field.mjs.map