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,325 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var button = require('../../../components/button');
6
- var inputOtp = require('../../../components/input-otp');
7
- var spinner = require('../../../components/spinner');
8
- var helpers = require('../../../lib/helpers');
9
- var countdown = require('../../display/countdown');
10
- var alertDialogWrapper = require('../alert-dialog-wrapper');
11
- var reducer = require('./reducer');
12
- var types = require('./types');
13
- var utils = require('./utils');
14
- var lib = require('@/lib');
15
-
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n.default = e;
31
- return Object.freeze(n);
32
- }
33
-
34
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
35
-
36
- const OtpDialog = ({
37
- trigger,
38
- triggerAsChild,
39
- triggerClassName,
40
- open,
41
- onOpenChange,
42
- defaultOpen,
43
- title = "Nh\u1EADp m\xE3 OTP",
44
- description,
45
- size = "lg",
46
- hasCloseButton,
47
- contentClassName,
48
- phoneNumber,
49
- needToMaskPhoneNumber = true,
50
- countdownDuration = 300,
51
- onVerifyOtp,
52
- onResendOtp,
53
- isVerifying = false,
54
- isResending = false,
55
- error,
56
- onSuccess,
57
- onError,
58
- verifyButtonText = "X\xE1c nh\u1EADn",
59
- resendButtonText = "G\u1EEDi l\u1EA1i OTP",
60
- phonePromptText = "OTP \u0111\u01B0\u1EE3c g\u1EEDi qua s\u1ED1 \u0111i\u1EC7n tho\u1EA1i",
61
- customInstructions,
62
- otpLength = 6,
63
- otpPattern = "^[0-9]+$",
64
- autoFocus = true,
65
- autoSubmit = true,
66
- // Default to auto-submit
67
- trackingNameView,
68
- trackingNameClose,
69
- trackingData,
70
- trackingIndex
71
- }) => {
72
- const [state, dispatch] = React__namespace.useReducer(reducer.otpDialogReducer, reducer.initialOtpDialogState);
73
- const inputRef = React__namespace.useRef(null);
74
- const isVerifyingRef = React__namespace.useRef(false);
75
- const displayError = error || state.internalError;
76
- const maskedPhone = React__namespace.useMemo(
77
- () => needToMaskPhoneNumber ? utils.maskPhoneNumber(phoneNumber) : phoneNumber,
78
- [phoneNumber, needToMaskPhoneNumber]
79
- );
80
- React__namespace.useEffect(() => {
81
- if (open) {
82
- dispatch({ type: types.OtpDialogActionType.RESET });
83
- isVerifyingRef.current = false;
84
- if (autoFocus) {
85
- let rafId;
86
- let timerId;
87
- rafId = requestAnimationFrame(() => {
88
- timerId = setTimeout(() => {
89
- const otpInput = document.querySelector("[data-input-otp]");
90
- if (otpInput instanceof HTMLInputElement) {
91
- otpInput.focus();
92
- }
93
- }, 150);
94
- });
95
- return () => {
96
- cancelAnimationFrame(rafId);
97
- clearTimeout(timerId);
98
- };
99
- }
100
- }
101
- }, [open, autoFocus]);
102
- const handleResendOtp = async () => {
103
- if (!onResendOtp) return;
104
- try {
105
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: null });
106
- await onResendOtp();
107
- dispatch({ type: types.OtpDialogActionType.SET_COUNTDOWN_ACTIVE, payload: true });
108
- dispatch({ type: types.OtpDialogActionType.INCREMENT_COUNTDOWN_KEY });
109
- dispatch({ type: types.OtpDialogActionType.SET_OTP, payload: "" });
110
- } catch (err) {
111
- const errorMessage = utils.normalizeErrorMessage(err) || "G\u1EEDi l\u1EA1i OTP th\u1EA5t b\u1EA1i";
112
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: errorMessage });
113
- if (onError) {
114
- onError(errorMessage);
115
- }
116
- }
117
- };
118
- const handleVerifyOtp = React__namespace.useCallback(
119
- async (otpValue) => {
120
- const otpToVerify = otpValue || state.otp;
121
- if (isVerifyingRef.current || state.isVerifying) {
122
- console.warn("[OTP] Verification already in progress, skipping");
123
- return;
124
- }
125
- if (otpToVerify.length !== otpLength) {
126
- const errorMessage = `Vui l\xF2ng nh\u1EADp \u0111\u1EE7 ${otpLength} s\u1ED1 OTP`;
127
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: errorMessage });
128
- if (onError) {
129
- onError(errorMessage);
130
- }
131
- return;
132
- }
133
- try {
134
- isVerifyingRef.current = true;
135
- dispatch({ type: types.OtpDialogActionType.SET_IS_VERIFYING, payload: true });
136
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: null });
137
- console.log("[OTP] Starting verification with value:", otpToVerify);
138
- const result = await onVerifyOtp(otpToVerify);
139
- console.log("[OTP] Verification result:", result);
140
- if (result?.success === true) {
141
- if (onSuccess) {
142
- await onSuccess();
143
- }
144
- if (onOpenChange) {
145
- onOpenChange(false);
146
- }
147
- } else {
148
- const errorMessage = result?.error || "M\xE3 OTP kh\xF4ng \u0111\xFAng ho\u1EB7c h\u1EBFt h\u1EA1n";
149
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: errorMessage });
150
- dispatch({ type: types.OtpDialogActionType.SET_OTP, payload: "" });
151
- if (onError) {
152
- onError(errorMessage);
153
- }
154
- setTimeout(() => {
155
- const otpInput = document.querySelector("[data-input-otp]");
156
- if (otpInput instanceof HTMLInputElement) {
157
- otpInput.focus();
158
- }
159
- }, 100);
160
- }
161
- } catch (err) {
162
- console.error("[OTP] Verification error:", err);
163
- const errorMessage = utils.normalizeErrorMessage(err);
164
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: errorMessage });
165
- dispatch({ type: types.OtpDialogActionType.SET_OTP, payload: "" });
166
- if (onError) {
167
- onError(errorMessage);
168
- }
169
- setTimeout(() => {
170
- const otpInput = document.querySelector("[data-input-otp]");
171
- if (otpInput instanceof HTMLInputElement) {
172
- otpInput.focus();
173
- }
174
- }, 100);
175
- } finally {
176
- console.log("[OTP] Verification complete, resetting flags");
177
- isVerifyingRef.current = false;
178
- dispatch({ type: types.OtpDialogActionType.SET_IS_VERIFYING, payload: false });
179
- }
180
- },
181
- // Include state.otp to ensure fresh value is captured in closure
182
- // Even though we prefer passed otpValue, state.otp is used as fallback
183
- [otpLength, onVerifyOtp, onSuccess, onOpenChange, onError, state.otp]
184
- );
185
- const handleCountdownComplete = () => {
186
- dispatch({ type: types.OtpDialogActionType.SET_COUNTDOWN_ACTIVE, payload: false });
187
- };
188
- const debouncedAutoSubmitRef = React__namespace.useRef(
189
- helpers.debounce(async (otpValue) => {
190
- if (isVerifyingRef.current) {
191
- console.warn("[OTP] Skipping auto-submit, verification in progress");
192
- return;
193
- }
194
- console.log("[OTP] Auto-submitting OTP:", otpValue);
195
- }, 300)
196
- );
197
- React__namespace.useEffect(() => {
198
- if (!open) {
199
- debouncedAutoSubmitRef.current.cancel();
200
- }
201
- return () => {
202
- debouncedAutoSubmitRef.current.cancel();
203
- };
204
- }, [open]);
205
- const handleOtpChange = (value) => {
206
- if (state.isVerifying || isResending) {
207
- console.warn("[OTP] Input locked during verification/resend");
208
- return;
209
- }
210
- console.log("[OTP] Value changed:", value, "Length:", value.length);
211
- dispatch({ type: types.OtpDialogActionType.SET_OTP, payload: value });
212
- dispatch({ type: types.OtpDialogActionType.SET_ERROR, payload: null });
213
- if (autoSubmit && value.length === otpLength) {
214
- console.log("[OTP] Auto-submit triggered for complete OTP");
215
- debouncedAutoSubmitRef.current(value).then(() => {
216
- return handleVerifyOtp(value);
217
- }).catch((err) => {
218
- console.error("[OTP] Auto-submit error:", err);
219
- });
220
- }
221
- };
222
- const renderCountdownComp = React__namespace.useCallback(() => {
223
- return /* @__PURE__ */ jsxRuntime.jsx(
224
- countdown.Countdown,
225
- {
226
- duration: countdownDuration,
227
- className: "text-primary",
228
- active: state.isCountdownActive,
229
- onComplete: handleCountdownComplete,
230
- formatTime: (minutes, seconds) => `(${minutes}:${seconds.toString().padStart(2, "0")})`
231
- },
232
- state.countdownKey
233
- );
234
- }, [countdownDuration, state.isCountdownActive, state.countdownKey]);
235
- return /* @__PURE__ */ jsxRuntime.jsx(
236
- alertDialogWrapper.AlertDialogWrapper,
237
- {
238
- trigger,
239
- triggerAsChild,
240
- triggerClassName,
241
- open,
242
- onOpenChange,
243
- defaultOpen,
244
- title,
245
- description,
246
- hasCloseButton,
247
- contentClassName,
248
- showDefaultActions: false,
249
- size,
250
- autoHeight: true,
251
- childrenClassName: "h-full p-4 pt-0",
252
- showFooter: !autoSubmit,
253
- trackingNameView,
254
- trackingNameClose,
255
- trackingData,
256
- trackingIndex,
257
- footerContent: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full flex-col gap-3", children: /* @__PURE__ */ jsxRuntime.jsx(
258
- button.Button,
259
- {
260
- onClick: () => handleVerifyOtp(),
261
- disabled: state.otp.length !== otpLength || isVerifying,
262
- loading: isVerifying,
263
- className: "w-full",
264
- children: verifyButtonText
265
- }
266
- ) }),
267
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-4", children: [
268
- phoneNumber && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-ink-500s font-medium", children: [
269
- phonePromptText,
270
- " ",
271
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: maskedPhone })
272
- ] }) }),
273
- customInstructions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center", children: customInstructions }),
274
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
275
- inputOtp.InputOTP,
276
- {
277
- ref: inputRef,
278
- maxLength: otpLength,
279
- value: state.otp,
280
- onChange: handleOtpChange,
281
- pattern: otpPattern,
282
- error: !!displayError,
283
- disabled: state.isVerifying || isResending,
284
- children: /* @__PURE__ */ jsxRuntime.jsx(inputOtp.InputOTPGroup, { children: Array.from({ length: otpLength }, (_, index) => /* @__PURE__ */ jsxRuntime.jsx(inputOtp.InputOTPSlot, { index }, index)) })
285
- }
286
- ) }),
287
- displayError && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-red-500", children: displayError }) }),
288
- onResendOtp && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-ink-400s flex items-center justify-center gap-1", children: [
289
- state.isVerifying && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
290
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u0110ang x\xE1c minh" }),
291
- /* @__PURE__ */ jsxRuntime.jsx(spinner.Spinner, { size: "sm" })
292
- ] }),
293
- /* @__PURE__ */ jsxRuntime.jsxs(
294
- "div",
295
- {
296
- className: lib.cn({
297
- hidden: !state.isCountdownActive || state.isVerifying
298
- }),
299
- children: [
300
- resendButtonText,
301
- " ",
302
- renderCountdownComp()
303
- ]
304
- }
305
- ),
306
- !state.isVerifying && !state.isCountdownActive && /* @__PURE__ */ jsxRuntime.jsx(
307
- button.Button,
308
- {
309
- variant: "plain",
310
- size: "sm",
311
- onClick: handleResendOtp,
312
- disabled: isResending,
313
- loading: isResending,
314
- children: resendButtonText
315
- }
316
- )
317
- ] })
318
- ] })
319
- }
320
- );
321
- };
322
-
323
- exports.OtpDialog = OtpDialog;
324
- //# sourceMappingURL=otp-dialog.js.map
325
- //# sourceMappingURL=otp-dialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/common/interactive/otp-dialog/otp-dialog.tsx"],"names":["React","otpDialogReducer","initialOtpDialogState","maskPhoneNumber","OtpDialogActionType","normalizeErrorMessage","debounce","jsx","Countdown","AlertDialogWrapper","Button","jsxs","InputOTP","InputOTPGroup","InputOTPSlot","Fragment","Spinner","cn"],"mappings":"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","file":"otp-dialog.js","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,303 +0,0 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { Button } from '../../../components/button';
4
- import { InputOTP, InputOTPGroup, InputOTPSlot } from '../../../components/input-otp';
5
- import { Spinner } from '../../../components/spinner';
6
- import { debounce } from '../../../lib/helpers';
7
- import { Countdown } from '../../display/countdown';
8
- import { AlertDialogWrapper } from '../alert-dialog-wrapper';
9
- import { otpDialogReducer, initialOtpDialogState } from './reducer';
10
- import { OtpDialogActionType } from './types';
11
- import { maskPhoneNumber, normalizeErrorMessage } from './utils';
12
- import { cn } from '@/lib';
13
-
14
- const OtpDialog = ({
15
- trigger,
16
- triggerAsChild,
17
- triggerClassName,
18
- open,
19
- onOpenChange,
20
- defaultOpen,
21
- title = "Nh\u1EADp m\xE3 OTP",
22
- description,
23
- size = "lg",
24
- hasCloseButton,
25
- contentClassName,
26
- phoneNumber,
27
- needToMaskPhoneNumber = true,
28
- countdownDuration = 300,
29
- onVerifyOtp,
30
- onResendOtp,
31
- isVerifying = false,
32
- isResending = false,
33
- error,
34
- onSuccess,
35
- onError,
36
- verifyButtonText = "X\xE1c nh\u1EADn",
37
- resendButtonText = "G\u1EEDi l\u1EA1i OTP",
38
- phonePromptText = "OTP \u0111\u01B0\u1EE3c g\u1EEDi qua s\u1ED1 \u0111i\u1EC7n tho\u1EA1i",
39
- customInstructions,
40
- otpLength = 6,
41
- otpPattern = "^[0-9]+$",
42
- autoFocus = true,
43
- autoSubmit = true,
44
- // Default to auto-submit
45
- trackingNameView,
46
- trackingNameClose,
47
- trackingData,
48
- trackingIndex
49
- }) => {
50
- const [state, dispatch] = React.useReducer(otpDialogReducer, initialOtpDialogState);
51
- const inputRef = React.useRef(null);
52
- const isVerifyingRef = React.useRef(false);
53
- const displayError = error || state.internalError;
54
- const maskedPhone = React.useMemo(
55
- () => needToMaskPhoneNumber ? maskPhoneNumber(phoneNumber) : phoneNumber,
56
- [phoneNumber, needToMaskPhoneNumber]
57
- );
58
- React.useEffect(() => {
59
- if (open) {
60
- dispatch({ type: OtpDialogActionType.RESET });
61
- isVerifyingRef.current = false;
62
- if (autoFocus) {
63
- let rafId;
64
- let timerId;
65
- rafId = requestAnimationFrame(() => {
66
- timerId = setTimeout(() => {
67
- const otpInput = document.querySelector("[data-input-otp]");
68
- if (otpInput instanceof HTMLInputElement) {
69
- otpInput.focus();
70
- }
71
- }, 150);
72
- });
73
- return () => {
74
- cancelAnimationFrame(rafId);
75
- clearTimeout(timerId);
76
- };
77
- }
78
- }
79
- }, [open, autoFocus]);
80
- const handleResendOtp = async () => {
81
- if (!onResendOtp) return;
82
- try {
83
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: null });
84
- await onResendOtp();
85
- dispatch({ type: OtpDialogActionType.SET_COUNTDOWN_ACTIVE, payload: true });
86
- dispatch({ type: OtpDialogActionType.INCREMENT_COUNTDOWN_KEY });
87
- dispatch({ type: OtpDialogActionType.SET_OTP, payload: "" });
88
- } catch (err) {
89
- const errorMessage = normalizeErrorMessage(err) || "G\u1EEDi l\u1EA1i OTP th\u1EA5t b\u1EA1i";
90
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });
91
- if (onError) {
92
- onError(errorMessage);
93
- }
94
- }
95
- };
96
- const handleVerifyOtp = React.useCallback(
97
- async (otpValue) => {
98
- const otpToVerify = otpValue || state.otp;
99
- if (isVerifyingRef.current || state.isVerifying) {
100
- console.warn("[OTP] Verification already in progress, skipping");
101
- return;
102
- }
103
- if (otpToVerify.length !== otpLength) {
104
- const errorMessage = `Vui l\xF2ng nh\u1EADp \u0111\u1EE7 ${otpLength} s\u1ED1 OTP`;
105
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });
106
- if (onError) {
107
- onError(errorMessage);
108
- }
109
- return;
110
- }
111
- try {
112
- isVerifyingRef.current = true;
113
- dispatch({ type: OtpDialogActionType.SET_IS_VERIFYING, payload: true });
114
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: null });
115
- console.log("[OTP] Starting verification with value:", otpToVerify);
116
- const result = await onVerifyOtp(otpToVerify);
117
- console.log("[OTP] Verification result:", result);
118
- if (result?.success === true) {
119
- if (onSuccess) {
120
- await onSuccess();
121
- }
122
- if (onOpenChange) {
123
- onOpenChange(false);
124
- }
125
- } else {
126
- const errorMessage = result?.error || "M\xE3 OTP kh\xF4ng \u0111\xFAng ho\u1EB7c h\u1EBFt h\u1EA1n";
127
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });
128
- dispatch({ type: OtpDialogActionType.SET_OTP, payload: "" });
129
- if (onError) {
130
- onError(errorMessage);
131
- }
132
- setTimeout(() => {
133
- const otpInput = document.querySelector("[data-input-otp]");
134
- if (otpInput instanceof HTMLInputElement) {
135
- otpInput.focus();
136
- }
137
- }, 100);
138
- }
139
- } catch (err) {
140
- console.error("[OTP] Verification error:", err);
141
- const errorMessage = normalizeErrorMessage(err);
142
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: errorMessage });
143
- dispatch({ type: OtpDialogActionType.SET_OTP, payload: "" });
144
- if (onError) {
145
- onError(errorMessage);
146
- }
147
- setTimeout(() => {
148
- const otpInput = document.querySelector("[data-input-otp]");
149
- if (otpInput instanceof HTMLInputElement) {
150
- otpInput.focus();
151
- }
152
- }, 100);
153
- } finally {
154
- console.log("[OTP] Verification complete, resetting flags");
155
- isVerifyingRef.current = false;
156
- dispatch({ type: OtpDialogActionType.SET_IS_VERIFYING, payload: false });
157
- }
158
- },
159
- // Include state.otp to ensure fresh value is captured in closure
160
- // Even though we prefer passed otpValue, state.otp is used as fallback
161
- [otpLength, onVerifyOtp, onSuccess, onOpenChange, onError, state.otp]
162
- );
163
- const handleCountdownComplete = () => {
164
- dispatch({ type: OtpDialogActionType.SET_COUNTDOWN_ACTIVE, payload: false });
165
- };
166
- const debouncedAutoSubmitRef = React.useRef(
167
- debounce(async (otpValue) => {
168
- if (isVerifyingRef.current) {
169
- console.warn("[OTP] Skipping auto-submit, verification in progress");
170
- return;
171
- }
172
- console.log("[OTP] Auto-submitting OTP:", otpValue);
173
- }, 300)
174
- );
175
- React.useEffect(() => {
176
- if (!open) {
177
- debouncedAutoSubmitRef.current.cancel();
178
- }
179
- return () => {
180
- debouncedAutoSubmitRef.current.cancel();
181
- };
182
- }, [open]);
183
- const handleOtpChange = (value) => {
184
- if (state.isVerifying || isResending) {
185
- console.warn("[OTP] Input locked during verification/resend");
186
- return;
187
- }
188
- console.log("[OTP] Value changed:", value, "Length:", value.length);
189
- dispatch({ type: OtpDialogActionType.SET_OTP, payload: value });
190
- dispatch({ type: OtpDialogActionType.SET_ERROR, payload: null });
191
- if (autoSubmit && value.length === otpLength) {
192
- console.log("[OTP] Auto-submit triggered for complete OTP");
193
- debouncedAutoSubmitRef.current(value).then(() => {
194
- return handleVerifyOtp(value);
195
- }).catch((err) => {
196
- console.error("[OTP] Auto-submit error:", err);
197
- });
198
- }
199
- };
200
- const renderCountdownComp = React.useCallback(() => {
201
- return /* @__PURE__ */ jsx(
202
- Countdown,
203
- {
204
- duration: countdownDuration,
205
- className: "text-primary",
206
- active: state.isCountdownActive,
207
- onComplete: handleCountdownComplete,
208
- formatTime: (minutes, seconds) => `(${minutes}:${seconds.toString().padStart(2, "0")})`
209
- },
210
- state.countdownKey
211
- );
212
- }, [countdownDuration, state.isCountdownActive, state.countdownKey]);
213
- return /* @__PURE__ */ jsx(
214
- AlertDialogWrapper,
215
- {
216
- trigger,
217
- triggerAsChild,
218
- triggerClassName,
219
- open,
220
- onOpenChange,
221
- defaultOpen,
222
- title,
223
- description,
224
- hasCloseButton,
225
- contentClassName,
226
- showDefaultActions: false,
227
- size,
228
- autoHeight: true,
229
- childrenClassName: "h-full p-4 pt-0",
230
- showFooter: !autoSubmit,
231
- trackingNameView,
232
- trackingNameClose,
233
- trackingData,
234
- trackingIndex,
235
- footerContent: /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col gap-3", children: /* @__PURE__ */ jsx(
236
- Button,
237
- {
238
- onClick: () => handleVerifyOtp(),
239
- disabled: state.otp.length !== otpLength || isVerifying,
240
- loading: isVerifying,
241
- className: "w-full",
242
- children: verifyButtonText
243
- }
244
- ) }),
245
- children: /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-4", children: [
246
- phoneNumber && /* @__PURE__ */ jsx("div", { className: "text-center", children: /* @__PURE__ */ jsxs("p", { className: "text-ink-500s font-medium", children: [
247
- phonePromptText,
248
- " ",
249
- /* @__PURE__ */ jsx("span", { className: "font-medium", children: maskedPhone })
250
- ] }) }),
251
- customInstructions && /* @__PURE__ */ jsx("div", { className: "text-center", children: customInstructions }),
252
- /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(
253
- InputOTP,
254
- {
255
- ref: inputRef,
256
- maxLength: otpLength,
257
- value: state.otp,
258
- onChange: handleOtpChange,
259
- pattern: otpPattern,
260
- error: !!displayError,
261
- disabled: state.isVerifying || isResending,
262
- children: /* @__PURE__ */ jsx(InputOTPGroup, { children: Array.from({ length: otpLength }, (_, index) => /* @__PURE__ */ jsx(InputOTPSlot, { index }, index)) })
263
- }
264
- ) }),
265
- displayError && /* @__PURE__ */ jsx("div", { className: "text-center", children: /* @__PURE__ */ jsx("p", { className: "text-red-500", children: displayError }) }),
266
- onResendOtp && /* @__PURE__ */ jsxs("div", { className: "text-ink-400s flex items-center justify-center gap-1", children: [
267
- state.isVerifying && /* @__PURE__ */ jsxs(Fragment, { children: [
268
- /* @__PURE__ */ jsx("span", { children: "\u0110ang x\xE1c minh" }),
269
- /* @__PURE__ */ jsx(Spinner, { size: "sm" })
270
- ] }),
271
- /* @__PURE__ */ jsxs(
272
- "div",
273
- {
274
- className: cn({
275
- hidden: !state.isCountdownActive || state.isVerifying
276
- }),
277
- children: [
278
- resendButtonText,
279
- " ",
280
- renderCountdownComp()
281
- ]
282
- }
283
- ),
284
- !state.isVerifying && !state.isCountdownActive && /* @__PURE__ */ jsx(
285
- Button,
286
- {
287
- variant: "plain",
288
- size: "sm",
289
- onClick: handleResendOtp,
290
- disabled: isResending,
291
- loading: isResending,
292
- children: resendButtonText
293
- }
294
- )
295
- ] })
296
- ] })
297
- }
298
- );
299
- };
300
-
301
- export { OtpDialog };
302
- //# sourceMappingURL=otp-dialog.mjs.map
303
- //# sourceMappingURL=otp-dialog.mjs.map