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 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/otp-dialog.tsx"],"names":[],"mappings":"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","file":"otp-dialog.mjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Button } from '../../../components/button';\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from '../../../components/input-otp';\nimport { Spinner } from '../../../components/spinner';\nimport { debounce } from '../../../lib/helpers';\nimport { Countdown } from '../../display/countdown';\nimport { AlertDialogWrapper } from '../alert-dialog-wrapper';\nimport { initialOtpDialogState, otpDialogReducer } from './reducer';\nimport { OtpDialogActionType, type OtpDialogProps } from './types';\nimport { maskPhoneNumber, normalizeErrorMessage } from './utils';\nimport { cn } from '@/lib';\n\n/**\n * OtpDialog - A reusable OTP verification dialog component\n *\n * @example\n * // Controlled pattern (with external state)\n * const [open, setOpen] = useState(false);\n * <OtpDialog\n * open={open}\n * onOpenChange={setOpen}\n * onVerifyOtp={async (otp) => {\n * try {\n * await verifyApi(otp);\n * return { success: true };\n * } catch (error) {\n * return { success: false, error: 'Invalid OTP' };\n * }\n * }}\n * />\n *\n * @example\n * // Uncontrolled pattern (with trigger button)\n * <OtpDialog\n * trigger={<Button>Verify Phone</Button>}\n * onVerifyOtp={async (otp) => {\n * await verifyApi(otp); // throws on error\n * }}\n * />\n */\n\nconst OtpDialog: React.FC<OtpDialogProps> = ({\n trigger,\n triggerAsChild,\n triggerClassName,\n open,\n onOpenChange,\n defaultOpen,\n title = 'Nhập mã OTP',\n description,\n size = 'lg',\n hasCloseButton,\n contentClassName,\n phoneNumber,\n needToMaskPhoneNumber = true,\n countdownDuration = 300,\n onVerifyOtp,\n onResendOtp,\n isVerifying = false,\n isResending = false,\n error,\n onSuccess,\n onError,\n verifyButtonText = 'Xác nhận',\n resendButtonText = 'Gửi lại OTP',\n phonePromptText = 'OTP được gửi qua số điện thoại',\n customInstructions,\n otpLength = 6,\n otpPattern = '^[0-9]+$',\n autoFocus = true,\n autoSubmit = true, // Default to auto-submit\n trackingNameView,\n trackingNameClose,\n trackingData,\n trackingIndex,\n}) => {\n const [state, dispatch] = React.useReducer(otpDialogReducer, initialOtpDialogState);\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isVerifyingRef = React.useRef(false); // Prevent double submission\n\n // Use external error if provided, otherwise use internal error\n const displayError = error || state.internalError;\n\n // Mask phone number for display\n const maskedPhone = React.useMemo(\n () => (needToMaskPhoneNumber ? maskPhoneNumber(phoneNumber) : phoneNumber),\n [phoneNumber, needToMaskPhoneNumber],\n );\n\n // Reset state when dialog opens/closes and handle auto-focus\n React.useEffect(() => {\n if (open) {\n dispatch({ type: OtpDialogActionType.RESET });\n isVerifyingRef.current = false; // Reset verifying flag\n\n if (autoFocus) {\n // Focus input after dialog animation completes\n // Using requestAnimationFrame + setTimeout for better timing\n let rafId: number;\n let timerId: NodeJS.Timeout;\n\n rafId = requestAnimationFrame(() => {\n timerId = setTimeout(() => {\n const otpInput = document.querySelector('[data-input-otp]');\n if (otpInput instanceof HTMLInputElement) {\n otpInput.focus();\n }\n }, 150);\n });\n\n return () => {\n cancelAnimationFrame(rafId);\n clearTimeout(timerId);\n };\n }\n }\n }, [open, autoFocus]);\n\n const handleResendOtp = async () => {\n if (!onResendOtp) return;\n\n try {\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: null });\n await onResendOtp();\n\n // Reset countdown and OTP input on successful resend\n dispatch({ type: OtpDialogActionType.SET_COUNTDOWN_ACTIVE, payload: true });\n dispatch({ type: OtpDialogActionType.INCREMENT_COUNTDOWN_KEY });\n dispatch({ type: OtpDialogActionType.SET_OTP, payload: '' });\n } catch (err: any) {\n const errorMessage = normalizeErrorMessage(err) || 'Gửi lại OTP thất bại';\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });\n if (onError) {\n onError(errorMessage);\n }\n }\n };\n\n const handleVerifyOtp = React.useCallback(\n async (otpValue?: string) => {\n const otpToVerify = otpValue || state.otp;\n\n // Prevent double submission - use both ref and state check\n if (isVerifyingRef.current || state.isVerifying) {\n console.warn('[OTP] Verification already in progress, skipping');\n return;\n }\n\n if (otpToVerify.length !== otpLength) {\n const errorMessage = `Vui lòng nhập đủ ${otpLength} số OTP`;\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });\n if (onError) {\n onError(errorMessage);\n }\n return;\n }\n\n try {\n // Set both ref and state to prevent any race conditions\n isVerifyingRef.current = true;\n dispatch({ type: OtpDialogActionType.SET_IS_VERIFYING, payload: true });\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: null });\n\n console.log('[OTP] Starting verification with value:', otpToVerify);\n\n // Call onVerifyOtp and handle both return value and thrown errors\n const result = await onVerifyOtp(otpToVerify);\n\n console.log('[OTP] Verification result:', result);\n\n // IMPORTANT: Only close dialog if explicitly returns { success: true }\n // Any other return value is treated as failure to keep dialog open\n if (result?.success === true) {\n // Verification successful - execute success callback and close dialog\n if (onSuccess) {\n await onSuccess();\n }\n\n // Close dialog after all success handlers complete\n if (onOpenChange) {\n onOpenChange(false);\n }\n } else {\n // Verification failed or returned non-success - keep dialog open\n const errorMessage = result?.error || 'Mã OTP không đúng hoặc hết hạn';\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });\n dispatch({ type: OtpDialogActionType.SET_OTP, payload: '' }); // Clear OTP for retry\n\n if (onError) {\n onError(errorMessage);\n }\n\n // Re-focus input after clearing OTP\n setTimeout(() => {\n const otpInput = document.querySelector('[data-input-otp]');\n if (otpInput instanceof HTMLInputElement) {\n otpInput.focus();\n }\n }, 100);\n }\n } catch (err: any) {\n // Thrown error - treat as verification failure\n console.error('[OTP] Verification error:', err);\n const errorMessage = normalizeErrorMessage(err);\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });\n dispatch({ type: OtpDialogActionType.SET_OTP, payload: '' }); // Clear OTP for retry\n\n if (onError) {\n onError(errorMessage);\n }\n\n // Re-focus input after clearing OTP\n setTimeout(() => {\n const otpInput = document.querySelector('[data-input-otp]');\n if (otpInput instanceof HTMLInputElement) {\n otpInput.focus();\n }\n }, 100);\n } finally {\n // CRITICAL: Always reset both ref and state in finally block\n // This ensures cleanup even if there's an early return or exception\n console.log('[OTP] Verification complete, resetting flags');\n isVerifyingRef.current = false;\n dispatch({ type: OtpDialogActionType.SET_IS_VERIFYING, payload: false });\n }\n },\n // Include state.otp to ensure fresh value is captured in closure\n // Even though we prefer passed otpValue, state.otp is used as fallback\n [otpLength, onVerifyOtp, onSuccess, onOpenChange, onError, state.otp],\n );\n\n const handleCountdownComplete = () => {\n dispatch({ type: OtpDialogActionType.SET_COUNTDOWN_ACTIVE, payload: false });\n };\n\n // Debounced auto-submit function with longer delay to prevent race conditions\n // Using 300ms to ensure user has finished typing and to give enough time\n // for any pending state updates to complete before submission\n //\n // FIXED: Store debounce instance in ref, but pass fresh handleVerifyOtp on each call\n // to avoid stale closure issues while maintaining stable debounce timer\n const debouncedAutoSubmitRef = React.useRef(\n debounce(async (otpValue: string) => {\n // Additional check: only submit if not currently verifying\n if (isVerifyingRef.current) {\n console.warn('[OTP] Skipping auto-submit, verification in progress');\n return;\n }\n\n console.log('[OTP] Auto-submitting OTP:', otpValue);\n // Don't pass verifyFn as param - will be accessed via closure from latest render\n }, 300),\n );\n\n // Cancel debounce when dialog closes or component unmounts\n React.useEffect(() => {\n if (!open) {\n // Cancel any pending debounced calls when dialog closes\n debouncedAutoSubmitRef.current.cancel();\n }\n\n return () => {\n // Cleanup on unmount\n debouncedAutoSubmitRef.current.cancel();\n };\n }, [open]); // Re-run when dialog open state changes\n\n const handleOtpChange = (value: string) => {\n // Prevent input changes when verifying or resending\n if (state.isVerifying || isResending) {\n console.warn('[OTP] Input locked during verification/resend');\n return;\n }\n\n console.log('[OTP] Value changed:', value, 'Length:', value.length);\n dispatch({ type: OtpDialogActionType.SET_OTP, payload: value });\n // Clear errors when user starts typing\n dispatch({ type: OtpDialogActionType.SET_ERROR, payload: null });\n\n // Auto-submit when OTP is complete\n if (autoSubmit && value.length === otpLength) {\n console.log('[OTP] Auto-submit triggered for complete OTP');\n // Debounce the submission, then call latest handleVerifyOtp\n // This ensures we always use the most recent handleVerifyOtp reference\n debouncedAutoSubmitRef\n .current(value)\n .then(() => {\n // After debounce completes, call the current handleVerifyOtp\n // This avoids stale closure by accessing handleVerifyOtp at execution time\n return handleVerifyOtp(value);\n })\n .catch((err) => {\n // Error is already handled in handleVerifyOtp\n console.error('[OTP] Auto-submit error:', err);\n });\n }\n };\n\n const renderCountdownComp = React.useCallback(() => {\n return (\n <Countdown\n key={state.countdownKey}\n duration={countdownDuration}\n className=\"text-primary\"\n active={state.isCountdownActive}\n onComplete={handleCountdownComplete}\n formatTime={(minutes: number, seconds: number) =>\n `(${minutes}:${seconds.toString().padStart(2, '0')})`\n }\n />\n );\n }, [countdownDuration, state.isCountdownActive, state.countdownKey]);\n\n return (\n <AlertDialogWrapper\n trigger={trigger}\n triggerAsChild={triggerAsChild}\n triggerClassName={triggerClassName}\n open={open}\n onOpenChange={onOpenChange}\n defaultOpen={defaultOpen}\n title={title}\n description={description}\n hasCloseButton={hasCloseButton}\n contentClassName={contentClassName}\n showDefaultActions={false}\n size={size}\n autoHeight\n childrenClassName=\"h-full p-4 pt-0\"\n showFooter={!autoSubmit}\n trackingNameView={trackingNameView}\n trackingNameClose={trackingNameClose}\n trackingData={trackingData}\n trackingIndex={trackingIndex}\n footerContent={\n <div className=\"flex w-full flex-col gap-3\">\n <Button\n onClick={() => handleVerifyOtp()}\n disabled={state.otp.length !== otpLength || isVerifying}\n loading={isVerifying}\n className=\"w-full\"\n >\n {verifyButtonText}\n </Button>\n </div>\n }\n >\n <div className=\"flex h-full flex-col items-center justify-center gap-4\">\n {/* Phone number info */}\n {phoneNumber && (\n <div className=\"text-center\">\n <p className=\"text-ink-500s font-medium\">\n {phonePromptText} <span className=\"font-medium\">{maskedPhone}</span>\n </p>\n </div>\n )}\n\n {/* Custom instructions */}\n {customInstructions && <div className=\"text-center\">{customInstructions}</div>}\n\n {/* OTP Input */}\n <div className=\"flex justify-center\">\n <InputOTP\n ref={inputRef}\n maxLength={otpLength}\n value={state.otp}\n onChange={handleOtpChange}\n pattern={otpPattern}\n error={!!displayError}\n disabled={state.isVerifying || isResending}\n >\n <InputOTPGroup>\n {Array.from({ length: otpLength }, (_, index) => (\n <InputOTPSlot key={index} index={index} />\n ))}\n </InputOTPGroup>\n </InputOTP>\n </div>\n\n {/* Error message */}\n {displayError && (\n <div className=\"text-center\">\n <p className=\"text-red-500\">{displayError}</p>\n </div>\n )}\n\n {/* Countdown and resend */}\n {onResendOtp && (\n <div className=\"text-ink-400s flex items-center justify-center gap-1\">\n {state.isVerifying && (\n <>\n <span>Đang xác minh</span>\n <Spinner size=\"sm\" />\n </>\n )}\n <div\n className={cn({\n hidden: !state.isCountdownActive || state.isVerifying,\n })}\n >\n {resendButtonText} {renderCountdownComp()}\n </div>\n\n {!state.isVerifying && !state.isCountdownActive && (\n <Button\n variant=\"plain\"\n size=\"sm\"\n onClick={handleResendOtp}\n disabled={isResending}\n loading={isResending}\n >\n {resendButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </AlertDialogWrapper>\n );\n};\n\nexport { OtpDialog };\nexport type { OtpDialogProps };\n"]}
@@ -1,40 +0,0 @@
1
- 'use strict';
2
-
3
- var types = require('./types');
4
-
5
- const otpDialogReducer = (state, action) => {
6
- switch (action.type) {
7
- case types.OtpDialogActionType.SET_OTP:
8
- return { ...state, otp: action.payload };
9
- case types.OtpDialogActionType.SET_ERROR:
10
- return { ...state, internalError: action.payload };
11
- case types.OtpDialogActionType.SET_COUNTDOWN_ACTIVE:
12
- return { ...state, isCountdownActive: action.payload };
13
- case types.OtpDialogActionType.INCREMENT_COUNTDOWN_KEY:
14
- return { ...state, countdownKey: state.countdownKey + 1 };
15
- case types.OtpDialogActionType.SET_IS_VERIFYING:
16
- return { ...state, isVerifying: action.payload };
17
- case types.OtpDialogActionType.RESET:
18
- return {
19
- otp: "",
20
- isCountdownActive: true,
21
- countdownKey: state.countdownKey + 1,
22
- internalError: null,
23
- isVerifying: false
24
- };
25
- default:
26
- return state;
27
- }
28
- };
29
- const initialOtpDialogState = {
30
- otp: "",
31
- isCountdownActive: true,
32
- countdownKey: 0,
33
- internalError: null,
34
- isVerifying: false
35
- };
36
-
37
- exports.initialOtpDialogState = initialOtpDialogState;
38
- exports.otpDialogReducer = otpDialogReducer;
39
- //# sourceMappingURL=reducer.js.map
40
- //# sourceMappingURL=reducer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/reducer.ts"],"names":["OtpDialogActionType"],"mappings":";;;;AAMO,MAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,MAAA,KACmB;AACnB,EAAA,QAAQ,OAAO,IAAA;AAAM,IACnB,KAAKA,yBAAA,CAAoB,OAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,OAAO,OAAA,EAAQ;AAAA,IAEzC,KAAKA,yBAAA,CAAoB,SAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,aAAA,EAAe,OAAO,OAAA,EAAQ;AAAA,IAEnD,KAAKA,yBAAA,CAAoB,oBAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,iBAAA,EAAmB,OAAO,OAAA,EAAQ;AAAA,IAEvD,KAAKA,yBAAA,CAAoB,uBAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,YAAA,EAAc,KAAA,CAAM,eAAe,CAAA,EAAE;AAAA,IAE1D,KAAKA,yBAAA,CAAoB,gBAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,WAAA,EAAa,OAAO,OAAA,EAAQ;AAAA,IAEjD,KAAKA,yBAAA,CAAoB,KAAA;AACvB,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,EAAA;AAAA,QACL,iBAAA,EAAmB,IAAA;AAAA,QACnB,YAAA,EAAc,MAAM,YAAA,GAAe,CAAA;AAAA,QACnC,aAAA,EAAe,IAAA;AAAA,QACf,WAAA,EAAa;AAAA,OACf;AAAA,IAEF;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAKO,MAAM,qBAAA,GAAwC;AAAA,EACnD,GAAA,EAAK,EAAA;AAAA,EACL,iBAAA,EAAmB,IAAA;AAAA,EACnB,YAAA,EAAc,CAAA;AAAA,EACd,aAAA,EAAe,IAAA;AAAA,EACf,WAAA,EAAa;AACf","file":"reducer.js","sourcesContent":["import { OtpDialogActionType, type OtpDialogState, type OtpDialogAction } from './types';\n\n/**\n * OTP Dialog Reducer\n * Manages state transitions for the OTP dialog component\n */\nexport const otpDialogReducer = (\n state: OtpDialogState,\n action: OtpDialogAction,\n): OtpDialogState => {\n switch (action.type) {\n case OtpDialogActionType.SET_OTP:\n return { ...state, otp: action.payload };\n\n case OtpDialogActionType.SET_ERROR:\n return { ...state, internalError: action.payload };\n\n case OtpDialogActionType.SET_COUNTDOWN_ACTIVE:\n return { ...state, isCountdownActive: action.payload };\n\n case OtpDialogActionType.INCREMENT_COUNTDOWN_KEY:\n return { ...state, countdownKey: state.countdownKey + 1 };\n\n case OtpDialogActionType.SET_IS_VERIFYING:\n return { ...state, isVerifying: action.payload };\n\n case OtpDialogActionType.RESET:\n return {\n otp: '',\n isCountdownActive: true,\n countdownKey: state.countdownKey + 1,\n internalError: null,\n isVerifying: false,\n };\n\n default:\n return state;\n }\n};\n\n/**\n * Initial state for OTP dialog\n */\nexport const initialOtpDialogState: OtpDialogState = {\n otp: '',\n isCountdownActive: true,\n countdownKey: 0,\n internalError: null,\n isVerifying: false,\n};\n"]}
@@ -1,37 +0,0 @@
1
- import { OtpDialogActionType } from './types';
2
-
3
- const otpDialogReducer = (state, action) => {
4
- switch (action.type) {
5
- case OtpDialogActionType.SET_OTP:
6
- return { ...state, otp: action.payload };
7
- case OtpDialogActionType.SET_ERROR:
8
- return { ...state, internalError: action.payload };
9
- case OtpDialogActionType.SET_COUNTDOWN_ACTIVE:
10
- return { ...state, isCountdownActive: action.payload };
11
- case OtpDialogActionType.INCREMENT_COUNTDOWN_KEY:
12
- return { ...state, countdownKey: state.countdownKey + 1 };
13
- case OtpDialogActionType.SET_IS_VERIFYING:
14
- return { ...state, isVerifying: action.payload };
15
- case OtpDialogActionType.RESET:
16
- return {
17
- otp: "",
18
- isCountdownActive: true,
19
- countdownKey: state.countdownKey + 1,
20
- internalError: null,
21
- isVerifying: false
22
- };
23
- default:
24
- return state;
25
- }
26
- };
27
- const initialOtpDialogState = {
28
- otp: "",
29
- isCountdownActive: true,
30
- countdownKey: 0,
31
- internalError: null,
32
- isVerifying: false
33
- };
34
-
35
- export { initialOtpDialogState, otpDialogReducer };
36
- //# sourceMappingURL=reducer.mjs.map
37
- //# sourceMappingURL=reducer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/reducer.ts"],"names":[],"mappings":";;AAMO,MAAM,gBAAA,GAAmB,CAC9B,KAAA,EACA,MAAA,KACmB;AACnB,EAAA,QAAQ,OAAO,IAAA;AAAM,IACnB,KAAK,mBAAA,CAAoB,OAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,OAAO,OAAA,EAAQ;AAAA,IAEzC,KAAK,mBAAA,CAAoB,SAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,aAAA,EAAe,OAAO,OAAA,EAAQ;AAAA,IAEnD,KAAK,mBAAA,CAAoB,oBAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,iBAAA,EAAmB,OAAO,OAAA,EAAQ;AAAA,IAEvD,KAAK,mBAAA,CAAoB,uBAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,YAAA,EAAc,KAAA,CAAM,eAAe,CAAA,EAAE;AAAA,IAE1D,KAAK,mBAAA,CAAoB,gBAAA;AACvB,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,WAAA,EAAa,OAAO,OAAA,EAAQ;AAAA,IAEjD,KAAK,mBAAA,CAAoB,KAAA;AACvB,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,EAAA;AAAA,QACL,iBAAA,EAAmB,IAAA;AAAA,QACnB,YAAA,EAAc,MAAM,YAAA,GAAe,CAAA;AAAA,QACnC,aAAA,EAAe,IAAA;AAAA,QACf,WAAA,EAAa;AAAA,OACf;AAAA,IAEF;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAKO,MAAM,qBAAA,GAAwC;AAAA,EACnD,GAAA,EAAK,EAAA;AAAA,EACL,iBAAA,EAAmB,IAAA;AAAA,EACnB,YAAA,EAAc,CAAA;AAAA,EACd,aAAA,EAAe,IAAA;AAAA,EACf,WAAA,EAAa;AACf","file":"reducer.mjs","sourcesContent":["import { OtpDialogActionType, type OtpDialogState, type OtpDialogAction } from './types';\n\n/**\n * OTP Dialog Reducer\n * Manages state transitions for the OTP dialog component\n */\nexport const otpDialogReducer = (\n state: OtpDialogState,\n action: OtpDialogAction,\n): OtpDialogState => {\n switch (action.type) {\n case OtpDialogActionType.SET_OTP:\n return { ...state, otp: action.payload };\n\n case OtpDialogActionType.SET_ERROR:\n return { ...state, internalError: action.payload };\n\n case OtpDialogActionType.SET_COUNTDOWN_ACTIVE:\n return { ...state, isCountdownActive: action.payload };\n\n case OtpDialogActionType.INCREMENT_COUNTDOWN_KEY:\n return { ...state, countdownKey: state.countdownKey + 1 };\n\n case OtpDialogActionType.SET_IS_VERIFYING:\n return { ...state, isVerifying: action.payload };\n\n case OtpDialogActionType.RESET:\n return {\n otp: '',\n isCountdownActive: true,\n countdownKey: state.countdownKey + 1,\n internalError: null,\n isVerifying: false,\n };\n\n default:\n return state;\n }\n};\n\n/**\n * Initial state for OTP dialog\n */\nexport const initialOtpDialogState: OtpDialogState = {\n otp: '',\n isCountdownActive: true,\n countdownKey: 0,\n internalError: null,\n isVerifying: false,\n};\n"]}
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- var OtpDialogActionType = /* @__PURE__ */ ((OtpDialogActionType2) => {
4
- OtpDialogActionType2["SET_OTP"] = "SET_OTP";
5
- OtpDialogActionType2["SET_ERROR"] = "SET_ERROR";
6
- OtpDialogActionType2["SET_COUNTDOWN_ACTIVE"] = "SET_COUNTDOWN_ACTIVE";
7
- OtpDialogActionType2["INCREMENT_COUNTDOWN_KEY"] = "INCREMENT_COUNTDOWN_KEY";
8
- OtpDialogActionType2["SET_IS_VERIFYING"] = "SET_IS_VERIFYING";
9
- OtpDialogActionType2["RESET"] = "RESET";
10
- return OtpDialogActionType2;
11
- })(OtpDialogActionType || {});
12
-
13
- exports.OtpDialogActionType = OtpDialogActionType;
14
- //# sourceMappingURL=types.js.map
15
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/types.ts"],"names":["OtpDialogActionType"],"mappings":";;AAMO,IAAK,mBAAA,qBAAAA,oBAAAA,KAAL;AACL,EAAAA,qBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,qBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,qBAAA,sBAAA,CAAA,GAAuB,sBAAA;AACvB,EAAAA,qBAAA,yBAAA,CAAA,GAA0B,yBAAA;AAC1B,EAAAA,qBAAA,kBAAA,CAAA,GAAmB,kBAAA;AACnB,EAAAA,qBAAA,OAAA,CAAA,GAAQ,OAAA;AANE,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA","file":"types.js","sourcesContent":["/**\n * OTP Dialog Types\n */\n\nimport * as React from 'react';\n\nexport enum OtpDialogActionType {\n SET_OTP = 'SET_OTP',\n SET_ERROR = 'SET_ERROR',\n SET_COUNTDOWN_ACTIVE = 'SET_COUNTDOWN_ACTIVE',\n INCREMENT_COUNTDOWN_KEY = 'INCREMENT_COUNTDOWN_KEY',\n SET_IS_VERIFYING = 'SET_IS_VERIFYING',\n RESET = 'RESET',\n}\n\nexport type OtpDialogState = {\n otp: string;\n isCountdownActive: boolean;\n countdownKey: number;\n internalError: string | null;\n isVerifying: boolean;\n};\n\nexport type OtpDialogAction =\n | { type: OtpDialogActionType.SET_OTP; payload: string }\n | { type: OtpDialogActionType.SET_ERROR; payload: string | null }\n | { type: OtpDialogActionType.SET_COUNTDOWN_ACTIVE; payload: boolean }\n | { type: OtpDialogActionType.INCREMENT_COUNTDOWN_KEY }\n | { type: OtpDialogActionType.SET_IS_VERIFYING; payload: boolean }\n | { type: OtpDialogActionType.RESET };\n\nexport interface OtpDialogProps {\n // Dialog control - supports both controlled and uncontrolled patterns\n trigger?: React.ReactNode; // Optional trigger button (uncontrolled)\n triggerAsChild?: boolean; // Whether trigger should be rendered as child\n triggerClassName?: string; // Custom className for trigger\n open?: boolean; // For controlled usage\n onOpenChange?: (open: boolean) => void; // For controlled usage\n defaultOpen?: boolean; // For uncontrolled usage with trigger\n\n // Dialog customization\n title?: string;\n description?: string; // Additional description under title\n size?: 'sm' | 'md' | 'lg' | 'xl';\n hasCloseButton?: boolean; // Show/hide close button (X)\n contentClassName?: string; // Custom className for dialog content\n\n // OTP specific props\n phoneNumber?: string;\n countdownDuration?: number; // in seconds, default 300 (5 minutes)\n needToMaskPhoneNumber?: boolean; // Whether to mask phone number, default true\n /**\n * Verify OTP function\n * Should return:\n * - { success: true } on successful verification\n * - { success: false, error: string } on failed verification\n * - Or throw error (will be caught and treated as failure)\n */\n onVerifyOtp: (otp: string) => Promise<{ success: boolean; error?: string } | void>;\n onResendOtp?: () => Promise<void>;\n isVerifying?: boolean;\n isResending?: boolean;\n error?: string | null;\n onSuccess?: () => void | Promise<void>;\n onError?: (error: string) => void;\n\n // Customization props\n verifyButtonText?: string;\n resendButtonText?: string;\n phonePromptText?: string;\n customInstructions?: React.ReactNode;\n\n // OTP input customization\n otpLength?: number;\n otpPattern?: string;\n autoFocus?: boolean;\n\n // Auto-submit behavior\n autoSubmit?: boolean; // Default true - auto verify when OTP is complete\n\n // Tracking props (from AlertDialogWrapper)\n trackingNameView?: string;\n trackingNameClose?: string;\n trackingData?: Record<string, any>;\n trackingIndex?: number;\n}\n"]}
@@ -1,13 +0,0 @@
1
- var OtpDialogActionType = /* @__PURE__ */ ((OtpDialogActionType2) => {
2
- OtpDialogActionType2["SET_OTP"] = "SET_OTP";
3
- OtpDialogActionType2["SET_ERROR"] = "SET_ERROR";
4
- OtpDialogActionType2["SET_COUNTDOWN_ACTIVE"] = "SET_COUNTDOWN_ACTIVE";
5
- OtpDialogActionType2["INCREMENT_COUNTDOWN_KEY"] = "INCREMENT_COUNTDOWN_KEY";
6
- OtpDialogActionType2["SET_IS_VERIFYING"] = "SET_IS_VERIFYING";
7
- OtpDialogActionType2["RESET"] = "RESET";
8
- return OtpDialogActionType2;
9
- })(OtpDialogActionType || {});
10
-
11
- export { OtpDialogActionType };
12
- //# sourceMappingURL=types.mjs.map
13
- //# sourceMappingURL=types.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/types.ts"],"names":["OtpDialogActionType"],"mappings":"AAMO,IAAK,mBAAA,qBAAAA,oBAAAA,KAAL;AACL,EAAAA,qBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,qBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,qBAAA,sBAAA,CAAA,GAAuB,sBAAA;AACvB,EAAAA,qBAAA,yBAAA,CAAA,GAA0B,yBAAA;AAC1B,EAAAA,qBAAA,kBAAA,CAAA,GAAmB,kBAAA;AACnB,EAAAA,qBAAA,OAAA,CAAA,GAAQ,OAAA;AANE,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA","file":"types.mjs","sourcesContent":["/**\n * OTP Dialog Types\n */\n\nimport * as React from 'react';\n\nexport enum OtpDialogActionType {\n SET_OTP = 'SET_OTP',\n SET_ERROR = 'SET_ERROR',\n SET_COUNTDOWN_ACTIVE = 'SET_COUNTDOWN_ACTIVE',\n INCREMENT_COUNTDOWN_KEY = 'INCREMENT_COUNTDOWN_KEY',\n SET_IS_VERIFYING = 'SET_IS_VERIFYING',\n RESET = 'RESET',\n}\n\nexport type OtpDialogState = {\n otp: string;\n isCountdownActive: boolean;\n countdownKey: number;\n internalError: string | null;\n isVerifying: boolean;\n};\n\nexport type OtpDialogAction =\n | { type: OtpDialogActionType.SET_OTP; payload: string }\n | { type: OtpDialogActionType.SET_ERROR; payload: string | null }\n | { type: OtpDialogActionType.SET_COUNTDOWN_ACTIVE; payload: boolean }\n | { type: OtpDialogActionType.INCREMENT_COUNTDOWN_KEY }\n | { type: OtpDialogActionType.SET_IS_VERIFYING; payload: boolean }\n | { type: OtpDialogActionType.RESET };\n\nexport interface OtpDialogProps {\n // Dialog control - supports both controlled and uncontrolled patterns\n trigger?: React.ReactNode; // Optional trigger button (uncontrolled)\n triggerAsChild?: boolean; // Whether trigger should be rendered as child\n triggerClassName?: string; // Custom className for trigger\n open?: boolean; // For controlled usage\n onOpenChange?: (open: boolean) => void; // For controlled usage\n defaultOpen?: boolean; // For uncontrolled usage with trigger\n\n // Dialog customization\n title?: string;\n description?: string; // Additional description under title\n size?: 'sm' | 'md' | 'lg' | 'xl';\n hasCloseButton?: boolean; // Show/hide close button (X)\n contentClassName?: string; // Custom className for dialog content\n\n // OTP specific props\n phoneNumber?: string;\n countdownDuration?: number; // in seconds, default 300 (5 minutes)\n needToMaskPhoneNumber?: boolean; // Whether to mask phone number, default true\n /**\n * Verify OTP function\n * Should return:\n * - { success: true } on successful verification\n * - { success: false, error: string } on failed verification\n * - Or throw error (will be caught and treated as failure)\n */\n onVerifyOtp: (otp: string) => Promise<{ success: boolean; error?: string } | void>;\n onResendOtp?: () => Promise<void>;\n isVerifying?: boolean;\n isResending?: boolean;\n error?: string | null;\n onSuccess?: () => void | Promise<void>;\n onError?: (error: string) => void;\n\n // Customization props\n verifyButtonText?: string;\n resendButtonText?: string;\n phonePromptText?: string;\n customInstructions?: React.ReactNode;\n\n // OTP input customization\n otpLength?: number;\n otpPattern?: string;\n autoFocus?: boolean;\n\n // Auto-submit behavior\n autoSubmit?: boolean; // Default true - auto verify when OTP is complete\n\n // Tracking props (from AlertDialogWrapper)\n trackingNameView?: string;\n trackingNameClose?: string;\n trackingData?: Record<string, any>;\n trackingIndex?: number;\n}\n"]}
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const maskPhoneNumber = (phoneNumber) => {
4
- if (!phoneNumber) return "";
5
- const cleanPhone = phoneNumber.replace(/[^\d]/g, "");
6
- if (cleanPhone.length >= 10) {
7
- return cleanPhone.replace(/(\d{4})(\d+)(\d{3})/, "$1***$3");
8
- } else if (cleanPhone.length >= 7) {
9
- return cleanPhone.replace(/(\d{3})(\d+)(\d{2})/, "$1***$3");
10
- }
11
- return phoneNumber;
12
- };
13
- const normalizeErrorMessage = (err) => {
14
- const errorMessage = err?.message || err?.meta?.message || "";
15
- if (errorMessage.toLowerCase().includes("invalid") || errorMessage.toLowerCase().includes("wrong") || errorMessage.toLowerCase().includes("expired")) {
16
- return "M\xE3 OTP kh\xF4ng \u0111\xFAng ho\u1EB7c h\u1EBFt h\u1EA1n";
17
- }
18
- return errorMessage || "\u0110\xE3 c\xF3 l\u1ED7i x\u1EA3y ra";
19
- };
20
-
21
- exports.maskPhoneNumber = maskPhoneNumber;
22
- exports.normalizeErrorMessage = normalizeErrorMessage;
23
- //# sourceMappingURL=utils.js.map
24
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/utils.ts"],"names":[],"mappings":";;AASO,MAAM,eAAA,GAAkB,CAAC,WAAA,KAAiC;AAC/D,EAAA,IAAI,CAAC,aAAa,OAAO,EAAA;AAGzB,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAEnD,EAAA,IAAI,UAAA,CAAW,UAAU,EAAA,EAAI;AAE3B,IAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAuB,SAAS,CAAA;AAAA,EAC5D,CAAA,MAAA,IAAW,UAAA,CAAW,MAAA,IAAU,CAAA,EAAG;AAEjC,IAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAuB,SAAS,CAAA;AAAA,EAC5D;AAEA,EAAA,OAAO,WAAA;AACT;AAQO,MAAM,qBAAA,GAAwB,CAAC,GAAA,KAAqB;AACzD,EAAA,MAAM,YAAA,GAAe,GAAA,EAAK,OAAA,IAAW,GAAA,EAAK,MAAM,OAAA,IAAW,EAAA;AAG3D,EAAA,IACE,aAAa,WAAA,EAAY,CAAE,QAAA,CAAS,SAAS,KAC7C,YAAA,CAAa,WAAA,EAAY,CAAE,QAAA,CAAS,OAAO,CAAA,IAC3C,YAAA,CAAa,aAAY,CAAE,QAAA,CAAS,SAAS,CAAA,EAC7C;AACA,IAAA,OAAO,6DAAA;AAAA,EACT;AAGA,EAAA,OAAO,YAAA,IAAgB,uCAAA;AACzB","file":"utils.js","sourcesContent":["/**\n * OTP Dialog Utilities\n */\n\n/**\n * Mask phone number for display\n * @param phoneNumber - Phone number to mask\n * @returns Masked phone number (e.g., \"0987***222\")\n */\nexport const maskPhoneNumber = (phoneNumber?: string): string => {\n if (!phoneNumber) return '';\n\n // Handle different phone number formats\n const cleanPhone = phoneNumber.replace(/[^\\d]/g, '');\n\n if (cleanPhone.length >= 10) {\n // For 10+ digit numbers: show first 4 and last 3 digits\n return cleanPhone.replace(/(\\d{4})(\\d+)(\\d{3})/, '$1***$3');\n } else if (cleanPhone.length >= 7) {\n // For 7-9 digit numbers: show first 3 and last 2 digits\n return cleanPhone.replace(/(\\d{3})(\\d+)(\\d{2})/, '$1***$3');\n }\n\n return phoneNumber; // Return as-is if too short\n};\n\n/**\n * Normalize error messages for better UX\n * Converts various error messages to user-friendly Vietnamese\n * @param err - Error object\n * @returns Normalized error message\n */\nexport const normalizeErrorMessage = (err: any): string => {\n const errorMessage = err?.message || err?.meta?.message || '';\n\n // Check for OTP validation errors\n if (\n errorMessage.toLowerCase().includes('invalid') ||\n errorMessage.toLowerCase().includes('wrong') ||\n errorMessage.toLowerCase().includes('expired')\n ) {\n return 'Mã OTP không đúng hoặc hết hạn';\n }\n\n // Default messages\n return errorMessage || 'Đã có lỗi xảy ra';\n};\n"]}
@@ -1,21 +0,0 @@
1
- const maskPhoneNumber = (phoneNumber) => {
2
- if (!phoneNumber) return "";
3
- const cleanPhone = phoneNumber.replace(/[^\d]/g, "");
4
- if (cleanPhone.length >= 10) {
5
- return cleanPhone.replace(/(\d{4})(\d+)(\d{3})/, "$1***$3");
6
- } else if (cleanPhone.length >= 7) {
7
- return cleanPhone.replace(/(\d{3})(\d+)(\d{2})/, "$1***$3");
8
- }
9
- return phoneNumber;
10
- };
11
- const normalizeErrorMessage = (err) => {
12
- const errorMessage = err?.message || err?.meta?.message || "";
13
- if (errorMessage.toLowerCase().includes("invalid") || errorMessage.toLowerCase().includes("wrong") || errorMessage.toLowerCase().includes("expired")) {
14
- return "M\xE3 OTP kh\xF4ng \u0111\xFAng ho\u1EB7c h\u1EBFt h\u1EA1n";
15
- }
16
- return errorMessage || "\u0110\xE3 c\xF3 l\u1ED7i x\u1EA3y ra";
17
- };
18
-
19
- export { maskPhoneNumber, normalizeErrorMessage };
20
- //# sourceMappingURL=utils.mjs.map
21
- //# sourceMappingURL=utils.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/utils.ts"],"names":[],"mappings":"AASO,MAAM,eAAA,GAAkB,CAAC,WAAA,KAAiC;AAC/D,EAAA,IAAI,CAAC,aAAa,OAAO,EAAA;AAGzB,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAEnD,EAAA,IAAI,UAAA,CAAW,UAAU,EAAA,EAAI;AAE3B,IAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAuB,SAAS,CAAA;AAAA,EAC5D,CAAA,MAAA,IAAW,UAAA,CAAW,MAAA,IAAU,CAAA,EAAG;AAEjC,IAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAuB,SAAS,CAAA;AAAA,EAC5D;AAEA,EAAA,OAAO,WAAA;AACT;AAQO,MAAM,qBAAA,GAAwB,CAAC,GAAA,KAAqB;AACzD,EAAA,MAAM,YAAA,GAAe,GAAA,EAAK,OAAA,IAAW,GAAA,EAAK,MAAM,OAAA,IAAW,EAAA;AAG3D,EAAA,IACE,aAAa,WAAA,EAAY,CAAE,QAAA,CAAS,SAAS,KAC7C,YAAA,CAAa,WAAA,EAAY,CAAE,QAAA,CAAS,OAAO,CAAA,IAC3C,YAAA,CAAa,aAAY,CAAE,QAAA,CAAS,SAAS,CAAA,EAC7C;AACA,IAAA,OAAO,6DAAA;AAAA,EACT;AAGA,EAAA,OAAO,YAAA,IAAgB,uCAAA;AACzB","file":"utils.mjs","sourcesContent":["/**\n * OTP Dialog Utilities\n */\n\n/**\n * Mask phone number for display\n * @param phoneNumber - Phone number to mask\n * @returns Masked phone number (e.g., \"0987***222\")\n */\nexport const maskPhoneNumber = (phoneNumber?: string): string => {\n if (!phoneNumber) return '';\n\n // Handle different phone number formats\n const cleanPhone = phoneNumber.replace(/[^\\d]/g, '');\n\n if (cleanPhone.length >= 10) {\n // For 10+ digit numbers: show first 4 and last 3 digits\n return cleanPhone.replace(/(\\d{4})(\\d+)(\\d{3})/, '$1***$3');\n } else if (cleanPhone.length >= 7) {\n // For 7-9 digit numbers: show first 3 and last 2 digits\n return cleanPhone.replace(/(\\d{3})(\\d+)(\\d{2})/, '$1***$3');\n }\n\n return phoneNumber; // Return as-is if too short\n};\n\n/**\n * Normalize error messages for better UX\n * Converts various error messages to user-friendly Vietnamese\n * @param err - Error object\n * @returns Normalized error message\n */\nexport const normalizeErrorMessage = (err: any): string => {\n const errorMessage = err?.message || err?.meta?.message || '';\n\n // Check for OTP validation errors\n if (\n errorMessage.toLowerCase().includes('invalid') ||\n errorMessage.toLowerCase().includes('wrong') ||\n errorMessage.toLowerCase().includes('expired')\n ) {\n return 'Mã OTP không đúng hoặc hết hạn';\n }\n\n // Default messages\n return errorMessage || 'Đã có lỗi xảy ra';\n};\n"]}
@@ -1,51 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var skeleton = require('../../../components/skeleton');
5
- var utils = require('../../../lib/utils');
6
-
7
- function PaginationSkeleton({ className }) {
8
- return /* @__PURE__ */ jsxRuntime.jsxs(
9
- "div",
10
- {
11
- className: utils.cn(
12
- "flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",
13
- className
14
- ),
15
- children: [
16
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-5 w-48" }) }),
17
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-center gap-1 sm:gap-2 lg:flex-1 lg:gap-3", children: [
18
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-9" }),
19
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 sm:gap-2 lg:hidden", children: [
20
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
21
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
22
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
23
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-9" })
24
- ] }),
25
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden items-center gap-3 lg:flex", children: [
26
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
27
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
28
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
29
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
30
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" }),
31
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-9" }),
32
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-10" })
33
- ] }),
34
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-9 w-9" })
35
- ] }),
36
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-1 lg:hidden", children: [
37
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-5 w-32" }),
38
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-5 w-12" })
39
- ] }),
40
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden shrink-0 items-center gap-1 lg:flex", children: [
41
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-5 w-32" }),
42
- /* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-5 w-12" })
43
- ] })
44
- ]
45
- }
46
- );
47
- }
48
-
49
- exports.PaginationSkeleton = PaginationSkeleton;
50
- //# sourceMappingURL=PaginationSkeleton.js.map
51
- //# sourceMappingURL=PaginationSkeleton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/pagination/PaginationSkeleton.tsx"],"names":["jsxs","cn","jsx","Skeleton"],"mappings":";;;;;;AAOO,SAAS,kBAAA,CAAmB,EAAE,SAAA,EAAU,EAA4B;AACzE,EAAA,uBACEA,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,QAAA;AAAA,QACT,oEAAA;AAAA,QACA;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EACb,yCAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,YAAW,CAAA,EACjC,CAAA;AAAA,wBAGAH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2EAAA,EAEb,QAAA,EAAA;AAAA,0BAAAE,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,SAAA,EAAU,CAAA;AAAA,0BAG9BH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,4BAAAE,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU;AAAA,WAAA,EAChC,CAAA;AAAA,0BAGAH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,4BAAAE,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BAC9BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW;AAAA,WAAA,EACjC,CAAA;AAAA,0BAGAD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU;AAAA,SAAA,EAChC,CAAA;AAAA,wBAGAH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACb,QAAA,EAAA;AAAA,0BAAAE,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,0BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EACjC,CAAA;AAAA,wBAGAH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,0BAAAE,cAAA,CAACC,iBAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,0BAC/BD,cAAA,CAACC,iBAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA,GACF;AAEJ","file":"PaginationSkeleton.js","sourcesContent":["import { Skeleton } from '../../../components/skeleton';\nimport { cn } from '../../../lib/utils';\n\ninterface PaginationSkeletonProps {\n className?: string;\n}\n\nexport function PaginationSkeleton({ className }: PaginationSkeletonProps) {\n return (\n <div\n className={cn(\n 'flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between',\n className,\n )}\n >\n {/* Info text skeleton - hidden on mobile, shown on desktop */}\n <div className=\"hidden lg:block\">\n <Skeleton className=\"h-5 w-48\" />\n </div>\n\n {/* Pagination controls skeleton */}\n <div className=\"flex w-full items-center justify-center gap-1 sm:gap-2 lg:flex-1 lg:gap-3\">\n {/* Previous button */}\n <Skeleton className=\"h-9 w-9\" />\n\n {/* Mobile: 3 page buttons + ellipsis */}\n <div className=\"flex items-center gap-1 sm:gap-2 lg:hidden\">\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-9\" />\n </div>\n\n {/* Desktop: More page buttons */}\n <div className=\"hidden items-center gap-3 lg:flex\">\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-9\" />\n <Skeleton className=\"h-9 w-10\" />\n </div>\n\n {/* Next button */}\n <Skeleton className=\"h-9 w-9\" />\n </div>\n\n {/* Mobile: Page size selector skeleton */}\n <div className=\"flex items-center justify-end gap-1 lg:hidden\">\n <Skeleton className=\"h-5 w-32\" />\n <Skeleton className=\"h-5 w-12\" />\n </div>\n\n {/* Desktop: Page size selector skeleton */}\n <div className=\"hidden shrink-0 items-center gap-1 lg:flex\">\n <Skeleton className=\"h-5 w-32\" />\n <Skeleton className=\"h-5 w-12\" />\n </div>\n </div>\n );\n}\n"]}
@@ -1,49 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { Skeleton } from '../../../components/skeleton';
3
- import { cn } from '../../../lib/utils';
4
-
5
- function PaginationSkeleton({ className }) {
6
- return /* @__PURE__ */ jsxs(
7
- "div",
8
- {
9
- className: cn(
10
- "flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",
11
- className
12
- ),
13
- children: [
14
- /* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-48" }) }),
15
- /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-center gap-1 sm:gap-2 lg:flex-1 lg:gap-3", children: [
16
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9" }),
17
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 sm:gap-2 lg:hidden", children: [
18
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
19
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
20
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
21
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9" })
22
- ] }),
23
- /* @__PURE__ */ jsxs("div", { className: "hidden items-center gap-3 lg:flex", children: [
24
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
25
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
26
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
27
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
28
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" }),
29
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9" }),
30
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-10" })
31
- ] }),
32
- /* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9" })
33
- ] }),
34
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end gap-1 lg:hidden", children: [
35
- /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-32" }),
36
- /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-12" })
37
- ] }),
38
- /* @__PURE__ */ jsxs("div", { className: "hidden shrink-0 items-center gap-1 lg:flex", children: [
39
- /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-32" }),
40
- /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-12" })
41
- ] })
42
- ]
43
- }
44
- );
45
- }
46
-
47
- export { PaginationSkeleton };
48
- //# sourceMappingURL=PaginationSkeleton.mjs.map
49
- //# sourceMappingURL=PaginationSkeleton.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/pagination/PaginationSkeleton.tsx"],"names":[],"mappings":";;;;AAOO,SAAS,kBAAA,CAAmB,EAAE,SAAA,EAAU,EAA4B;AACzE,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oEAAA;AAAA,QACA;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EACb,8BAAC,QAAA,EAAA,EAAS,SAAA,EAAU,YAAW,CAAA,EACjC,CAAA;AAAA,wBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2EAAA,EAEb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,SAAA,EAAU,CAAA;AAAA,0BAG9B,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU;AAAA,WAAA,EAChC,CAAA;AAAA,0BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,4BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BAC9B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW;AAAA,WAAA,EACjC,CAAA;AAAA,0BAGA,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU;AAAA,SAAA,EAChC,CAAA;AAAA,wBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,0BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EACjC,CAAA;AAAA,wBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,0BAC/B,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA,GACF;AAEJ","file":"PaginationSkeleton.mjs","sourcesContent":["import { Skeleton } from '../../../components/skeleton';\nimport { cn } from '../../../lib/utils';\n\ninterface PaginationSkeletonProps {\n className?: string;\n}\n\nexport function PaginationSkeleton({ className }: PaginationSkeletonProps) {\n return (\n <div\n className={cn(\n 'flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between',\n className,\n )}\n >\n {/* Info text skeleton - hidden on mobile, shown on desktop */}\n <div className=\"hidden lg:block\">\n <Skeleton className=\"h-5 w-48\" />\n </div>\n\n {/* Pagination controls skeleton */}\n <div className=\"flex w-full items-center justify-center gap-1 sm:gap-2 lg:flex-1 lg:gap-3\">\n {/* Previous button */}\n <Skeleton className=\"h-9 w-9\" />\n\n {/* Mobile: 3 page buttons + ellipsis */}\n <div className=\"flex items-center gap-1 sm:gap-2 lg:hidden\">\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-9\" />\n </div>\n\n {/* Desktop: More page buttons */}\n <div className=\"hidden items-center gap-3 lg:flex\">\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-10\" />\n <Skeleton className=\"h-9 w-9\" />\n <Skeleton className=\"h-9 w-10\" />\n </div>\n\n {/* Next button */}\n <Skeleton className=\"h-9 w-9\" />\n </div>\n\n {/* Mobile: Page size selector skeleton */}\n <div className=\"flex items-center justify-end gap-1 lg:hidden\">\n <Skeleton className=\"h-5 w-32\" />\n <Skeleton className=\"h-5 w-12\" />\n </div>\n\n {/* Desktop: Page size selector skeleton */}\n <div className=\"hidden shrink-0 items-center gap-1 lg:flex\">\n <Skeleton className=\"h-5 w-32\" />\n <Skeleton className=\"h-5 w-12\" />\n </div>\n </div>\n );\n}\n"]}
@@ -1,235 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var lucideReact = require('lucide-react');
5
- var react = require('react');
6
- var button = require('../../../components/button');
7
- var pagination = require('../../../components/pagination');
8
- var utils = require('../../../lib/utils');
9
- var select = require('../select');
10
- var usePagination = require('./usePagination');
11
- var PaginationSkeleton = require('./PaginationSkeleton');
12
-
13
- const Pagination = ({
14
- current = 1,
15
- pageSize = 20,
16
- total = 0,
17
- onChange,
18
- loading,
19
- className,
20
- showInfo = true,
21
- showPageSizeSelector = true
22
- }) => {
23
- const [paginationOptions, setPaginationOptions] = react.useState([
24
- { value: "10", name: "10" },
25
- { value: "20", name: "20" },
26
- { value: "30", name: "30" },
27
- { value: "50", name: "50" },
28
- { value: "100", name: "100" }
29
- ]);
30
- react.useEffect(() => {
31
- setPaginationOptions((prev) => {
32
- const options = [...prev];
33
- const pageSizeStr = String(pageSize);
34
- const pageSizeExists = options.some((option) => option.value === pageSizeStr);
35
- if (!pageSizeExists && pageSize) {
36
- options.unshift({ value: pageSizeStr, name: pageSizeStr });
37
- }
38
- options.sort((a, b) => Number(a.value) - Number(b.value));
39
- return options;
40
- });
41
- }, [pageSize]);
42
- const totalPages = Math.ceil(total / pageSize);
43
- const onPageChange = (page) => {
44
- if (typeof page === "number" && page >= 1 && page <= totalPages && page !== current) {
45
- onChange?.(page, pageSize);
46
- }
47
- };
48
- const onNext = () => {
49
- if (current < totalPages) {
50
- onPageChange(current + 1);
51
- }
52
- };
53
- const onPrevious = () => {
54
- if (current > 1) {
55
- onPageChange(current - 1);
56
- }
57
- };
58
- const range = (start, end) => {
59
- const length = end - start + 1;
60
- return Array.from({ length }, (_, idx) => idx + start);
61
- };
62
- const startIndex = (current - 1) * pageSize + 1;
63
- const endIndex = Math.min(current * pageSize, total);
64
- const paginationRange = usePagination.usePagination({
65
- current,
66
- total,
67
- pageSize,
68
- siblingCount: 1
69
- // Bạn có thể tùy chỉnh số trang hiển thị bên cạnh trang hiện tại
70
- });
71
- const mobilePaginationRange = react.useMemo(() => {
72
- if (totalPages <= 3) {
73
- return range(1, totalPages);
74
- }
75
- return [1, 2, 3, usePagination.DOTS];
76
- }, [totalPages]);
77
- if (loading) {
78
- return /* @__PURE__ */ jsxRuntime.jsx(PaginationSkeleton.PaginationSkeleton, { className });
79
- }
80
- return /* @__PURE__ */ jsxRuntime.jsxs(
81
- "div",
82
- {
83
- className: utils.cn(
84
- "flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between",
85
- className
86
- ),
87
- children: [
88
- showInfo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-t14m text-muted-foreground hidden text-nowrap lg:block", children: total > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
89
- "Hi\u1EC3n th\u1ECB ",
90
- startIndex,
91
- " - ",
92
- endIndex,
93
- " trong t\u1ED5ng s\u1ED1 ",
94
- total
95
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: "Hi\u1EC3n th\u1ECB 0 - 0 trong t\u1ED5ng s\u1ED1 0" }) }),
96
- /* @__PURE__ */ jsxRuntime.jsx(pagination.Pagination, { className: "w-full justify-center lg:flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(pagination.PaginationContent, { className: "gap-1 sm:gap-2 lg:gap-3", children: [
97
- /* @__PURE__ */ jsxRuntime.jsx(
98
- button.Button,
99
- {
100
- variant: "outline",
101
- size: "sm",
102
- className: "px-2",
103
- onClick: (e) => {
104
- e.preventDefault();
105
- onPrevious();
106
- },
107
- disabled: current <= 1,
108
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, { className: "text-ink-400s !size-4 sm:!size-6" })
109
- }
110
- ),
111
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "contents lg:hidden", children: mobilePaginationRange.map((pageNumber, index) => {
112
- if (pageNumber === usePagination.DOTS) {
113
- return /* @__PURE__ */ jsxRuntime.jsx(
114
- pagination.PaginationItem,
115
- {
116
- className: "text-t14m text-foreground",
117
- children: /* @__PURE__ */ jsxRuntime.jsx(pagination.PaginationEllipsis, {})
118
- },
119
- `dots-mobile-${index}`
120
- );
121
- }
122
- return /* @__PURE__ */ jsxRuntime.jsx(pagination.PaginationItem, { className: "text-t14m text-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(
123
- button.Button,
124
- {
125
- size: "sm",
126
- variant: pageNumber === current ? "soft-info" : "ghost",
127
- className: utils.cn("text-t14m !min-w-[40px] border-none"),
128
- onClick: (e) => {
129
- e.preventDefault();
130
- onPageChange(pageNumber);
131
- },
132
- loading: pageNumber === current ? loading : false,
133
- children: !(loading && pageNumber === current) && pageNumber
134
- }
135
- ) }, pageNumber);
136
- }) }),
137
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:contents", children: paginationRange.map((pageNumber, index) => {
138
- if (pageNumber === usePagination.DOTS) {
139
- return /* @__PURE__ */ jsxRuntime.jsx(
140
- pagination.PaginationItem,
141
- {
142
- className: "text-t14m text-foreground",
143
- children: /* @__PURE__ */ jsxRuntime.jsx(pagination.PaginationEllipsis, {})
144
- },
145
- `dots-desktop-${index}`
146
- );
147
- }
148
- return /* @__PURE__ */ jsxRuntime.jsx(pagination.PaginationItem, { className: "text-t14m text-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(
149
- button.Button,
150
- {
151
- size: "sm",
152
- variant: pageNumber === current ? "soft-info" : "ghost",
153
- className: utils.cn("text-t14m !min-w-[40px] border-none"),
154
- onClick: (e) => {
155
- e.preventDefault();
156
- onPageChange(pageNumber);
157
- },
158
- loading: pageNumber === current ? loading : false,
159
- children: !(loading && pageNumber === current) && pageNumber
160
- }
161
- ) }, `desktop-${pageNumber}`);
162
- }) }),
163
- /* @__PURE__ */ jsxRuntime.jsx(
164
- button.Button,
165
- {
166
- variant: "outline",
167
- size: "sm",
168
- className: "px-2",
169
- onClick: (e) => {
170
- e.preventDefault();
171
- onNext();
172
- },
173
- disabled: current >= totalPages,
174
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "text-ink-400s !size-4 sm:!size-6" })
175
- }
176
- )
177
- ] }) }),
178
- showPageSizeSelector && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-1 lg:hidden", children: [
179
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-t14m text-nowrap", children: "S\u1ED1 m\u1EE5c m\u1ED7i trang:" }),
180
- /* @__PURE__ */ jsxRuntime.jsxs(
181
- select.Select,
182
- {
183
- value: [{ value: pageSize.toString(), name: pageSize.toString() }],
184
- onValueChange: (values) => {
185
- values.length > 0 && onChange?.(1, parseInt(values?.[0]?.value ?? "0", 10));
186
- },
187
- children: [
188
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectTrigger, { isCustomMode: true, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex cursor-pointer items-center gap-1", children: [
189
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-blue-500", children: pageSize }),
190
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 text-blue-500" })
191
- ] }) }),
192
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectBody, { align: "end", children: /* @__PURE__ */ jsxRuntime.jsx(select.SelectContentAutoLayout, { options: paginationOptions }) })
193
- ]
194
- }
195
- )
196
- ] }),
197
- showPageSizeSelector && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden shrink-0 items-center gap-1 lg:flex", children: [
198
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-t14m text-nowrap", children: "S\u1ED1 m\u1EE5c m\u1ED7i trang:" }),
199
- /* @__PURE__ */ jsxRuntime.jsxs(
200
- select.Select,
201
- {
202
- value: [{ value: pageSize.toString(), name: pageSize.toString() }],
203
- onValueChange: (values) => {
204
- values.length > 0 && onChange?.(1, parseInt(values?.[0]?.value ?? "0", 10));
205
- },
206
- children: [
207
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectTrigger, { isCustomMode: true, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex cursor-pointer items-center gap-1", children: [
208
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-blue-500", children: pageSize }),
209
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 text-blue-500" })
210
- ] }) }),
211
- /* @__PURE__ */ jsxRuntime.jsx(select.SelectBody, { align: "end", side: "bottom", className: "ml-0 min-w-[120px]", children: /* @__PURE__ */ jsxRuntime.jsx(select.SelectContentAutoLayout, { options: paginationOptions }) })
212
- ]
213
- }
214
- )
215
- ] })
216
- ]
217
- }
218
- );
219
- };
220
-
221
- Object.defineProperty(exports, "DOTS", {
222
- enumerable: true,
223
- get: function () { return usePagination.DOTS; }
224
- });
225
- Object.defineProperty(exports, "usePagination", {
226
- enumerable: true,
227
- get: function () { return usePagination.usePagination; }
228
- });
229
- Object.defineProperty(exports, "PaginationSkeleton", {
230
- enumerable: true,
231
- get: function () { return PaginationSkeleton.PaginationSkeleton; }
232
- });
233
- exports.Pagination = Pagination;
234
- //# sourceMappingURL=index.js.map
235
- //# sourceMappingURL=index.js.map