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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme.ts","../src/lib/utils.ts","../src/components/accordion.tsx","../src/components/alert.tsx","../src/lib/types.ts","../src/providers/DeviceSizeWatcher/useDeviceSizeStore.tsx","../src/providers/DeviceSizeWatcher/index.tsx","../src/providers/UISystemProvider.tsx","../src/components/spinner.tsx","../src/components/button.tsx","../src/hooks/useDialogTracking.ts","../src/components/alert-dialog.tsx","../src/components/aspect-ratio.tsx","../src/components/avatar.tsx","../src/components/badge.tsx","../src/components/breadcrumb.tsx","../src/components/calendar.tsx","../src/components/card.tsx","../src/components/carousel.tsx","../src/components/chart.tsx","../src/components/checkbox.tsx","../src/components/popover.tsx","../src/components/sheet.tsx","../src/hooks/useDevice.ts","../src/lib/helpers.ts","../src/components/input.tsx","../src/components/scroll-area.tsx","../src/components/dialog.tsx","../src/components/input-otp.tsx","../src/lib/formatCurrency.ts","../src/components/tooltip.tsx","../src/common/interactive/pressable.tsx","../src/components/skeleton.tsx","../src/components/separator.tsx","../src/components/command.tsx","../src/components/pagination.tsx","../src/components/table.tsx","../src/components/chip.tsx","../src/components/collapsible.tsx","../src/components/context-menu.tsx","../src/components/drawer.tsx","../src/components/dropdown-menu.tsx","../src/components/label.tsx","../src/components/form.tsx","../src/components/hover-card.tsx","../src/components/lottie.tsx","../src/components/menubar.tsx","../src/components/navigation-menu.tsx","../src/components/progress.tsx","../src/components/radio-group.tsx","../src/components/resizable.tsx","../src/components/responsive-popover.tsx","../src/components/sidebar.tsx","../src/components/slider.tsx","../src/components/sonner.tsx","../src/components/stepper.tsx","../src/components/switch.tsx","../src/components/tabs.tsx","../src/components/textarea.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/hooks/useCopyToClipboard.ts","../src/hooks/useIsMounted.ts","../src/hooks/usePathname.ts"],"names":["React","React2","jsx","React3","Theme","useEffect","jsxs","cva","React5","React6","className","children","React7","React8","React9","React10","Slot","React11","currentYear","ChevronRight","props","React12","React13","api","ChevronLeft","React14","config","React15","React16","React17","X","isNaN","useRef","useMemo","useCallback","React18","value","parts","integerPart","decimalPart","React19","DialogPrimitive","React20","React21","numStr","ReadingConfig","doReadNumber","InvalidFormatError","InvalidNumberError","Tooltip","React22","React23","React24","Fragment","React25","React26","CommandPrimitive","React27","MoreHorizontal","React28","CollapsibleTrigger","CollapsibleContent","React30","DrawerPrimitive","React31","React32","Check","Circle","Label","React33","React34","React35","React37","React38","ChevronDown","React39","RadioGroup","React40","React41","open","e","React43","Sonner","React44","CheckCircleIcon16","React45","React46","motion","React47","React48","React49","useState"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Design System\n * Định nghĩa các tokens cho hệ thống thiết kế\n */\n\nconst baseFontSizes = {\n // Typography classes theo design system mới\n // Format: T{size}SB (Semi bold / 500), T{size}M (Medium / 500), T{size} (Regular / 400)\n\n // T56 (56px font size, 72px line height) - tracking -1%\n // Regular = 400, Semibold = 500\n t56sb: ['56px', { lineHeight: '72px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t56m: ['56px', { lineHeight: '72px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t56: ['56px', { lineHeight: '72px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T48 (48px font size, 64px line height) - tracking -1%\n t48sb: ['48px', { lineHeight: '64px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t48m: ['48px', { lineHeight: '64px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t48: ['48px', { lineHeight: '64px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T36 (36px font size, 44px line height) - tracking -1%\n t36sb: ['36px', { lineHeight: '44px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t36m: ['36px', { lineHeight: '44px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t36: ['36px', { lineHeight: '44px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T32 (32px font size, 40px line height) - tracking -1%\n t32sb: ['32px', { lineHeight: '40px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t32m: ['32px', { lineHeight: '40px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t32: ['32px', { lineHeight: '40px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T24 (24px font size, 32px line height) - tracking -1%\n t24sb: ['24px', { lineHeight: '32px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t24m: ['24px', { lineHeight: '32px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t24: ['24px', { lineHeight: '32px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T20 (20px font size, 28px line height) - tracking -1%\n t20sb: ['20px', { lineHeight: '28px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t20m: ['20px', { lineHeight: '28px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t20: ['20px', { lineHeight: '28px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T18 (18px font size, 28px line height) - tracking -1%\n // From T12 to T18: Regular = 400, Medium = 400, Semibold = 500\n t18sb: ['18px', { lineHeight: '28px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t18m: ['18px', { lineHeight: '28px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t18: ['18px', { lineHeight: '28px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T16 (16px font size, 24px line height) - tracking -1%\n t16sb: ['16px', { lineHeight: '24px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t16m: ['16px', { lineHeight: '24px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t16: ['16px', { lineHeight: '24px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T14 (14px font size, 20px line height) - tracking -1%\n t14sb: ['14px', { lineHeight: '20px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t14m: ['14px', { lineHeight: '20px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t14: ['14px', { lineHeight: '20px', fontWeight: '400', letterSpacing: '-0.01em' }],\n\n // T12 (12px font size, 16px line height) - tracking -1%\n t12sb: ['12px', { lineHeight: '16px', fontWeight: '500', letterSpacing: '-0.01em' }],\n t12m: ['12px', { lineHeight: '16px', fontWeight: '400', letterSpacing: '-0.01em' }],\n t12: ['12px', { lineHeight: '16px', fontWeight: '400', letterSpacing: '-0.01em' }],\n};\n\n// Typography\nexport const TYPOGRAPHY: any = {\n // Font sizes với line heights và font weight tương ứng\n fontSize: {\n ...baseFontSizes,\n\n // Tailwind base sizes (bảo đảm tương thích)\n xs: baseFontSizes.t12,\n sm: baseFontSizes.t14,\n base: baseFontSizes.t16,\n lg: baseFontSizes.t18,\n xl: baseFontSizes.t20,\n '2xl': baseFontSizes.t24,\n '3xl': baseFontSizes.t32,\n '4xl': baseFontSizes.t36,\n '5xl': baseFontSizes.t48,\n '6xl': baseFontSizes.t56,\n },\n\n fontWeight: {\n normal: '400',\n medium: '500',\n semibold: '500',\n bold: '500',\n },\n\n // Font families\n fontFamily: {\n sans: ['var(--font-inter)', 'Inter', 'sans-serif'],\n },\n};\n\n// Colors (converted to HSL format)\nexport const COLORS: any = {\n // Hệ thống màu cơ bản theo yêu cầu mới (HSL format)\n blue: {\n 100: '225 100% 97%', // #eff3ff\n 200: '224 100% 92%', // #d7e2ff\n 300: '223 100% 83%', // #a8c0ff\n 400: '223 90% 63%', // #4b7bf6\n 500: '223 93% 50%', // #094bf4\n 600: '223 93% 35%', // #0635ad\n 700: '223 92% 21%', // #042066\n 800: '223 100% 13%', // #001342\n },\n red: {\n 100: '3 100% 96%', // #ffeeed\n 200: '3 100% 93%', // #ffdcda\n 300: '4 100% 82%', // #ffabab\n 400: '4 93% 67%', // #f9655b\n 500: '4 79% 52%', // #e52e22\n 600: '4 84% 42%', // #f9655b\n 700: '4 89% 31%', // #f9655b\n 800: '4 88% 23%', // #f9655b\n },\n green: {\n 100: '143 69% 95%', // #e9fbf0\n 200: '145 86% 86%', // #bffad8\n 300: '144 81% 77%', // #95f4bb\n 400: '145 75% 57%', // #3fe382\n 500: '144 84% 43%', // #12ca5b\n 600: '144 80% 36%', // #3fe382\n 700: '144 86% 25%', // #3fe382\n 800: '144 84% 18%', // #3fe382\n },\n orange: {\n 100: '29 100% 95%', // #fff3e8\n 200: '29 100% 86%', // #ffdab7\n 300: '29 100% 75%', // #ffbe80\n 400: '29 100% 64%', // #ff9f46\n 500: '29 100% 55%', // #ff8718\n 600: '29 97% 40%', // #ff9f46\n 700: '29 91% 29%', // #ff9f46\n 800: '25 94% 21%', // #ff9f46\n },\n yellow: {\n 100: '50 100% 95%', // #fffdf5\n 200: '50 100% 88%', // #fff1b8\n 300: '50 100% 77%', // #ffe47a\n 400: '50 100% 67%', // #ffd83d\n 500: '50 100% 55%', // #ffd603\n 600: '47 91% 46%', // #c29b00\n 700: '43 86% 40%', // #856a00\n 800: '44 95% 25%', // #473900\n },\n purple: {\n 100: '258 100% 98%', // #f8f5ff\n 200: '259 100% 86%', // #cfb8ff\n 300: '260 100% 74%', // #a77eff\n 400: '260 100% 62%', // #7e5dff\n 500: '263 100% 51%', // #6203ff\n 600: '260 100% 38%', // #4100c2\n 700: '260 100% 26%', // #2c0085\n 800: '260 100% 14%', // #180047\n },\n cyan: {\n 100: '192 100% 98%', // #f5fdff\n 200: '189 100% 86%', // #b8f4ff\n 300: '189 100% 74%', // #7aebff\n 400: '189 100% 62%', // #3de1ff\n 500: '189 100% 50%', // #02d8ff\n 600: '189 100% 38%', // #00a4c2\n 700: '189 100% 26%', // #007084\n 800: '188 100% 14%', // #003d47\n },\n // Ink variants với opacity và solid versions (HSL format)\n // Ink variants với opacity và solid versions (HSL format)\n ink: {\n '50': '0 0% 96% / 0.04', // rgba(0, 0, 0, 0.04)\n '100': '0 0% 0% / 0.08', // rgba(0, 0, 0, 0.08)\n '200': '0 0% 0% / 0.12', // rgba(0, 0, 0, 0.12)\n '300': '0 0% 0% / 0.35', // rgba(0, 0, 0, 0.35)\n '400': '0 0% 0% / 0.55', // rgba(0, 0, 0, 0.55)\n '500': '0 0% 0%', // #000000\n '50s': '0 0% 96%', // #f4f4f4\n '100s': '0 0% 92%', // #eaeaea\n '200s': '0 0% 87%', // #dfdfe7 (corrected)\n '300s': '0 0% 62%', // #bbbbbb\n '400s': '0 0% 44%', // #6f6f6f\n '500s': '0 0% 0%', // #000000\n },\n white: {\n '100': '0 0% 100% / 0.05', // rgba(255, 255, 255, 0.05)\n '200': '0 0% 100% / 0.1', // rgba(255, 255, 255, 0.1)\n '300': '0 0% 100% / 0.3', // rgba(255, 255, 255, 0.3)\n '400': '0 0% 100% / 0.5', // rgba(255, 255, 255, 0.5)\n '500': '0 0% 100%', // #FFFFFF\n '500s': '0 0% 100%', // #FFFFFF\n DEFAULT: '0 0% 100%', // #FFFFFF\n },\n black: {\n DEFAULT: '0 0% 0%', // #000000\n },\n\n // Màu trạng thái (HSL format)\n primary: {\n DEFAULT: '223 93% 50%', // #094bf4 (corrected)\n foreground: '210 40% 98%', // #f8fafc\n },\n error: {\n DEFAULT: '4 79% 52%', // #e52e22 (corrected from HSL picker)\n },\n success: {\n DEFAULT: '162 83% 42%', // #12c58e (corrected)\n },\n warning: {\n DEFAULT: '27 89% 52%', // #f17818 (corrected)\n },\n info: {\n DEFAULT: '223 93% 50%', // #094bf4 (corrected)\n },\n};\n\n// Shadow và các hiệu ứng theo yêu cầu mới (đã loại bỏ tiền tố om)\nexport const EFFECTS: any = {\n boxShadow: {\n '8': '0 8px 24px -4px hsl(224 100% 17% / 0.1)', // rgba(0, 9, 87, 0.1) -> HSL\n '24': '0 24px 28px -8px hsl(224 100% 17% / 0.1)', // rgba(0, 9, 87, 0.1) -> HSL\n '32': '0 20px 48px -12px hsl(224 100% 17% / 0.1)', // rgba(0, 9, 87, 0.1) -> HSL\n },\n};\n\n// Breakpoints và containers theo yêu cầu grid system\nexport const SCREENS: any = {\n screens: {\n sm: '375px',\n md: '790px', // tablet lớn / laptop nhỏ\n lg: '1280px', // desktop chuẩn\n xl: '1440px', // desktop lớn / full HD\n // '2xl': '1652px', // wide / 2K screen\n },\n container: {\n padding: {\n DEFAULT: '16px',\n md: '20px', // tablet\n xl: '38px', // desktop\n '2xl': '20px', // wide\n },\n center: true,\n screens: {\n xs: '100%', // mobile\n md: '754px', // tablet\n xl: '1164px', // desktop\n '2xl': '1612px', // wide\n },\n },\n};\n\n// Tất cả theme\nexport const THEME: any = {\n ...TYPOGRAPHY,\n ...SCREENS,\n colors: COLORS,\n ...EFFECTS,\n};\n","import { TYPOGRAPHY } from '@/theme';\nimport { type ClassValue, clsx } from 'clsx';\n\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst customTwMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n 'font-size': Object.keys(TYPOGRAPHY.fontSize).map((key) => `text-${key}`),\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]) {\n return customTwMerge(clsx(inputs));\n}\n\nexport { clsx };\n","'use client';\n\nimport * as React from 'react';\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item ref={ref} className={cn('border-b', className)} {...props} />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm transition-all\"\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\ninterface AlertIconProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst AlertIcon = React.forwardRef<HTMLDivElement, AlertIconProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('h-[1lh] flex-shrink-0 self-start', className)} {...props} />\n ),\n);\nAlertIcon.displayName = 'AlertIcon';\n\nconst alertVariants = cva('w-full rounded-lg p-3', {\n variants: {\n variant: {\n default: 'bg-background text-foreground border-border',\n destructive: 'bg-destructive/10 border-destructive/50 text-destructive',\n success: 'bg-success/10 border-success/50 text-success',\n warning: 'border-orange-100 bg-orange-50',\n\n // Primary variants with solid colors\n 'primary-success': 'border-green-600 bg-green-600 text-white',\n 'primary-warning': 'border-orange-600 bg-orange-600 text-white',\n 'primary-info': 'border-primary bg-primary text-white',\n 'primary-error': 'border-red-600 bg-red-600 text-white',\n // Soft variants with lighter backgrounds\n 'soft-success': 'border-green-100 bg-green-50 text-green-700',\n 'soft-warning': 'border-orange-100 bg-orange-50 text-orange-700',\n 'soft-info': 'border-blue-100 bg-blue-50 text-forceground',\n 'soft-error': 'border-red-100 bg-red-50 text-red-700',\n\n // Heavy variants with solid colors\n 'heavy-success': 'border-green-600 bg-green-600 text-white',\n 'heavy-warning': 'border-orange-600 bg-orange-600 text-white',\n 'heavy-info': 'border-primary bg-primary text-white',\n 'heavy-error': 'border-red-600 bg-red-600 text-white',\n // Light variants with lighter backgrounds\n 'light-success': 'border-green-100 bg-green-50 text-green-700',\n 'light-warning': 'border-orange-100 bg-orange-50 text-orange-700',\n 'light-info': 'border-blue-100 bg-blue-50 text-forceground',\n 'light-error': 'border-red-100 bg-red-50 text-red-700',\n\n // Outline variants with borders\n 'outline-success': 'border-green-500 bg-transparent text-green-700',\n 'outline-warning': 'border-orange-500 bg-transparent text-orange-700',\n 'outline-info': 'border-blue-500 bg-transparent text-forceground',\n 'outline-error': 'border-red-500 bg-transparent text-red-700',\n },\n outlined: {\n true: 'border',\n false: 'border-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n outlined: true,\n },\n});\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, outlined, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant, outlined }), className)}\n {...props}\n />\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={cn('mb-1 font-medium tracking-tight', className)} {...props} />\n ),\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm [&_p]:leading-relaxed', className)} {...props} />\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertDescription, AlertIcon, AlertTitle };\n","import { LucideIcon } from 'lucide-react';\n\nexport const TRACKING_TYPE = {\n click: 'click',\n input: 'input',\n view: 'view',\n} as const;\n\nexport type TrackingPropsType = {\n trackingName?: string;\n trackingIndex?: number;\n trackingData?: Record<string, any>;\n blockSendTracking?: boolean;\n};\n\nexport type NavItemType = {\n title: string;\n shortTitle?: string;\n url?: string; // Optional for button-type items\n icon?: LucideIcon | React.ComponentType<React.SVGProps<SVGSVGElement>>;\n isActive?: boolean;\n badge?: string | number; // Badge text to display (e.g., \"99+\", 5)\n badgeClassName?: string; // Custom className for badge styling\n className?: string; // Custom className for responsive display (e.g., 'hidden lg:flex')\n type?: 'link' | 'button'; // Type of navigation item: 'link' for redirect, 'button' for action\n onClick?: () => void; // Click handler for button-type items\n onNavigationClick?: () => void; // Callback when navigation link is clicked\n exactMatch?: boolean; // If true, only exact URL matches will be considered active (default: false for prefix matching)\n isLogoutButton?: boolean; // If true, the item is a logout button\n items?: {\n title: string;\n url: string;\n onNavigationClick?: () => void; // Callback for sub-items\n }[];\n};\n\nexport type NavSectionType = {\n label?: string; // Section label (e.g., \"QUẢN LÝ\", \"KHÁC\"), undefined for sections without label\n items: NavItemType[];\n};\n","import { create } from 'zustand';\n\ntype State = {\n deviceSize: {\n xl: boolean;\n lg: boolean;\n md: boolean;\n };\n};\n\ntype Action = {\n setDeviceSize: (deviceSize: State['deviceSize']) => void;\n};\n\nconst useDeviceSizeStore = create<State & Action>((set, get) => ({\n deviceSize: {\n xl: false,\n lg: false,\n md: false,\n },\n setDeviceSize: (deviceSize) => {\n if (JSON.stringify(get().deviceSize) !== JSON.stringify(deviceSize))\n return set(() => {\n return { deviceSize };\n });\n },\n}));\n\nexport default useDeviceSizeStore;\n","import * as React from 'react';\nimport useDeviceSizeStore from './useDeviceSizeStore';\n\nconst mediaQueries = {\n md: '(min-width: 790px) and (max-width: 1279px)',\n lg: '(min-width: 1280px) and (max-width: 1439px)',\n xl: '(min-width: 1440px)',\n};\n\nfunction DeviceSizeWatcher() {\n const setDeviceSize = useDeviceSizeStore((state) => state.setDeviceSize);\n React.useEffect(() => {\n const handleMediaQueryChange = (\n queryName: keyof typeof mediaQueries,\n event: MediaQueryListEvent,\n ) => {\n if (event.matches) {\n setDeviceSize({\n xl: false,\n lg: false,\n md: false,\n [queryName]: true,\n });\n }\n };\n\n const cleanupFunctions = (Object.keys(mediaQueries) as Array<keyof typeof mediaQueries>).map(\n (queryName) => {\n const mediaQueryList = matchMedia(mediaQueries[queryName]);\n const listener = handleMediaQueryChange.bind(null, queryName);\n mediaQueryList.addEventListener('change', listener);\n return () => {\n mediaQueryList.removeEventListener('change', listener);\n };\n },\n );\n\n setDeviceSize({\n md: matchMedia(mediaQueries.md).matches,\n lg: matchMedia(mediaQueries.lg).matches,\n xl: matchMedia(mediaQueries.xl).matches,\n });\n\n return () => {\n cleanupFunctions.forEach((cleanup) => cleanup());\n };\n }, [setDeviceSize]);\n\n return null;\n}\n\nexport default DeviceSizeWatcher;\n","'use client';\nimport React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport DeviceSizeWatcher from './DeviceSizeWatcher';\n\n// Theme enum\nexport enum Theme {\n LIGHT = 'light',\n DARK = 'dark',\n SYSTEM = 'system',\n}\n\nexport interface ThemeColors {\n background: string;\n foreground: string;\n card: string;\n 'card-foreground': string;\n popover: string;\n 'popover-foreground': string;\n primary: string;\n 'primary-foreground': string;\n secondary: string;\n 'secondary-foreground': string;\n muted: string;\n 'muted-foreground': string;\n accent: string;\n 'accent-foreground': string;\n destructive: string;\n 'destructive-foreground': string;\n success: string;\n 'success-foreground': string;\n border: string;\n input: string;\n radius: string;\n 'chart-1': string;\n 'chart-2': string;\n 'chart-3': string;\n 'chart-4': string;\n 'chart-5': string;\n}\n\nexport interface ThemeConfig {\n light: ThemeColors;\n dark: ThemeColors;\n}\n\n// Default theme configuration\nconst defaultThemeConfig: ThemeConfig = {\n light: {\n background: '0 0% 100%',\n foreground: '0 0% 0%',\n card: '0 0% 100%',\n 'card-foreground': '0 0% 0%',\n popover: '0 0% 100%',\n 'popover-foreground': '0 0% 0%',\n primary: '223 93% 50%',\n 'primary-foreground': '0 0% 100%',\n secondary: '0 0% 100%',\n 'secondary-foreground': '223 93% 50%',\n muted: '0 0% 96%',\n 'muted-foreground': '0 0% 44%',\n accent: '225 100% 97%', // COLORS.blue['100']\n 'accent-foreground': '0 0% 0%',\n destructive: '4 79% 52%', // COLORS.red['500']\n 'destructive-foreground': '0 0% 100%',\n success: '144 84% 43%', // COLORS.green['500']\n 'success-foreground': '0 0% 100%',\n border: '0 0% 87%',\n input: '0 0% 87%',\n radius: '0.5rem',\n 'chart-1': '225 100% 97%',\n 'chart-2': '224 100% 92%',\n 'chart-3': '223 100% 83%',\n 'chart-4': '223 90% 63%',\n 'chart-5': '223 93% 50%',\n },\n dark: {\n background: '0 0% 100%',\n foreground: '0 0% 0%',\n card: '0 0% 100%',\n 'card-foreground': '0 0% 0%',\n popover: '0 0% 100%',\n 'popover-foreground': '0 0% 0%',\n primary: '223 93% 50%',\n 'primary-foreground': '0 0% 100%',\n secondary: '0 0% 100%',\n 'secondary-foreground': '223 93% 50%',\n muted: '0 0% 92%',\n 'muted-foreground': '0 0% 44%',\n accent: '225 100% 97%', // COLORS.blue['100']\n 'accent-foreground': '0 0% 0%',\n destructive: '4 79% 52%', // COLORS.red['500']\n 'destructive-foreground': '0 0% 100%',\n success: '144 84% 43%', // COLORS.green['500']\n 'success-foreground': '0 0% 100%',\n border: '0 0% 87%',\n input: '0 0% 87%',\n radius: '0.5rem',\n 'chart-1': '225 100% 97%',\n 'chart-2': '224 100% 92%',\n 'chart-3': '223 100% 83%',\n 'chart-4': '223 90% 63%',\n 'chart-5': '223 93% 50%',\n },\n};\n\n// Define the context type\ninterface UISystemContextType {\n sendTrack: (name: string, type: string, other?: Record<string, any>) => void;\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: Theme.LIGHT | Theme.DARK; // Actual theme after resolving 'system'\n themeConfig: ThemeConfig;\n systemTheme: Theme.LIGHT | Theme.DARK; // Expose system theme for components that need it\n LinkComponent?: React.ComponentType<any>; // Global Link component for navigation (supports Next.js Link, React Router Link, etc.)\n}\n\n// Create the context\nconst UISystemContext = createContext<UISystemContextType | undefined>(undefined);\n\n// Hook to use the context\nexport const useUISystemContext = () => {\n const context = useContext(UISystemContext);\n if (!context) {\n throw new Error('useUISystemContext must be used within UISystemProvider');\n }\n return context;\n};\n\n// Theme hook for easier access\nexport const useTheme = () => {\n const context = useUISystemContext();\n return {\n theme: context.theme,\n setTheme: context.setTheme,\n resolvedTheme: context.resolvedTheme,\n systemTheme: context.systemTheme,\n themeConfig: context.themeConfig,\n };\n};\n\n// Provider props\ninterface UISystemProviderProps {\n children: React.ReactNode;\n sendTrack?: (name: string, type: string, other?: Record<string, any>) => void;\n defaultTheme?: Theme;\n storageKey?: string;\n themeConfig?: Partial<ThemeConfig>;\n enableSystem?: boolean;\n disableTransitionOnChange?: boolean;\n LinkComponent?: React.ComponentType<any>; // Global Link component (e.g., Next.js Link, React Router Link)\n}\n\n// Helper function to get system theme\nconst getSystemTheme = (): Theme.LIGHT | Theme.DARK => {\n if (typeof window === 'undefined') return Theme.LIGHT;\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? Theme.DARK : Theme.LIGHT;\n};\n\n// Helper function to apply theme variables to document\nconst applyTheme = (\n theme: 'light' | 'dark',\n themeConfig: ThemeConfig,\n disableTransitions?: boolean,\n) => {\n if (typeof document === 'undefined') return;\n\n const root = document.documentElement;\n const colors = themeConfig[theme];\n\n // Disable transitions temporarily if requested\n if (disableTransitions) {\n const css = document.createElement('style');\n css.appendChild(\n document.createTextNode(\n `*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`,\n ),\n );\n document.head.appendChild(css);\n\n // Force reflow\n (() => window.getComputedStyle(document.body))();\n\n setTimeout(() => {\n document.head.removeChild(css);\n }, 1);\n }\n\n // Apply theme variables\n Object.entries(colors).forEach(([key, value]) => {\n root.style.setProperty(`--${key}`, value);\n });\n\n // Update class on html element\n root.classList.remove('light', 'dark');\n root.classList.add(theme);\n};\n\n// Provider component\nexport const UISystemProvider: React.FC<UISystemProviderProps> = ({\n children,\n sendTrack = () => {\n // Default no-op function if no sendTrack is provided\n console.warn('UISystemProvider: sendTrack function not provided');\n },\n defaultTheme = Theme.LIGHT,\n storageKey = 'ui-theme',\n themeConfig: customThemeConfig,\n enableSystem = true,\n disableTransitionOnChange = false,\n LinkComponent,\n}) => {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === 'undefined') return defaultTheme;\n try {\n return (localStorage.getItem(storageKey) as Theme) || defaultTheme;\n } catch {\n return defaultTheme;\n }\n });\n\n const [systemTheme, setSystemTheme] = useState<Theme.LIGHT | Theme.DARK>(() => getSystemTheme());\n\n // Merge custom theme config with default\n const mergedThemeConfig = useMemo(\n () => ({\n light: { ...defaultThemeConfig.light, ...customThemeConfig?.light },\n dark: { ...defaultThemeConfig.dark, ...customThemeConfig?.dark },\n }),\n [customThemeConfig],\n );\n\n // Resolved theme (handles 'system' theme)\n const resolvedTheme: Theme.LIGHT | Theme.DARK =\n theme === Theme.SYSTEM ? systemTheme : (theme as Theme.LIGHT | Theme.DARK);\n\n // Set theme function\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n try {\n localStorage.setItem(storageKey, newTheme);\n } catch {\n // Handle localStorage errors silently\n }\n };\n\n // Listen for system theme changes\n useEffect(() => {\n if (!enableSystem) return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent) => {\n setSystemTheme(e.matches ? Theme.DARK : Theme.LIGHT);\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, [enableSystem]);\n\n // Apply theme when resolved theme changes\n useEffect(() => {\n applyTheme(resolvedTheme, mergedThemeConfig, disableTransitionOnChange);\n }, [resolvedTheme, mergedThemeConfig, disableTransitionOnChange]);\n\n const contextValue = useMemo(\n () => ({\n sendTrack,\n theme,\n setTheme,\n resolvedTheme,\n systemTheme,\n themeConfig: mergedThemeConfig,\n LinkComponent: LinkComponent as React.ComponentType<any> | undefined,\n }),\n [sendTrack, theme, resolvedTheme, systemTheme, mergedThemeConfig, LinkComponent],\n );\n\n return (\n <UISystemContext.Provider value={contextValue}>\n <DeviceSizeWatcher />\n {children}\n </UISystemContext.Provider>\n );\n};\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst spinnerVariants = cva('animate-spin rounded-full border-2', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n },\n variant: {\n primary: 'border-border border-t-primary',\n white: 'border-white/30 border-t-white',\n success: 'border-success/30 border-t-success',\n warning: 'border-warning/30 border-t-warning',\n info: 'border-info/30 border-t-info',\n error: 'border-error/30 border-t-error',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'primary',\n },\n});\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant, ...props }, ref) => {\n return (\n <div className={cn(spinnerVariants({ size, variant, className }))} ref={ref} {...props} />\n );\n },\n);\nSpinner.displayName = 'Spinner';\n\nexport { Spinner, spinnerVariants };\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { Spinner } from './spinner';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-base font-medium transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:icon-muted-foreground disabled:text-muted-foreground disabled:bg-muted disabled:border-border data-[loading=true]:pointer-events-none data-[loading=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-6 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground icon-primary-foreground hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground icon-destructive-foreground hover:bg-destructive/90',\n outline: 'border border-input bg-background hover:bg-accent hover:border-accent',\n secondary:\n 'bg-secondary border border-primary text-secondary-foreground icon-secondary-foreground hover:bg-accent active:bg-accent/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground hover:icon-accent-foreground',\n link: 'text-primary icon-primary underline-offset-4 hover:underline',\n plain: 'text-primary icon-primary hover:text-primary/80 w-max h-max',\n 'plain-error': 'text-red-500 hover:text-red-500/80 w-max h-max',\n icon: 'bg-card text-foreground icon-foreground hover:bg-muted border border-border rounded-full shadow [&_svg]:size-6',\n // Primary variants with solid colors\n 'primary-success':\n 'bg-green-500 text-white icon-white hover:bg-green-600 active:bg-green-700',\n 'primary-warning':\n 'bg-yellow-500 text-white icon-white hover:bg-yellow-600 active:bg-yellow-700',\n 'primary-info': 'bg-blue-500 text-white icon-white hover:bg-primary active:bg-blue-700',\n 'primary-error': 'bg-red-500 text-white icon-white hover:bg-red-600 active:bg-red-700',\n // Soft variants with lighter backgrounds\n 'soft-success':\n 'bg-green-50 text-green-600 icon-green-600 hover:bg-green-100 active:bg-green-200 border border-green-200',\n 'soft-warning':\n 'bg-yellow-50 text-yellow-600 icon-yellow-600 hover:bg-yellow-100 active:bg-yellow-200 border border-yellow-200',\n 'soft-info':\n 'bg-blue-50 text-primary icon-primary hover:bg-blue-100 active:bg-blue-200 border border-blue-200',\n 'soft-error':\n 'bg-red-50 text-red-600 icon-red-600 hover:bg-red-100 active:bg-red-200 border border-red-200',\n\n // Primary variants with solid colors\n 'heavy-success':\n 'bg-green-500 text-white icon-white hover:bg-green-600 active:bg-green-700',\n 'heavy-warning':\n 'bg-yellow-500 text-white icon-white hover:bg-yellow-600 active:bg-yellow-700',\n 'heavy-info': 'bg-blue-500 text-white icon-white hover:bg-primary active:bg-blue-700',\n 'heavy-error': 'bg-red-500 text-white icon-white hover:bg-red-600 active:bg-red-700',\n // Soft variants with lighter backgrounds\n 'light-success':\n 'bg-green-50 text-green-600 icon-green-600 hover:bg-green-100 active:bg-green-200 border border-green-200',\n 'light-warning':\n 'bg-yellow-50 text-yellow-600 icon-yellow-600 hover:bg-yellow-100 active:bg-yellow-200 border border-yellow-200',\n 'light-info':\n 'bg-blue-50 text-primary icon-primary hover:bg-blue-100 active:bg-blue-200 border border-blue-200',\n 'light-error':\n 'bg-red-50 text-red-600 icon-red-600 hover:bg-red-100 active:bg-red-200 border border-red-200',\n\n // Outline variants with borders\n 'outline-success':\n 'border border-green-500 bg-transparent text-green-600 icon-green-600 hover:bg-green-50 active:bg-green-100',\n 'outline-warning':\n 'border border-yellow-600 bg-transparent text-yellow-600 icon-yellow-600 hover:bg-yellow-50 active:bg-yellow-100',\n 'outline-info':\n 'border border-blue-500 bg-transparent text-primary icon-primary hover:bg-blue-50 active:bg-blue-100',\n 'outline-error':\n 'border border-red-500 bg-transparent text-red-600 icon-red-600 hover:bg-red-50 active:bg-red-100',\n },\n rounded: {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n },\n size: {\n default: 'h-12 px-3 py-2',\n sm: 'h-10 px-3 py-2 [&_svg]:size-4',\n lg: 'h-14 px-3 py-2',\n icon: 'h-10 w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n rounded: 'md',\n },\n },\n);\n\ninterface TrackingData {\n [key: string]: any;\n identity?: string;\n object_name?: string; // UI button name\n}\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n TrackingPropsType,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n trackingData?: TrackingData;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n trackingData,\n trackingIndex,\n trackingName,\n blockSendTracking,\n variant,\n size,\n rounded,\n asChild = false,\n loading = false,\n children,\n onClick,\n disabled,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n\n // Determine spinner color based on button variant to match text color\n const getSpinnerVariant = ():\n | 'white'\n | 'primary'\n | 'success'\n | 'warning'\n | 'info'\n | 'error' => {\n // Primary variants: white text/spinner on colored background\n if (\n variant === 'default' ||\n variant === 'primary-success' ||\n variant === 'primary-warning' ||\n variant === 'primary-info' ||\n variant === 'primary-error'\n ) {\n return 'white';\n }\n\n // Soft variants: colored text/spinner on light background\n if (variant === 'soft-success') return 'success';\n if (variant === 'soft-warning') return 'warning';\n if (variant === 'soft-info') return 'info';\n if (variant === 'soft-error') return 'error';\n\n // Outline variants: colored text/spinner with colored border\n if (variant === 'outline-success') return 'success';\n if (variant === 'outline-warning') return 'warning';\n if (variant === 'outline-info') return 'info';\n if (variant === 'outline-error') return 'error';\n\n // Destructive variant: white text/spinner on red background\n if (variant === 'destructive') return 'white';\n\n // Default for other variants (secondary, outline, ghost)\n return 'primary';\n };\n\n const spinnerVariant = getSpinnerVariant();\n\n const { sendTrack } = useUISystemContext() || {};\n\n const onClickFn: React.MouseEventHandler<any> = (e) => {\n if (disabled || loading) {\n return;\n }\n onClick?.(e);\n\n // Only track if sendTrack exists and tracking is not blocked\n if (!sendTrack || blockSendTracking) return;\n\n const targetElm = e.target as HTMLElement;\n const buttonText = targetElm.innerText || targetElm.textContent || '';\n\n // Auto-generate trackingName based on button type if not provided\n const finalTrackingName = trackingName || `click_btn_${trackingData?.identity}`;\n\n // Prepare tracking data\n const otherData: Record<string, any> = {};\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n\n // Auto-extract object_name from button text if not provided\n const mergedTrackingData = { ...trackingData };\n if (!mergedTrackingData.object_name && buttonText) {\n mergedTrackingData.object_name = buttonText.trim();\n }\n\n // Send tracking event\n sendTrack(finalTrackingName, TRACKING_TYPE.click, {\n ...otherData,\n ...mergedTrackingData,\n });\n };\n\n const isIconElement = (element: React.ReactElement): boolean => {\n // Check if it's an SVG element directly\n if (element.type === 'svg') {\n return true;\n }\n\n // Get component name from various React wrapper types\n const getComponentName = (type: any): string => {\n if (!type) return '';\n\n // Direct function/class component\n if (type.displayName) return type.displayName;\n if (type.name) return type.name;\n\n // React.memo wrapped component\n if (type.$$typeof === Symbol.for('react.memo') && type.type) {\n return getComponentName(type.type);\n }\n\n // React.forwardRef wrapped component\n if (type.$$typeof === Symbol.for('react.forward_ref') && type.render) {\n return getComponentName(type.render);\n }\n\n return '';\n };\n\n // Check if element is a React component\n if (element.type) {\n const componentName = getComponentName(element.type);\n const lowerName = componentName.toLowerCase();\n\n // Check for icon-related component names\n if (\n lowerName.includes('icon') ||\n lowerName.includes('svg') ||\n componentName.match(/Icon\\d+$/) || // Matches Icon16, Icon24, etc.\n componentName.match(/^[A-Z][a-zA-Z]*Icon/) // Matches CheckIcon, AddIcon, etc.\n ) {\n return true;\n }\n }\n\n // Check className for icon-related classes\n if (element.props?.className && typeof element.props.className === 'string') {\n const className = element.props.className;\n if (className.includes('ic-') || className.includes('icon-')) {\n return true;\n }\n }\n\n // Check if element has SVG-related props\n if (element.props?.viewBox || element.props?.xmlns === 'http://www.w3.org/2000/svg') {\n return true;\n }\n\n return false;\n };\n\n const filterChildren = (children: React.ReactNode): React.ReactNode => {\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n // If it's an icon element, hide it completely\n if (isIconElement(child)) {\n return null;\n }\n\n // If it's a wrapper (div/span) that might contain icons, filter recursively\n if ((child.type === 'div' || child.type === 'span') && child.props?.children) {\n const filteredChildren = filterChildren(child.props.children);\n\n // If all children were filtered out, don't render the wrapper\n const hasContent = React.Children.toArray(filteredChildren).some(\n (c) => c !== null && c !== undefined,\n );\n\n if (!hasContent) {\n return null;\n }\n\n return React.cloneElement(child, {}, filteredChildren);\n }\n\n return child;\n });\n };\n\n const renderChildren = () => {\n if (!loading) return children;\n\n // When loading, filter out all icon elements but keep text content\n return filterChildren(children);\n };\n\n // Auto-set rounded to 'full' for icon size if not explicitly provided\n const finalRounded = size === 'icon' && rounded === undefined ? 'full' : rounded;\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, rounded: finalRounded, className }))}\n ref={ref}\n onClick={onClickFn}\n disabled={disabled && !loading}\n data-loading={loading}\n {...props}\n >\n {loading && <Spinner size=\"sm\" variant={spinnerVariant} />}\n {renderChildren()}\n </Comp>\n );\n },\n);\nButton.displayName = 'Button';\n\nconst buttonGroupVariants = cva('flex', {\n variants: {\n direction: {\n horizontal: 'space-x-3',\n vertical: 'space-y-2',\n },\n },\n});\n\ninterface ButtonGroupProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof buttonGroupVariants> {\n asChild?: boolean;\n}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ asChild, className, direction = 'horizontal', ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp ref={ref} className={cn(buttonGroupVariants({ direction, className }))} {...props} />\n );\n },\n);\n\nButtonGroup.displayName = 'ButtonGroup';\n\nexport { Button, ButtonGroup, buttonVariants };\n","import * as React from 'react';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { TRACKING_TYPE } from '@/lib/types';\n\ninterface UseDialogTrackingOptions {\n trackingNameView?: string;\n trackingNameClose?: string;\n trackingData?: Record<string, any>;\n trackingIndex?: number;\n enabled?: boolean;\n}\n\n/**\n * Custom hook for tracking dialog/sheet open and close events\n * Uses MutationObserver to detect when data-state attribute changes\n */\nexport function useDialogTracking(options: UseDialogTrackingOptions) {\n const {\n trackingNameView,\n trackingNameClose,\n trackingData,\n trackingIndex,\n enabled = true,\n } = options;\n\n const { sendTrack } = useUISystemContext();\n const hasTrackedViewRef = React.useRef(false);\n const observerRef = React.useRef<MutationObserver | null>(null);\n\n // Callback ref to setup observer when element is mounted\n const setupTracking = React.useCallback(\n (node: HTMLElement | null) => {\n // Cleanup previous observer\n if (observerRef.current) {\n observerRef.current.disconnect();\n observerRef.current = null;\n }\n\n // Setup new observer if node exists and tracking is enabled\n if (node && enabled && sendTrack && trackingNameView) {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-state') {\n const dataState = node.getAttribute('data-state');\n\n // Track view when dialog opens\n if (dataState === 'open' && !hasTrackedViewRef.current) {\n hasTrackedViewRef.current = true;\n const otherData: Record<string, any> = {};\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n sendTrack(trackingNameView, TRACKING_TYPE.view, {\n ...otherData,\n ...trackingData,\n });\n }\n\n // Reset tracking flag when dialog closes\n if (dataState === 'closed') {\n hasTrackedViewRef.current = false;\n }\n }\n });\n });\n\n observer.observe(node, { attributes: true });\n observerRef.current = observer;\n\n // Use requestAnimationFrame to check state after DOM has fully rendered\n // This ensures we catch dialogs that are already open when the component mounts\n requestAnimationFrame(() => {\n const currentState = node.getAttribute('data-state');\n if (currentState === 'open' && !hasTrackedViewRef.current) {\n hasTrackedViewRef.current = true;\n const otherData: Record<string, any> = {};\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n sendTrack(trackingNameView, TRACKING_TYPE.view, {\n ...otherData,\n ...trackingData,\n });\n }\n });\n }\n },\n [enabled, sendTrack, trackingNameView, trackingData, trackingIndex],\n );\n\n // Handler for close button click\n const handleCloseClick = React.useCallback(() => {\n if (enabled && sendTrack && trackingNameClose) {\n const otherData: Record<string, any> = {};\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n sendTrack(trackingNameClose, TRACKING_TYPE.click, {\n ...otherData,\n ...trackingData,\n });\n }\n }, [enabled, sendTrack, trackingNameClose, trackingData, trackingIndex]);\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n };\n }, []);\n\n return {\n setupTracking,\n handleCloseClick,\n };\n}\n","'use client';\n\nimport { buttonVariants } from '@/components/button';\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\nimport { useDialogTracking } from '@/hooks/useDialogTracking';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport { motion } from 'motion/react';\nimport * as React from 'react';\n\nconst alertDialogVariants = cva('', {\n variants: {\n size: {\n sm: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(24rem,88svw)]',\n md: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(28rem,88svw)]',\n lg: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(32rem,88svw)]',\n xl: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(36rem,88svw)]',\n '2xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(42rem,88svw)]',\n '3xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(48rem,88svw)]',\n '4xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(56rem,88svw)]',\n '5xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:min-w-[min(69rem,88svw)] lg:max-w-[min(69rem,88svw)]',\n full: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:h-[88svh] lg:w-[88svw]',\n auto: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(max-content,88svw)]',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-[50] bg-black opacity-30',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> & {\n onCloseClick?: () => void;\n hasCloseButton?: boolean;\n trackingNameView?: string; // Event name for view tracking (e.g., 'view_modal')\n trackingNameClose?: string; // Event name for close tracking (e.g., 'close_modal')\n } & Omit<TrackingPropsType, 'trackingName'> &\n VariantProps<typeof alertDialogVariants>\n>(\n (\n {\n className,\n children,\n onCloseClick,\n hasCloseButton = true,\n size,\n trackingNameView = 'view_modal',\n trackingNameClose = 'close_modal',\n trackingData,\n trackingIndex,\n ...props\n },\n ref,\n ) => {\n const [isShaking, setIsShaking] = React.useState(false);\n const { sendTrack } = useUISystemContext();\n\n // Use custom hook for tracking\n const { setupTracking, handleCloseClick: handleTrackingClose } = useDialogTracking({\n trackingNameView,\n trackingNameClose,\n trackingData,\n trackingIndex,\n enabled: !!sendTrack,\n });\n\n // Check if children already contains an AlertDialogTitle by checking displayName\n const hasTitle = React.Children.toArray(children).some(\n (child) =>\n React.isValidElement(child) &&\n (child.type === AlertDialogPrimitive.Title ||\n (child.type as any)?.displayName === 'AlertDialogTitle'),\n );\n\n // Handle overlay click to trigger shake animation\n const handleOverlayClick = React.useCallback((e: React.MouseEvent) => {\n // Only trigger if clicking the content itself (not children)\n if (e.target === e.currentTarget) {\n setIsShaking(true);\n setTimeout(() => setIsShaking(false), 500);\n }\n }, []);\n\n const handleClose = React.useCallback(\n (e: React.MouseEvent) => {\n handleTrackingClose();\n onCloseClick?.();\n },\n [handleTrackingClose, onCloseClick],\n );\n\n // Merge setupTracking ref with external ref\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n setupTracking(node);\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [setupTracking, ref],\n );\n\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay onClick={handleOverlayClick} />\n <AlertDialogPrimitive.Content\n ref={mergedRef}\n className={cn(\n 'fixed left-[50%] top-[50%] z-[50] w-full translate-x-[-50%] translate-y-[-50%] focus:outline-none',\n alertDialogVariants({ size }),\n )}\n {...props}\n >\n <motion.div\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 border-ink-100s relative grid w-full gap-4 border shadow-lg duration-200 md:rounded-lg',\n className,\n )}\n animate={\n isShaking\n ? {\n x: [0, -30, 30, -30, 30, -30, 30, 0],\n }\n : { x: 0 }\n }\n transition={{\n duration: 0.5,\n ease: [0.36, 0.07, 0.19, 0.97],\n }}\n >\n {/* Close button positioned relative to motion.div */}\n {hasCloseButton && (\n <AlertDialogPrimitive.Cancel\n className=\"data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute right-4 top-4 z-10 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none\"\n onClick={handleClose}\n >\n <X className=\"mt-[-2px] h-6 w-6\" />\n <span className=\"sr-only\">Close</span>\n </AlertDialogPrimitive.Cancel>\n )}\n {/* Auto-inject hidden title if none provided for accessibility */}\n {!hasTitle && (\n <AlertDialogPrimitive.Title className=\"sr-only\">Dialog</AlertDialogPrimitive.Title>\n )}\n {children}\n </motion.div>\n </AlertDialogPrimitive.Content>\n </AlertDialogPortal>\n );\n },\n);\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'bg-background flex min-h-[56px] flex-col border-b p-4 text-left lg:rounded-t-lg',\n className,\n )}\n {...props}\n />\n);\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'bg-background flex gap-4 border-t px-4 py-4 md:justify-end lg:rounded-b-lg',\n className,\n )}\n {...props}\n />\n);\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-medium leading-none tracking-tight', className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm font-normal', className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(buttonVariants({ variant: 'outline' }), 'mt-0', className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n alertDialogVariants,\n type VariantProps,\n};\n","'use client';\n\nimport * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';\n\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n","'use client';\n\nimport * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport { cn } from '@/lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'bg-muted flex h-full w-full items-center justify-center rounded-full',\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center border font-medium transition-colors focus:outline-none',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground',\n secondary: 'border-transparent bg-ink-50s text-ink-400s',\n destructive: 'border-transparent bg-destructive text-destructive-foreground',\n outline: 'text-foreground',\n success: 'border-transparent bg-green-100 text-green-600',\n warning: 'border-transparent bg-orange-100 text-orange-600',\n // Primary variants with solid colors\n 'primary-success': 'border-transparent bg-green-600 text-white',\n 'primary-warning': 'border-transparent bg-orange-600 text-white',\n 'primary-info': 'border-transparent bg-blue-600 text-white',\n 'primary-error': 'border-transparent bg-red-600 text-white',\n // Soft variants with lighter backgrounds\n 'soft-success': 'border-transparent bg-green-100 text-green-600',\n 'soft-warning': 'border-transparent bg-orange-100 text-orange-600',\n 'soft-info': 'border-transparent bg-blue-100 text-blue-600',\n 'soft-error': 'border-transparent bg-red-100 text-red-600',\n\n // Heavy variants with solid colors\n 'heavy-success': 'border-transparent bg-green-600 text-white',\n 'heavy-warning': 'border-transparent bg-orange-600 text-white',\n 'heavy-info': 'border-transparent bg-blue-600 text-white',\n 'heavy-error': 'border-transparent bg-red-600 text-white',\n // Light variants with lighter backgrounds\n 'light-success': 'border-transparent bg-green-100 text-green-600',\n 'light-warning': 'border-transparent bg-orange-100 text-orange-600',\n 'light-info': 'border-transparent bg-blue-100 text-blue-600',\n 'light-error': 'border-transparent bg-red-100 text-red-600',\n\n // Outline variants with borders\n 'outline-success': 'border-green-100 bg-transparent text-green-600',\n 'outline-warning': 'border-orange-100 bg-transparent text-orange-600',\n 'outline-info': 'border-blue-100 bg-transparent text-blue-600',\n 'outline-error': 'border-red-100 bg-transparent text-red-600',\n },\n rounded: {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n },\n size: {\n sm: 'px-2 py-0.5 text-xs',\n default: 'px-2 py-0.5 text-xs',\n lg: 'px-2 py-1 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n rounded: 'sm',\n size: 'default',\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, rounded, size, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant, rounded, size }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { Slot } from '@radix-ui/react-slot';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'> & {\n separator?: React.ReactNode;\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />);\nBreadcrumb.displayName = 'Breadcrumb';\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<'ol'>>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'text-muted-foreground flex flex-wrap items-center gap-1.5 break-words text-sm sm:gap-2.5',\n className,\n )}\n {...props}\n />\n ),\n);\nBreadcrumbList.displayName = 'BreadcrumbList';\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<'li'>>(\n ({ className, ...props }, ref) => (\n <li ref={ref} className={cn('inline-flex items-center gap-1.5', className)} {...props} />\n ),\n);\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean;\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n className={cn('hover:text-foreground transition-colors', className)}\n {...props}\n />\n );\n});\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<'span'>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('text-foreground font-normal', className)}\n {...props}\n />\n ),\n);\nBreadcrumbPage.displayName = 'BreadcrumbPage';\n\nconst BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:h-3.5 [&>svg]:w-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n\nconst BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","'use client';\n\nimport { Button, buttonVariants } from '@/components/button';\nimport { cn } from '@/lib/utils';\nimport { differenceInCalendarDays, format } from 'date-fns';\nimport { vi, type Locale } from 'date-fns/locale';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport * as React from 'react';\nimport {\n DayPicker,\n labelNext,\n labelPrevious,\n useDayPicker,\n type DayPickerProps,\n} from 'react-day-picker';\n\nexport type CalendarProps = DayPickerProps & {\n /**\n * In the year view, the number of years to display at once.\n * @default 12\n */\n yearRange?: number;\n\n /**\n * Wether to show the year switcher in the caption.\n * @default true\n */\n showYearSwitcher?: boolean;\n\n /**\n * Locale for date formatting and labels.\n * @default vi (Vietnamese)\n */\n locale?: Locale;\n\n /**\n * Callback when the nav view changes (days, months, years)\n */\n onNavViewChange?: (navView: 'days' | 'months' | 'years') => void;\n\n monthsClassName?: string;\n monthCaptionClassName?: string;\n weekdaysClassName?: string;\n weekdayClassName?: string;\n monthClassName?: string;\n captionClassName?: string;\n captionLabelClassName?: string;\n buttonNextClassName?: string;\n buttonPreviousClassName?: string;\n navClassName?: string;\n monthGridClassName?: string;\n weekClassName?: string;\n dayClassName?: string;\n dayButtonClassName?: string;\n rangeStartClassName?: string;\n rangeEndClassName?: string;\n selectedClassName?: string;\n todayClassName?: string;\n outsideClassName?: string;\n disabledClassName?: string;\n rangeMiddleClassName?: string;\n hiddenClassName?: string;\n};\n\ntype NavView = 'days' | 'months' | 'years';\n\n/**\n * A custom calendar component built on top of react-day-picker.\n * @param props The props for the calendar.\n * @default yearRange 12\n * @returns\n */\nfunction Calendar({\n className,\n showOutsideDays = true,\n showYearSwitcher = true,\n yearRange = 12,\n numberOfMonths,\n components,\n locale = vi,\n onNavViewChange,\n ...props\n}: CalendarProps) {\n const { onNextClick, onPrevClick, startMonth, endMonth } = props;\n\n const [navView, setNavView] = React.useState<NavView>('days');\n const [currentCalendarMonth, setCurrentCalendarMonth] = React.useState<Date>(() => {\n // Initialize to current month or defaultMonth if provided\n return props.defaultMonth || new Date();\n });\n\n // Notify parent when navView changes\n React.useEffect(() => {\n onNavViewChange?.(navView);\n }, [navView, onNavViewChange]);\n const [displayYears, setDisplayYears] = React.useState<{\n from: number;\n to: number;\n }>(\n React.useMemo(() => {\n // Use startMonth and endMonth to constrain year range if available\n if (startMonth && endMonth) {\n const minYear = startMonth.getFullYear();\n const maxYear = endMonth.getFullYear();\n\n // Center the display around current year, but constrain to valid range\n const currentYear = new Date().getFullYear();\n const targetCenterYear = Math.max(minYear, Math.min(maxYear, currentYear));\n\n let from = targetCenterYear - Math.floor(yearRange / 2 - 1);\n let to = targetCenterYear + Math.ceil(yearRange / 2);\n\n // Ensure we don't go beyond the allowed range\n from = Math.max(from, minYear);\n to = Math.min(to, maxYear);\n\n // If the range is smaller than yearRange, adjust to show exactly the valid range\n if (to - from + 1 < yearRange) {\n from = minYear;\n to = maxYear;\n }\n\n return { from, to };\n }\n\n // Fallback to original behavior if no constraints\n const currentYear = new Date().getFullYear();\n return {\n from: currentYear - Math.floor(yearRange / 2 - 1),\n to: currentYear + Math.ceil(yearRange / 2),\n };\n }, [yearRange, startMonth, endMonth]),\n );\n\n const columnsDisplayed = navView === 'days' ? numberOfMonths : 1;\n const isSingleMode = !numberOfMonths || numberOfMonths === 1;\n\n const _monthsClassName = cn(\n 'relative flex',\n isSingleMode ? 'w-full' : 'ml-[-4px] w-max',\n props.monthsClassName,\n );\n const _monthCaptionClassName = cn(\n 'relative mx-16 flex h-7 items-center justify-center', // mx-16 for 4 buttons (<<, <, >, >>)\n props.monthCaptionClassName,\n );\n const _weekdaysClassName = cn(\n 'flex flex-row gap-[2px]',\n isSingleMode ? 'w-full' : '',\n props.weekdaysClassName,\n );\n const _weekdayClassName = cn(\n isSingleMode ? 'w-11 text-center' : 'w-8',\n 'text-sm font-medium text-muted-foreground',\n props.weekdayClassName,\n );\n const _monthClassName = cn('w-full', props.monthClassName);\n const _captionClassName = cn(\n 'relative flex items-center justify-center pt-1',\n props.captionClassName,\n );\n const _captionLabelClassName = cn('truncate text-sm font-medium', props.captionLabelClassName);\n const buttonNavClassName = buttonVariants({\n variant: 'outline',\n className: 'absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n });\n const _buttonNextClassName = cn(buttonNavClassName, 'right-0', props.buttonNextClassName);\n const _buttonPreviousClassName = cn(buttonNavClassName, 'left-0', props.buttonPreviousClassName);\n const _navClassName = cn('flex items-start', props.navClassName);\n const _monthGridClassName = cn(\n 'mt-4',\n isSingleMode ? 'w-full' : 'mx-auto',\n props.monthGridClassName,\n );\n const _weekClassName = cn(\n 'mt-1 flex items-start gap-[2px]',\n isSingleMode ? 'w-full' : 'w-max',\n props.weekClassName,\n );\n const _dayClassName = cn(\n 'flex items-center justify-center p-0 text-sm',\n isSingleMode ? 'w-11 h-11' : 'size-8 flex-1',\n props.dayClassName,\n );\n const _dayButtonClassName = cn(\n buttonVariants({ variant: 'ghost' }),\n 'rounded-full p-0 font-medium transition-none aria-selected:opacity-100',\n isSingleMode ? 'w-11 h-11' : 'size-8',\n props.dayButtonClassName,\n );\n const buttonRangeClassName =\n 'bg-primary/10 [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground';\n const _rangeStartClassName = cn(\n buttonRangeClassName,\n 'day-range-start rounded-s-full',\n props.rangeStartClassName,\n );\n const _rangeEndClassName = cn(\n buttonRangeClassName,\n 'day-range-end rounded-e-full',\n props.rangeEndClassName,\n );\n const _rangeMiddleClassName = cn(\n 'bg-primary/10 !text-primary !font-medium [&>button]:bg-transparent [&>button]:!text-primary [&>button]:!font-medium [&>button]:hover:bg-transparent [&>button]:hover:!text-foreground',\n props.rangeMiddleClassName,\n );\n const _selectedClassName = cn(\n '[&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:!bg-primary [&>button]:hover:!text-primary-foreground',\n props.selectedClassName,\n );\n const _todayClassName = cn(\n '[&>button]:bg-primary/10 [&>button]:text-accent-foreground [&>button]:hover:bg-accent [&>button]:hover:text-accent-foreground',\n props.todayClassName,\n );\n const _outsideClassName = cn(\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-primary/10/50 aria-selected:text-muted-foreground aria-selected:opacity-30',\n props.outsideClassName,\n );\n const _disabledClassName = cn('text-muted-foreground opacity-50', props.disabledClassName);\n const _hiddenClassName = cn('invisible flex-1', props.hiddenClassName);\n\n // Custom formatters để hiển thị tháng và thứ dưới dạng ngắn gọn\n const formatters = {\n formatCaption: (date: Date) => {\n return `Tháng ${format(date, 'MM yyyy')}`;\n },\n formatWeekdayName: (date: Date) => {\n const dayNames = ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'];\n return dayNames[date.getDay()] || 'CN';\n },\n };\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n locale={locale}\n formatters={formatters}\n className={cn('p-0', className)}\n style={\n navView === 'years'\n ? { width: '274px' }\n : navView === 'months'\n ? { width: '312px' }\n : isSingleMode\n ? { width: '340px' }\n : {\n width: 252 * (columnsDisplayed ?? 1) + 'px',\n }\n }\n classNames={{\n months: _monthsClassName,\n month_caption: _monthCaptionClassName,\n weekdays: _weekdaysClassName,\n weekday: _weekdayClassName,\n month: _monthClassName,\n caption: _captionClassName,\n caption_label: _captionLabelClassName,\n button_next: _buttonNextClassName,\n button_previous: _buttonPreviousClassName,\n nav: _navClassName,\n month_grid: _monthGridClassName,\n week: _weekClassName,\n day: _dayClassName,\n day_button: _dayButtonClassName,\n range_start: _rangeStartClassName,\n range_middle: _rangeMiddleClassName,\n range_end: _rangeEndClassName,\n selected: _selectedClassName,\n today: _todayClassName,\n outside: _outsideClassName,\n disabled: _disabledClassName,\n hidden: _hiddenClassName,\n }}\n components={{\n Chevron: ({ orientation }) => {\n const Icon = orientation === 'left' ? ChevronLeft : ChevronRight;\n return <Icon className=\"h-4 w-4\" />;\n },\n Nav: ({ className }) => (\n <Nav\n className={className}\n displayYears={displayYears}\n navView={navView}\n setDisplayYears={setDisplayYears}\n startMonth={startMonth}\n endMonth={endMonth}\n onPrevClick={onPrevClick}\n onNextClick={onNextClick}\n currentCalendarMonth={currentCalendarMonth}\n setCurrentCalendarMonth={setCurrentCalendarMonth}\n />\n ),\n CaptionLabel: (props) => (\n <CaptionLabel\n showYearSwitcher={showYearSwitcher}\n navView={navView}\n setNavView={setNavView}\n displayYears={displayYears}\n currentCalendarMonth={currentCalendarMonth}\n {...props}\n />\n ),\n MonthGrid: ({ className, children, ...props }) => (\n <MonthGrid\n children={children}\n className={className}\n displayYears={displayYears}\n startMonth={startMonth}\n endMonth={endMonth}\n navView={navView}\n setNavView={setNavView}\n currentCalendarMonth={currentCalendarMonth}\n setCurrentCalendarMonth={setCurrentCalendarMonth}\n {...props}\n />\n ),\n ...components,\n }}\n numberOfMonths={columnsDisplayed}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nfunction Nav({\n className,\n navView,\n startMonth,\n endMonth,\n displayYears,\n setDisplayYears,\n onPrevClick,\n onNextClick,\n currentCalendarMonth,\n setCurrentCalendarMonth,\n}: {\n className?: string;\n navView: NavView;\n startMonth?: Date;\n endMonth?: Date;\n displayYears: { from: number; to: number };\n setDisplayYears: React.Dispatch<React.SetStateAction<{ from: number; to: number }>>;\n onPrevClick?: (date: Date) => void;\n onNextClick?: (date: Date) => void;\n currentCalendarMonth: Date;\n setCurrentCalendarMonth: React.Dispatch<React.SetStateAction<Date>>;\n}) {\n const { nextMonth, previousMonth, goToMonth } = useDayPicker();\n const currentDate = new Date();\n\n const isPreviousDisabled = (() => {\n if (navView === 'months') {\n return true; // Disable previous navigation in months view\n }\n if (navView === 'years') {\n return (\n (startMonth &&\n differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0) ||\n (endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0)\n );\n }\n return !previousMonth;\n })();\n\n const isNextDisabled = (() => {\n if (navView === 'months') {\n return true; // Disable next navigation in months view\n }\n if (navView === 'years') {\n return (\n (startMonth &&\n differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), startMonth) < 0) ||\n (endMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), endMonth) > 0)\n );\n }\n return !nextMonth;\n })();\n\n const handlePreviousClick = React.useCallback(() => {\n if (navView === 'months') {\n return; // Do nothing when in months view\n }\n if (navView === 'years') {\n const yearRange = displayYears.to - displayYears.from + 1;\n const newFrom = displayYears.from - yearRange;\n const newTo = displayYears.to - yearRange;\n\n // Constrain to valid range if startMonth is provided\n const minYear = startMonth?.getFullYear();\n const constrainedFrom = minYear !== undefined ? Math.max(newFrom, minYear) : newFrom;\n const constrainedTo =\n minYear !== undefined ? Math.max(newTo, minYear + yearRange - 1) : newTo;\n\n setDisplayYears({\n from: constrainedFrom,\n to: constrainedTo,\n });\n\n onPrevClick?.(new Date(constrainedFrom, 0, 1));\n return;\n }\n if (!previousMonth) return;\n setCurrentCalendarMonth(previousMonth);\n goToMonth(previousMonth);\n onPrevClick?.(previousMonth);\n }, [\n previousMonth,\n goToMonth,\n navView,\n currentDate,\n displayYears,\n setDisplayYears,\n onPrevClick,\n startMonth,\n setCurrentCalendarMonth,\n ]);\n\n const handleNextClick = React.useCallback(() => {\n if (navView === 'months') {\n return; // Do nothing when in months view\n }\n if (navView === 'years') {\n const yearRange = displayYears.to - displayYears.from + 1;\n const newFrom = displayYears.from + yearRange;\n const newTo = displayYears.to + yearRange;\n\n // Constrain to valid range if endMonth is provided\n const maxYear = endMonth?.getFullYear();\n const constrainedFrom =\n maxYear !== undefined ? Math.min(newFrom, maxYear - yearRange + 1) : newFrom;\n const constrainedTo = maxYear !== undefined ? Math.min(newTo, maxYear) : newTo;\n\n setDisplayYears({\n from: constrainedFrom,\n to: constrainedTo,\n });\n\n onNextClick?.(new Date(constrainedTo, 0, 1));\n return;\n }\n if (!nextMonth) return;\n setCurrentCalendarMonth(nextMonth);\n goToMonth(nextMonth);\n onNextClick?.(nextMonth);\n }, [\n goToMonth,\n nextMonth,\n navView,\n currentDate,\n displayYears,\n setDisplayYears,\n onNextClick,\n endMonth,\n setCurrentCalendarMonth,\n ]);\n\n // Fast navigation: Jump 2 years\n const handleFastPreviousClick = React.useCallback(() => {\n if (navView !== 'years') return;\n const yearRange = displayYears.to - displayYears.from + 1;\n const newFrom = displayYears.from - yearRange * 2;\n const newTo = displayYears.to - yearRange * 2;\n\n const minYear = startMonth?.getFullYear();\n const constrainedFrom = minYear !== undefined ? Math.max(newFrom, minYear) : newFrom;\n const constrainedTo = minYear !== undefined ? Math.max(newTo, minYear + yearRange - 1) : newTo;\n\n setDisplayYears({ from: constrainedFrom, to: constrainedTo });\n onPrevClick?.(new Date(constrainedFrom, 0, 1));\n }, [navView, displayYears, startMonth, setDisplayYears, onPrevClick]);\n\n const handleFastNextClick = React.useCallback(() => {\n if (navView !== 'years') return;\n const yearRange = displayYears.to - displayYears.from + 1;\n const newFrom = displayYears.from + yearRange * 2;\n const newTo = displayYears.to + yearRange * 2;\n\n const maxYear = endMonth?.getFullYear();\n const constrainedFrom =\n maxYear !== undefined ? Math.min(newFrom, maxYear - yearRange + 1) : newFrom;\n const constrainedTo = maxYear !== undefined ? Math.min(newTo, maxYear) : newTo;\n\n setDisplayYears({ from: constrainedFrom, to: constrainedTo });\n onNextClick?.(new Date(constrainedTo, 0, 1));\n }, [navView, displayYears, endMonth, setDisplayYears, onNextClick]);\n\n const isFastPreviousDisabled = navView !== 'years' || isPreviousDisabled;\n const isFastNextDisabled = navView !== 'years' || isNextDisabled;\n\n return (\n <nav className={cn('flex items-center justify-between', className)}>\n {/* Fast Previous (<<) - Only in years view */}\n {navView === 'years' && (\n <Button\n variant=\"outline\"\n className=\"absolute left-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100\"\n type=\"button\"\n tabIndex={isFastPreviousDisabled ? undefined : -1}\n disabled={isFastPreviousDisabled}\n aria-label=\"Go back 2 year ranges\"\n onClick={handleFastPreviousClick}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n </Button>\n )}\n\n {/* Previous (<) */}\n <Button\n variant=\"outline\"\n className={cn(\n 'absolute h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100',\n navView === 'years' ? 'left-8' : 'left-0',\n )}\n type=\"button\"\n tabIndex={isPreviousDisabled ? undefined : -1}\n disabled={isPreviousDisabled}\n aria-label={\n navView === 'years'\n ? `Go to the previous ${displayYears.to - displayYears.from + 1} years`\n : navView === 'months'\n ? 'Go to the previous year'\n : labelPrevious(previousMonth)\n }\n onClick={handlePreviousClick}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n\n {/* Next (>) */}\n <Button\n variant=\"outline\"\n className={cn(\n 'absolute h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100',\n navView === 'years' ? 'right-8' : 'right-0',\n )}\n type=\"button\"\n tabIndex={isNextDisabled ? undefined : -1}\n disabled={isNextDisabled}\n aria-label={\n navView === 'years'\n ? `Go to the next ${displayYears.to - displayYears.from + 1} years`\n : navView === 'months'\n ? 'Go to the next year'\n : labelNext(nextMonth)\n }\n onClick={handleNextClick}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n\n {/* Fast Next (>>) - Only in years view */}\n {navView === 'years' && (\n <Button\n variant=\"outline\"\n className=\"absolute right-0 h-7 w-7 bg-transparent p-0 opacity-80 hover:opacity-100\"\n type=\"button\"\n tabIndex={isFastNextDisabled ? undefined : -1}\n disabled={isFastNextDisabled}\n aria-label=\"Go forward 2 year ranges\"\n onClick={handleFastNextClick}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n </Button>\n )}\n </nav>\n );\n}\n\nfunction CaptionLabel({\n children,\n showYearSwitcher,\n navView,\n setNavView,\n displayYears,\n currentCalendarMonth,\n ...props\n}: {\n showYearSwitcher?: boolean;\n navView: NavView;\n setNavView: React.Dispatch<React.SetStateAction<NavView>>;\n displayYears: { from: number; to: number };\n currentCalendarMonth?: Date;\n} & React.HTMLAttributes<HTMLSpanElement>) {\n const currentDate = new Date();\n\n if (!showYearSwitcher) return <span {...props}>{children}</span>;\n\n const handleMonthsClick = () => {\n setNavView(navView === 'months' ? 'days' : 'months');\n };\n\n const handleYearsClick = () => {\n setNavView(navView === 'years' ? 'days' : 'years');\n };\n\n const getDisplayText = () => {\n switch (navView) {\n case 'days':\n return children;\n case 'months':\n return currentCalendarMonth?.getFullYear() || currentDate.getFullYear();\n case 'years':\n return displayYears.from + ' - ' + displayYears.to;\n default:\n return children;\n }\n };\n\n // If we're in months or years view, show back to days button\n if (navView === 'months' || navView === 'years') {\n return (\n <Button\n className=\"h-7 w-full truncate text-sm font-medium\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setNavView('days')}\n >\n {getDisplayText()}\n </Button>\n );\n }\n\n // If we're in days view, show both months and years buttons\n const childrenStr = children?.toString() || '';\n const parts = childrenStr.split(' ');\n\n // Extract month and year from format \"Tháng 06 2025\"\n const monthPart = parts.length >= 2 ? `${parts[0]} ${parts[1]}` : parts[0] || 'Tháng';\n const yearPart =\n parts.length >= 3 ? parts[2] : parts[parts.length - 1] || currentDate.getFullYear().toString();\n\n return (\n <div className=\"flex w-full gap-1\">\n <Button\n className=\"h-7 flex-1 truncate text-sm font-medium\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleMonthsClick}\n title=\"Chọn tháng\"\n >\n {monthPart}\n </Button>\n <Button\n className=\"h-7 flex-1 truncate text-sm font-medium\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleYearsClick}\n title=\"Chọn năm\"\n >\n {yearPart}\n </Button>\n </div>\n );\n}\n\nfunction MonthGrid({\n className,\n children,\n displayYears,\n startMonth,\n endMonth,\n navView,\n setNavView,\n currentCalendarMonth,\n setCurrentCalendarMonth,\n ...props\n}: {\n className?: string;\n children: React.ReactNode;\n displayYears: { from: number; to: number };\n startMonth?: Date;\n endMonth?: Date;\n navView: NavView;\n setNavView: React.Dispatch<React.SetStateAction<NavView>>;\n currentCalendarMonth: Date;\n setCurrentCalendarMonth: React.Dispatch<React.SetStateAction<Date>>;\n} & React.TableHTMLAttributes<HTMLTableElement>) {\n if (navView === 'years') {\n return (\n <YearGrid\n displayYears={displayYears}\n startMonth={startMonth}\n endMonth={endMonth}\n setNavView={setNavView}\n navView={navView}\n className={className}\n currentCalendarMonth={currentCalendarMonth}\n setCurrentCalendarMonth={setCurrentCalendarMonth}\n {...props}\n />\n );\n }\n\n if (navView === 'months') {\n return (\n <MonthsGrid\n startMonth={startMonth}\n endMonth={endMonth}\n setNavView={setNavView}\n navView={navView}\n className={className}\n currentCalendarMonth={currentCalendarMonth}\n setCurrentCalendarMonth={setCurrentCalendarMonth}\n {...props}\n />\n );\n }\n\n return (\n <table className={className} {...props}>\n {children}\n </table>\n );\n}\n\nfunction YearGrid({\n className,\n displayYears,\n startMonth,\n endMonth,\n setNavView,\n navView,\n currentCalendarMonth,\n setCurrentCalendarMonth,\n ...props\n}: {\n className?: string;\n displayYears: { from: number; to: number };\n startMonth?: Date;\n endMonth?: Date;\n setNavView: React.Dispatch<React.SetStateAction<NavView>>;\n navView: NavView;\n currentCalendarMonth: Date;\n setCurrentCalendarMonth: React.Dispatch<React.SetStateAction<Date>>;\n} & React.HTMLAttributes<HTMLDivElement>) {\n const { goToMonth, selected } = useDayPicker();\n\n return (\n <div className={cn('mx-auto grid w-full grid-cols-4 gap-1 px-3', className)} {...props}>\n {Array.from({ length: displayYears.to - displayYears.from + 1 }, (_, i) => {\n const isBefore =\n differenceInCalendarDays(new Date(displayYears.from + i, 11, 31), startMonth!) < 0;\n\n const isAfter =\n differenceInCalendarDays(new Date(displayYears.from + i, 0, 0), endMonth!) > 0;\n\n const isDisabled = isBefore || isAfter;\n\n // Check if this year matches the selected date's year\n const selectedYear = (() => {\n try {\n const selectedValue = selected as any;\n if (selectedValue && typeof selectedValue.getFullYear === 'function') {\n return selectedValue.getFullYear();\n }\n if (\n selectedValue &&\n selectedValue.from &&\n typeof selectedValue.from.getFullYear === 'function'\n ) {\n return selectedValue.from.getFullYear();\n }\n } catch (error) {\n // Continue with fallback\n }\n return null;\n })();\n\n const isSelectedYear = selectedYear === displayYears.from + i;\n\n return (\n <Button\n key={i}\n className={cn(\n 'text-foreground h-7 w-full text-sm font-medium',\n isSelectedYear && 'text-accent-foreground bg-primary/10 font-medium',\n displayYears.from + i === new Date().getFullYear() &&\n !isSelectedYear &&\n 'text-accent-foreground bg-accent/80 font-medium',\n )}\n variant=\"ghost\"\n onClick={() => {\n setNavView('days');\n\n // Preserve the current month from the calendar context\n const preservedMonth = currentCalendarMonth.getMonth();\n const newDate = new Date(displayYears.from + i, preservedMonth);\n\n setCurrentCalendarMonth(newDate);\n goToMonth(newDate);\n }}\n disabled={isDisabled}\n >\n {displayYears.from + i}\n </Button>\n );\n })}\n </div>\n );\n}\n\nfunction MonthsGrid({\n className,\n startMonth,\n endMonth,\n setNavView,\n navView,\n numberOfMonths,\n currentCalendarMonth,\n setCurrentCalendarMonth,\n ...props\n}: {\n className?: string;\n startMonth?: Date;\n endMonth?: Date;\n setNavView: React.Dispatch<React.SetStateAction<NavView>>;\n navView: NavView;\n numberOfMonths?: number;\n currentCalendarMonth: Date;\n setCurrentCalendarMonth: React.Dispatch<React.SetStateAction<Date>>;\n} & React.HTMLAttributes<HTMLDivElement>) {\n const { goToMonth, selected } = useDayPicker();\n const currentDate = new Date();\n\n // Preserve the current year from the calendar context\n const preservedYear = currentCalendarMonth.getFullYear();\n\n const currentMonth = currentDate.getMonth();\n\n // Check which month is selected\n const selectedMonth = (() => {\n try {\n const selectedValue = selected as any;\n if (selectedValue && typeof selectedValue.getMonth === 'function') {\n return selectedValue.getMonth();\n }\n if (\n selectedValue &&\n selectedValue.from &&\n typeof selectedValue.from.getMonth === 'function'\n ) {\n return selectedValue.from.getMonth();\n }\n } catch (error) {\n // Continue with fallback\n }\n return null;\n })();\n\n // Vietnamese month names\n const monthNames = [\n 'Tháng 01',\n 'Tháng 02',\n 'Tháng 03',\n 'Tháng 04',\n 'Tháng 05',\n 'Tháng 06',\n 'Tháng 07',\n 'Tháng 08',\n 'Tháng 09',\n 'Tháng 10',\n 'Tháng 11',\n 'Tháng 12',\n ];\n\n return (\n <div className={cn('mx-auto grid w-full grid-cols-3 gap-2 px-3', className)} {...props}>\n {monthNames.map((monthName, i) => {\n const monthDate = new Date(preservedYear, i, 1);\n const isBefore =\n startMonth && differenceInCalendarDays(new Date(preservedYear, i, 31), startMonth) < 0;\n const isAfter =\n endMonth && differenceInCalendarDays(new Date(preservedYear, i, 0), endMonth) > 0;\n const isDisabled = isBefore || isAfter;\n\n // Check if this is the selected month\n const isSelectedMonth = selectedMonth === i;\n\n // Check if this is the current month and year\n const isCurrentMonth = i === currentMonth && preservedYear === currentDate.getFullYear();\n\n return (\n <Button\n key={i}\n className={cn(\n 'text-foreground h-9 w-full text-sm font-medium',\n isSelectedMonth && 'text-accent-foreground bg-primary/10 font-medium',\n isCurrentMonth &&\n !isSelectedMonth &&\n 'text-accent-foreground bg-accent/80 font-medium',\n )}\n variant=\"ghost\"\n onClick={() => {\n setNavView('days');\n const newDate = new Date(preservedYear, i);\n setCurrentCalendarMonth(newDate);\n goToMonth(newDate);\n }}\n disabled={isDisabled}\n >\n {monthName}\n </Button>\n );\n })}\n </div>\n );\n}\n\nexport { Calendar };\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('bg-card text-card-foreground border-ink-100s rounded-lg border', className)} //shadow-8\n {...props}\n />\n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-4 pb-0 md:p-6 md:py-5 md:pb-0', className)}\n {...props}\n />\n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('text-xl font-medium leading-none tracking-tight', className)}\n {...props}\n />\n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-muted-foreground text-sm', className)} {...props} />\n ),\n);\nCardDescription.displayName = 'CardDescription';\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n hover?: boolean;\n}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, hover = false, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'p-4 md:p-6 md:py-5',\n hover && 'hover:shadow-24 cursor-pointer transition-all duration-200',\n className,\n )}\n {...props}\n />\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center gap-4 p-4 pt-0 md:p-6 md:py-5', className)}\n {...props}\n />\n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };\n","'use client';\n\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { WheelGesturesPlugin } from 'embla-carousel-wheel-gestures';\nimport { Button } from './button';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n axis: orientation === 'horizontal' ? 'x' : 'y',\n containScroll: 'trimSnaps',\n dragFree: false,\n watchDrag: true,\n dragThreshold: 15,\n ...opts, // Move opts to end so it can override defaults\n },\n [...(plugins || []), WheelGesturesPlugin({ forceWheelAxis: 'x' })],\n );\n\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\ninterface CarouselContentProps extends React.ComponentProps<'div'> {\n wrapperClassName?: string;\n}\n\nfunction CarouselContent({ className, wrapperClassName, ...props }: CarouselContentProps) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className={cn('overflow-hidden', wrapperClassName)}\n data-slot=\"carousel-content\"\n >\n <div\n className={cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<'div'>) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n !canScrollPrev && 'hidden',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n scrollPrev();\n }}\n {...props}\n >\n <ChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n !canScrollNext && 'hidden',\n className,\n )}\n disabled={!canScrollNext}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n scrollNext();\n }}\n {...props}\n >\n <ChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '@/lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nexport type ChartConfig = {\n // eslint-disable-next-line no-unused-vars\n [_ in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nChartContainer.displayName = 'Chart';\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([_, config]) => config.theme || config.color);\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`,\n )\n .join('\\n'),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref,\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n ref={ref}\n className={cn(\n 'border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl',\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]',\n {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n },\n )}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center',\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n },\n);\nChartTooltipContent.displayName = 'ChartTooltip';\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> &\n Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-center gap-4',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n '[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n});\nChartLegendContent.displayName = 'ChartLegend';\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","'use client';\nimport { CheckOutlinedIcon16 } from '@/icons';\nimport { cn } from '@/lib/utils';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport * as React from 'react';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\n\ninterface TrackingData {\n [key: string]: any;\n identity?: string;\n object_type?: 'checkbox';\n object_name?: string; // Tên label hiển thị trên UI của Selection\n status?: 'selected' | 'unselected'; // Nếu user chọn --> value là \"selected\" - Nếu user bỏ chọn --> value là \"unselected\"\n value?: string; // Tên value hiển thị trên UI mà user chọn\n}\n\ninterface Props\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, TrackingPropsType {\n indicator?: React.ReactNode;\n trackingData?: TrackingData;\n}\n\nconst defaultIndicator = <CheckOutlinedIcon16 className=\"ic-white h-4 w-4\" />;\n\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, Props>(\n (\n {\n className,\n indicator = defaultIndicator,\n trackingName,\n trackingData,\n trackingIndex,\n blockSendTracking,\n onCheckedChange,\n ...props\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean | 'indeterminate') => {\n // Call original handler\n onCheckedChange?.(checked);\n\n // Send tracking\n if (sendTrack && !blockSendTracking && (trackingName || trackingData?.identity)) {\n const mergedTrackingData = {\n ...trackingData,\n object_type: \"checkbox\",\n status: checked === true ? 'selected' : 'unselected',\n value: props.value,\n };\n\n const otherData: Record<string, any> = { ...mergedTrackingData };\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n\n sendTrack(trackingName || `input_${trackingData?.identity}`, TRACKING_TYPE.click, otherData);\n }\n },\n [\n onCheckedChange,\n sendTrack,\n blockSendTracking,\n trackingName,\n trackingData,\n trackingIndex,\n props.value,\n ],\n );\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'border-input data-[state=checked]:text-primary-foreground disabled:bg-muted disabled:data-[state=checked]:bg-muted data-[state=checked]:border-primary data-[state=checked]:bg-primary peer h-5 w-5 shrink-0 rounded-[2px] border-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:border-none',\n className,\n )}\n onCheckedChange={handleCheckedChange}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn('flex items-center justify-center text-current')}\n >\n {indicator}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n },\n);\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","'use client';\n\nimport * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, children, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[60] w-72 rounded-md border p-4 shadow-md outline-none',\n className,\n )}\n onOpenAutoFocus={(event) => {\n // Prevent auto focus only if there's already an input focused\n // This allows proper typing in search inputs\n const activeElement = document.activeElement;\n const isInputFocused =\n activeElement &&\n (activeElement.tagName === 'INPUT' ||\n activeElement.tagName === 'TEXTAREA' ||\n activeElement.getAttribute('contenteditable') === 'true');\n\n if (isInputFocused) {\n event.preventDefault();\n }\n }}\n onCloseAutoFocus={(event) => {\n // Prevent auto focus on mobile to avoid keyboard issues\n if (typeof window !== 'undefined' && window.innerWidth < 768) {\n event.preventDefault();\n }\n }}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","'use client';\n\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { TRACKING_TYPE } from '@/lib/types';\nimport { useDialogTracking } from '@/hooks/useDialogTracking';\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\nconst SheetClose = SheetPrimitive.Close;\n\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-[50] bg-black opacity-30',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n 'fixed z-[50] gap-4 bg-background shadow-lg transition ease-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-500 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom max-h-[85vh]',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n },\n);\n\ninterface SheetContentProps\n extends\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n sideOffset?: number;\n showOverlay?: boolean; // Control whether to show overlay\n trackingNameView?: string; // Event name for view tracking (e.g., 'view_sheet')\n trackingNameClose?: string; // Event name for close tracking (e.g., 'close_sheet')\n trackingData?: Record<string, any>;\n trackingIndex?: number;\n showCloseButton?: boolean;\n disableOutsideClick?: boolean; // Prevent closing when clicking outside\n}\n\nconst SheetBody = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = 'bottom', className, children, sideOffset, ...props }, ref) => {\n const style = React.useMemo(() => {\n const baseStyle: React.CSSProperties = {};\n\n if (sideOffset !== undefined && side === 'left') {\n baseStyle.left = `${sideOffset}px`;\n // Use exact same easing as sidebar: Tailwind's ease-out (500ms)\n baseStyle.transition = 'left 500ms cubic-bezier(0, 0, 0.2, 1)';\n }\n if (sideOffset !== undefined && side === 'right') {\n baseStyle.right = `${sideOffset}px`;\n // Use exact same easing as sidebar: Tailwind's ease-out (500ms)\n baseStyle.transition = 'right 500ms cubic-bezier(0, 0, 0.2, 1)';\n }\n\n return Object.keys(baseStyle).length > 0 ? baseStyle : undefined;\n }, [sideOffset, side]);\n\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n style={style}\n {...props}\n >\n <SheetPrimitive.Title className=\"sr-only\">Sheet</SheetPrimitive.Title>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n});\nSheetBody.displayName = 'SheetBody';\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(\n (\n {\n side = 'right',\n className,\n children,\n sideOffset,\n showOverlay = true,\n showCloseButton = true,\n trackingNameView = 'view_sheet',\n trackingNameClose = 'close_sheet',\n trackingData,\n trackingIndex,\n disableOutsideClick = false,\n onPointerDownOutside: onPointerDownOutsideProp,\n onInteractOutside: onInteractOutsideProp,\n ...props\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n\n // Use the dialog tracking hook\n const { setupTracking, handleCloseClick } = useDialogTracking({\n trackingNameView,\n trackingNameClose,\n trackingData,\n trackingIndex,\n enabled: !!sendTrack,\n });\n\n const style = React.useMemo(() => {\n const baseStyle: React.CSSProperties = {};\n\n if (sideOffset !== undefined && side === 'left') {\n baseStyle.left = `${sideOffset}px`;\n // Use exact same easing as sidebar: Tailwind's ease-out (500ms)\n baseStyle.transition = 'left 500ms cubic-bezier(0, 0, 0.2, 1)';\n }\n if (sideOffset !== undefined && side === 'right') {\n baseStyle.right = `${sideOffset}px`;\n // Use exact same easing as sidebar: Tailwind's ease-out (500ms)\n baseStyle.transition = 'right 500ms cubic-bezier(0, 0, 0.2, 1)';\n }\n\n return Object.keys(baseStyle).length > 0 ? baseStyle : undefined;\n }, [sideOffset, side]);\n\n // Merge refs: setup tracking + external ref\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n setupTracking(node);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [setupTracking, ref],\n );\n\n return (\n <SheetPortal>\n {showOverlay && <SheetOverlay />}\n <SheetPrimitive.Content\n ref={mergedRef}\n className={cn(sheetVariants({ side }), className)}\n style={style}\n onPointerDownOutside={(event) => {\n if (disableOutsideClick) {\n event.preventDefault();\n }\n // Call original handler if provided\n onPointerDownOutsideProp?.(event);\n }}\n onInteractOutside={(event) => {\n if (disableOutsideClick) {\n event.preventDefault();\n }\n // Call original handler if provided\n onInteractOutsideProp?.(event);\n }}\n {...props}\n >\n <SheetPrimitive.Title className=\"sr-only\">Sheet</SheetPrimitive.Title>\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n className=\"data-[state=open]:bg-secondary absolute right-4 top-5 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none\"\n onClick={handleCloseClick}\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n },\n);\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nconst SheetHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1.5 border-b p-4 text-center sm:text-left', className)}\n {...props}\n />\n ),\n);\nSheetHeader.displayName = 'SheetHeader';\n\nconst SheetFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n ),\n);\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn('text-foreground text-center text-lg font-medium lg:text-left', className)}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetBody,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n","import useDeviceSizeStore from '@/providers/DeviceSizeWatcher/useDeviceSizeStore';\n\nexport interface DeviceState {\n isMobile: boolean;\n isTablet: boolean;\n isDesktop: boolean;\n}\n\n// Main device hook\nexport function useDevice(): DeviceState {\n const deviceSize = useDeviceSizeStore((state) => state.deviceSize);\n return {\n isMobile: !(deviceSize.lg || deviceSize.xl || deviceSize.md),\n isTablet: deviceSize.md,\n isDesktop: deviceSize.lg || deviceSize.xl,\n };\n}\n","'use client';\n\n/**\n * Performance utility functions for throttling and debouncing\n */\n\nimport { useEffect, useMemo, useRef, useCallback, MutableRefObject } from 'react';\n\n/**\n * Debounce function for limiting function calls\n * Supports both sync and async functions\n * @param func - The function to debounce\n * @param wait - The number of milliseconds to delay\n * @returns Debounced function with cancel method\n */\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n): ((...args: Parameters<T>) => ReturnType<T> extends Promise<any> ? ReturnType<T> : void) & {\n cancel: () => void;\n} {\n let timeout: NodeJS.Timeout | undefined;\n let lastPromise: Promise<any> | undefined;\n\n const debounced = ((...args: any[]) => {\n clearTimeout(timeout);\n\n // Create a new promise that will be resolved/rejected when debounce completes\n lastPromise = new Promise((resolve, reject) => {\n timeout = setTimeout(async () => {\n try {\n const result = await func(...args);\n resolve(result);\n } catch (error) {\n reject(error);\n }\n }, wait);\n });\n\n return lastPromise;\n }) as any;\n\n debounced.cancel = () => {\n clearTimeout(timeout);\n timeout = undefined;\n lastPromise = undefined;\n };\n\n return debounced;\n}\n\n/**\n * Throttle function for limiting function calls\n * @param func - The function to throttle\n * @param wait - The number of milliseconds to wait between calls\n * @returns Throttled function\n */\nexport function throttle<T extends (...args: any[]) => void>(func: T, wait: number): T {\n let lastCallTime = 0;\n let timeoutId: NodeJS.Timeout | undefined;\n\n return ((...args: any[]) => {\n const now = Date.now();\n const remainingTime = wait - (now - lastCallTime);\n\n if (remainingTime <= 0) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n lastCallTime = now;\n func(...args);\n } else if (!timeoutId) {\n timeoutId = setTimeout(() => {\n lastCallTime = Date.now();\n timeoutId = undefined;\n func(...args);\n }, remainingTime);\n }\n }) as T;\n}\n\nexport function isEmpty(value: unknown): boolean {\n if (value == null) return true; // Handles null and undefined\n if (typeof value === 'object') {\n // Check for arrays or objects\n return Object.keys(value as object).length === 0;\n }\n if (typeof value === 'string') return value.trim().length === 0;\n if (Array.isArray(value)) return value.length === 0;\n return false;\n}\n\n/**\n * Round number to specified precision\n */\nexport function round(value: number, precision: number = 0): number {\n const multiplier = Math.pow(10, precision);\n return Math.round(value * multiplier) / multiplier;\n}\n\n/**\n * Check if value is NaN\n */\nexport function isNaN(value: unknown): boolean {\n return typeof value === 'number' && Number.isNaN(value);\n}\n\n/**\n * Check if value is a function\n */\nexport function isFunction(value: unknown): value is Function {\n return typeof value === 'function';\n}\n\n/**\n * Check if value is an array\n */\nexport function isArray(value: unknown): value is any[] {\n return Array.isArray(value);\n}\n\n/**\n * Check if value is a plain object\n */\nexport function isPlainObject(value: unknown): value is Record<string, any> {\n if (typeof value !== 'object' || value === null) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\n\n/**\n * Check if value is null or undefined\n */\nexport function isNil(value: unknown): value is null | undefined {\n return value == null;\n}\n\n/**\n * Transform object/array with custom iterator\n */\nexport function transform<T extends Record<string, any> | any[], R>(\n object: T,\n iteratee: (result: R, value: any, key: string | number, collection: T) => void,\n accumulator?: R,\n): R {\n const result = (accumulator !== undefined ? accumulator : Array.isArray(object) ? [] : {}) as R;\n\n if (Array.isArray(object)) {\n object.forEach((value, index) => {\n iteratee(result, value, index, object);\n });\n } else {\n Object.keys(object).forEach((key) => {\n iteratee(result, object[key], key, object);\n });\n }\n\n return result;\n}\n\n/**\n * Sort array by iteratee\n */\nexport function sortBy<T>(array: T[], iteratee: ((item: T) => any) | string | string[]): T[] {\n const getValueByPath = (obj: any, path: string): any => {\n return path.split('.').reduce((acc, part) => acc?.[part], obj);\n };\n\n const getValue = (item: T): any => {\n if (typeof iteratee === 'function') {\n return iteratee(item);\n }\n if (typeof iteratee === 'string') {\n return getValueByPath(item, iteratee);\n }\n if (Array.isArray(iteratee)) {\n return iteratee.map((path) => getValueByPath(item, path));\n }\n return item;\n };\n\n return [...array].sort((a, b) => {\n const aVal = getValue(a);\n const bVal = getValue(b);\n\n if (Array.isArray(aVal) && Array.isArray(bVal)) {\n for (let i = 0; i < Math.min(aVal.length, bVal.length); i++) {\n if (aVal[i] < bVal[i]) return -1;\n if (aVal[i] > bVal[i]) return 1;\n }\n return 0;\n }\n\n if (aVal < bVal) return -1;\n if (aVal > bVal) return 1;\n return 0;\n });\n}\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nexport function useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport const useResizeObserver = ({\n callbackFn,\n targetRef,\n}: {\n callbackFn: (entries: ResizeObserverEntry[]) => void;\n targetRef?: MutableRefObject<any>;\n}) => {\n const _targetRef = useRef<any>();\n\n const handleObserver = useCallback(\n (entries: ResizeObserverEntry[]) => {\n callbackFn(entries);\n },\n [callbackFn],\n );\n\n useEffect(() => {\n const targetObj = _targetRef.current || targetRef?.current;\n\n if (!targetObj) return;\n const observer = new ResizeObserver(handleObserver);\n observer.observe(targetObj);\n return () => {\n if (targetObj) {\n observer.unobserve(targetObj);\n }\n };\n }, [handleObserver, targetRef]);\n\n return _targetRef;\n};\n","'use client';\n\nimport { Pressable } from '@/common/interactive';\nimport { CloseCircleFilledIcon } from '@/icons';\nimport { debounce } from '@/lib/helpers';\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport * as React from 'react';\nimport { NumericFormat } from 'react-number-format';\nimport {\n doReadNumber,\n InvalidFormatError,\n InvalidNumberError,\n ReadingConfig,\n} from 'read-vietnamese-number';\n\ninterface AddonWrapperProps extends React.HTMLAttributes<HTMLDivElement> {\n disabled?: boolean;\n validSize?: 'default' | 'lg';\n position?: 'before' | 'after';\n}\n\nfunction AddonWrapper({\n className,\n children,\n disabled = false,\n validSize = 'default',\n position = 'after',\n ...rest\n}: AddonWrapperProps) {\n return (\n <div\n className={cn(\n 'bg-muted text-muted-foreground flex items-center justify-center font-medium',\n position === 'before' ? 'rounded-l-md' : 'rounded-r-md',\n validSize === 'lg' ? 'h-[56px]' : 'h-[46px]',\n // Only apply fixed width if children is not a React element (e.g., string or simple node)\n validSize === 'lg' ? 'w-14' : 'w-12',\n {\n 'opacity-60': disabled,\n },\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport interface InputLayoutProps extends TrackingPropsType {\n disabled?: boolean;\n isError?: boolean;\n className?: string;\n addonBefore?: React.ReactNode;\n addonAfter?: React.ReactNode;\n addonBeforeClassName?: string;\n addonAfterClassName?: string;\n label?: string;\n isRequired?: boolean;\n buttonIcon?: React.ReactNode;\n showRemoveIcon?: boolean;\n onClearValue?: () => void;\n buttonIconClassName?: string;\n classButton?: string;\n classLabel?: string;\n children: (params: { iconAreaWidth?: number }) => React.ReactNode;\n size?: 'default' | 'lg';\n isTextarea?: boolean;\n}\n\nconst labelClasses = {\n default: 'px-3 py-3',\n lg: 'px-3 py-4',\n};\n\nconst iconClasses = {\n default: 'px-2 my-3',\n lg: 'px-2 my-4',\n};\n\nexport default function DsInputLayout({\n className,\n showRemoveIcon,\n disabled,\n isError,\n addonAfter,\n addonBefore,\n addonBeforeClassName,\n addonAfterClassName,\n trackingData,\n trackingIndex,\n trackingName,\n label,\n isRequired = false,\n buttonIcon,\n onClearValue,\n buttonIconClassName,\n children,\n classButton,\n classLabel,\n size = 'default',\n isTextarea,\n}: InputLayoutProps) {\n const noIcon = !buttonIcon && !showRemoveIcon;\n const iconAreaRef = React.useRef<HTMLDivElement>(null);\n const [iconAreaWidth, setIconAreaWidth] = React.useState(0);\n\n React.useEffect(() => {\n if (showRemoveIcon || buttonIcon) {\n const iconWidth = iconAreaRef.current?.getBoundingClientRect().width || 0;\n setIconAreaWidth(iconWidth);\n }\n }, [buttonIcon, showRemoveIcon]);\n\n return (\n <Pressable\n trackingName={trackingName}\n trackingData={trackingData}\n trackingIndex={trackingIndex}\n className={cn(\n 'border-input bg-background relative flex min-w-0 items-center rounded-md border transition-colors duration-200',\n 'input-wrapper',\n {\n 'focus-within:!border-primary hover:border-primary/60': !isError && !disabled,\n 'bg-muted': disabled,\n '!border-destructive': isError,\n 'input--floating': !!label,\n },\n className,\n )}\n >\n {addonBefore && (\n <AddonWrapper\n disabled={disabled}\n validSize={size}\n position=\"before\"\n className={addonBeforeClassName}\n >\n {addonBefore}\n </AddonWrapper>\n )}\n <div className=\"input-container relative w-full\">\n {children({ iconAreaWidth })}\n <div\n ref={iconAreaRef}\n className={cn(\n 'absolute bottom-0 right-0 top-0 grid',\n (buttonIcon || showRemoveIcon) && 'grid-cols-1',\n buttonIcon && showRemoveIcon && 'grid-cols-2 divide-x',\n noIcon && 'hidden',\n classButton,\n )}\n >\n {showRemoveIcon && (\n <span\n className={cn('flex cursor-pointer items-center', iconClasses[size], {\n '!mt-2 mb-[2px] items-start justify-start': isTextarea,\n })}\n >\n <CloseCircleFilledIcon\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n onClearValue?.();\n }}\n className={'input-remove-icon'}\n />\n </span>\n )}\n {buttonIcon && (\n <div\n className={cn(\n 'flex items-center justify-center',\n iconClasses[size],\n buttonIconClassName,\n )}\n >\n {buttonIcon}\n </div>\n )}\n </div>\n {label && (\n <label\n htmlFor={label}\n className={cn(\n 'text-muted-foreground pointer-events-none absolute left-0 origin-left transform truncate whitespace-nowrap transition-all duration-100 ease-in-out',\n isTextarea ? 'top-0' : 'top-0 h-full',\n labelClasses[size],\n classLabel,\n disabled && 'opacity-50',\n )}\n style={{\n maxWidth: iconAreaWidth\n ? `calc(100% - 36px)` // 24px for padding\n : 'calc(100% - 24px)', // 24px for padding when no icon\n }}\n >\n {label}\n {isRequired && !disabled && <span className=\"text-destructive ml-0.5\">*</span>}\n </label>\n )}\n </div>\n {addonAfter && (\n <AddonWrapper\n disabled={disabled}\n validSize={size}\n position=\"after\"\n className={addonAfterClassName}\n >\n {addonAfter}\n </AddonWrapper>\n )}\n </Pressable>\n );\n}\n\ninterface TrackingData {\n [key: string]: any;\n identity?: string;\n object_name?: string; // input label name\n object_type?: 'input_field';\n input_text?: string;\n}\n\nexport interface InputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'children' | 'size'\n> {\n // Layout props\n disabled?: boolean;\n isError?: boolean;\n className?: string;\n addonBefore?: React.ReactNode;\n addonAfter?: React.ReactNode;\n addonBeforeClassName?: string;\n addonAfterClassName?: string;\n label?: string;\n isRequired?: boolean;\n buttonIcon?: React.ReactNode;\n showRemoveIcon?: boolean;\n onClearValue?: () => void;\n buttonIconClassName?: string;\n classButton?: string;\n classLabel?: string;\n size?: 'default' | 'lg';\n\n // Input specific props\n inputClassName?: string;\n trackingInputName?: string;\n helpText?: React.ReactNode;\n errorText?: React.ReactNode;\n helpTextClassName?: string;\n errorTextClassName?: string;\n wrapperClassName?: string;\n\n // Tracking props\n trackingData?: TrackingData;\n trackingIndex?: number;\n trackingName?: string;\n trackingClearName?: string;\n}\n\nconst inputClasses = {\n default: 'px-3 py-3 h-[46px]',\n lg: 'px-3 py-3 h-[54px]',\n};\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n wrapperClassName,\n type,\n disabled = false,\n isError = false,\n addonAfter,\n addonBefore,\n addonBeforeClassName,\n addonAfterClassName,\n label,\n isRequired = false,\n buttonIcon,\n showRemoveIcon = true,\n onClearValue,\n buttonIconClassName,\n classButton,\n classLabel,\n inputClassName,\n trackingData,\n trackingIndex,\n trackingName,\n trackingInputName,\n trackingClearName,\n size = 'default',\n helpText,\n errorText,\n helpTextClassName,\n errorTextClassName,\n value,\n onChange,\n placeholder,\n ...rest\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n const sendTracking = React.useMemo(() => {\n return debounce((_text: string) => {\n if (trackingInputName || trackingData?.identity) {\n sendTrack?.(trackingInputName || `input_${trackingData?.identity}`, TRACKING_TYPE.input, {\n ...trackingData,\n object_type: 'input_field',\n });\n }\n }, 1000);\n }, [sendTrack, trackingInputName, trackingData]);\n\n const showRemoveIconFlag = Boolean(value && !disabled && showRemoveIcon);\n\n const handleClearValue = React.useCallback(() => {\n // Call custom clear callback if provided\n onClearValue?.();\n\n // Send tracking for clear action\n if (trackingClearName || trackingData?.identity) {\n sendTrack?.(\n trackingClearName || `clear_input_${trackingData?.identity}`,\n TRACKING_TYPE.input,\n {\n ...trackingData,\n object_type: 'input_field',\n },\n );\n }\n\n // Default clear behavior - always clear the input value\n const clearEvent = {\n target: { value: '' },\n currentTarget: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n\n onChange?.(clearEvent);\n }, [onClearValue, onChange]);\n\n const onInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n sendTracking?.(e.target.value);\n onChange?.(e);\n },\n [onChange, sendTracking],\n );\n\n const validSize = size === 'lg' ? 'lg' : 'default';\n\n // Determine which text to show based on priority\n const getDisplayText = () => {\n if (isError && errorText) {\n return { text: errorText, className: errorTextClassName, isError: true };\n }\n if (helpText) {\n return { text: helpText, className: helpTextClassName, isError: false };\n }\n return null;\n };\n\n const displayTextInfo = getDisplayText();\n\n return (\n <div className={cn('space-y-1', wrapperClassName)}>\n <DsInputLayout\n showRemoveIcon={showRemoveIconFlag}\n label={label}\n isRequired={isRequired}\n trackingData={trackingData}\n trackingIndex={trackingIndex}\n trackingName={trackingName}\n disabled={disabled}\n addonAfter={addonAfter}\n addonBefore={addonBefore}\n addonBeforeClassName={addonBeforeClassName}\n addonAfterClassName={addonAfterClassName}\n buttonIcon={buttonIcon}\n className={className}\n isError={isError}\n classButton={classButton}\n classLabel={classLabel}\n onClearValue={handleClearValue}\n size={validSize}\n buttonIconClassName={buttonIconClassName}\n >\n {({ iconAreaWidth }) => (\n <input\n type={type}\n className={cn(\n 'input-placeholder w-full flex-1 rounded-md bg-transparent font-normal focus:outline-none',\n disabled && 'cursor-not-allowed opacity-50',\n inputClasses[validSize],\n inputClassName,\n )}\n style={{\n paddingRight: iconAreaWidth,\n }}\n ref={ref}\n disabled={disabled}\n value={value}\n onChange={onInputChange}\n {...rest}\n placeholder={placeholder ?? 'Nhập thông tin'}\n />\n )}\n </DsInputLayout>\n\n {/* Help/Error text display */}\n {displayTextInfo && (\n <div\n className={cn(\n 'px-2 text-sm',\n displayTextInfo.isError ? 'text-destructive' : 'text-muted-foreground',\n displayTextInfo.className,\n )}\n >\n {displayTextInfo.text}\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n\nexport interface InputCurrencyProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'children' | 'size' | 'value'\n> {\n // Layout props\n disabled?: boolean;\n isError?: boolean;\n className?: string;\n addonBefore?: React.ReactNode;\n addonAfter?: React.ReactNode;\n addonBeforeClassName?: string;\n addonAfterClassName?: string;\n label?: string;\n isRequired?: boolean;\n buttonIcon?: React.ReactNode;\n showRemoveIcon?: boolean;\n onClearValue?: () => void;\n buttonIconClassName?: string;\n classButton?: string;\n classLabel?: string;\n size?: 'default' | 'lg';\n\n // Input specific props\n inputClassName?: string;\n trackingInputName?: string;\n helpText?: React.ReactNode;\n errorText?: React.ReactNode;\n helpTextClassName?: string;\n errorTextClassName?: string;\n wrapperClassName?: string;\n\n // Tracking props\n trackingData?: TrackingData;\n trackingIndex?: number;\n trackingName?: string;\n trackingClearName?: string;\n\n // Currency formatting props\n currency?: string;\n allowLeadingZeros?: boolean;\n\n // Vietnamese text props\n showVietnameseText?: boolean;\n vietnameseTextUnit?: string;\n vietnameseTextClassName?: string;\n\n // NumericFormat specific props\n onValueChange?: (values: { value: string; floatValue?: number; formattedValue: string }) => void;\n getInputRef?: (el: HTMLInputElement) => void;\n renderText?: (value: string, props: any) => React.ReactNode;\n valueIsNumericString?: boolean;\n\n // Vietnamese format constraints\n maxIntegerLength?: number;\n\n // Value prop - accepts number or empty string\n value?: number | '';\n}\n\nconst InputCurrency = React.forwardRef<HTMLInputElement, InputCurrencyProps>(\n (\n {\n className,\n disabled = false,\n isError = false,\n addonAfter,\n addonBefore,\n addonBeforeClassName,\n addonAfterClassName,\n label,\n isRequired = false,\n buttonIcon,\n showRemoveIcon = true,\n onClearValue,\n buttonIconClassName,\n classButton,\n classLabel,\n inputClassName,\n trackingData,\n trackingIndex,\n trackingName,\n trackingInputName,\n trackingClearName,\n size = 'default',\n helpText,\n errorText,\n helpTextClassName,\n errorTextClassName,\n wrapperClassName,\n value,\n onValueChange,\n showVietnameseText = false,\n vietnameseTextUnit = 'đồng',\n vietnameseTextClassName,\n // NumericFormat props - Vietnamese format fixed\n currency = 'đ',\n allowLeadingZeros = false,\n getInputRef,\n renderText,\n valueIsNumericString = false,\n maxIntegerLength = 14, // Max 14 digits for integer part\n type,\n defaultValue,\n ...rest\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n const sendTracking = React.useMemo(() => {\n return debounce((_text: string) => {\n if (trackingInputName || trackingData?.identity) {\n sendTrack?.(\n trackingInputName || `input_${trackingData?.identity}`,\n TRACKING_TYPE.input,\n trackingData,\n );\n }\n }, 1000);\n }, [sendTrack, trackingInputName, trackingData]);\n\n const showRemoveIconFlag = Boolean(\n value !== '' && value !== null && value !== undefined && !disabled && showRemoveIcon,\n );\n\n const handleClearValue = React.useCallback(() => {\n // Call custom clear callback if provided\n onClearValue?.();\n\n // Send tracking for clear action\n if (trackingClearName || trackingData?.identity) {\n sendTrack?.(\n trackingClearName || `clear_input_${trackingData?.identity}`,\n TRACKING_TYPE.input,\n {\n ...trackingData,\n object_type: 'input_field',\n },\n );\n }\n\n // Default clear behavior - reset to empty string to match number | '' type\n const clearValues = {\n value: '',\n floatValue: undefined,\n formattedValue: '',\n };\n\n onValueChange?.(clearValues);\n }, [onClearValue, onValueChange]);\n\n // Convert number value to string for NumericFormat with additional validation\n const displayValue = React.useMemo(() => {\n if (value === '' || value === null || value === undefined) return '';\n if (typeof value === 'number' && isNaN(value)) return '';\n\n const stringValue = value.toString();\n const cleanValue = stringValue.replace(/[^\\d]/g, '');\n\n // Ensure displayed value doesn't exceed maxIntegerLength\n if (cleanValue.length > maxIntegerLength) {\n return cleanValue.slice(0, maxIntegerLength);\n }\n\n return stringValue;\n }, [value, maxIntegerLength]);\n\n const onInputChange = React.useCallback(\n (values: { value: string; floatValue?: number; formattedValue: string }) => {\n // First check: Verify input meets our isAllowed criteria\n const cleanValue = values.value.replace(/[^\\d]/g, '');\n if (cleanValue.length > maxIntegerLength) {\n return; // Don't process values that exceed our limit\n }\n\n // Apply Vietnamese format constraints - positive numbers only, no decimal input\n const applyVietnameseConstraints = (val: string): string => {\n if (!val) return val;\n\n // Only allow digits - no negative signs or decimal separators\n const constrainedCleanValue = val.replace(/[^\\d]/g, '');\n\n // Double-check limit (should already be enforced by isAllowed)\n let limitedInteger = constrainedCleanValue || '';\n if (limitedInteger.length > maxIntegerLength) {\n limitedInteger = limitedInteger.slice(0, maxIntegerLength);\n }\n\n return limitedInteger;\n };\n\n const constrainedValue = applyVietnameseConstraints(values.value);\n\n // Convert to integer for JavaScript parsing - return '' if empty to match number | '' type\n const floatValue =\n constrainedValue === '' ? undefined : Math.max(0, parseInt(constrainedValue) || 0);\n\n const constrainedValues = {\n ...values,\n value: constrainedValue,\n floatValue: floatValue,\n };\n\n sendTracking?.(constrainedValues.value);\n onValueChange?.(constrainedValues);\n },\n [onValueChange, sendTracking, maxIntegerLength],\n );\n\n // Add isAllowed function to prevent typing beyond maxIntegerLength\n const isAllowed = React.useCallback(\n (values: { value: string; floatValue?: number; formattedValue: string }) => {\n const { value } = values;\n if (!value) return true;\n\n // Block negative sign (-) immediately for InputCurrency (should be positive currency values only)\n if (value.includes('-')) {\n return false;\n }\n\n // Only allow digits - remove all non-numeric characters including separators\n const cleanValue = value.replace(/[^\\d]/g, '');\n\n // Strict length check - prevent any input beyond maxIntegerLength\n const isWithinLimit = cleanValue.length <= maxIntegerLength;\n\n return isWithinLimit;\n },\n [maxIntegerLength],\n );\n\n const validSize = size === 'lg' ? 'lg' : 'default';\n\n // Vietnamese text generation\n const vietnameseText = React.useMemo(() => {\n if (!showVietnameseText || value === '' || value === null || value === undefined) return '';\n\n try {\n // Convert number to string for Vietnamese text generation\n const numValue =\n typeof value === 'number'\n ? value\n : parseFloat(\n String(value)\n .replace(/[^\\d,.-]/g, '')\n .replace(/,/g, ''),\n );\n if (isNaN(numValue) || numValue <= 0) return '';\n\n const config = new ReadingConfig();\n if (vietnameseTextUnit) {\n config.unit = [vietnameseTextUnit];\n }\n\n const result = doReadNumber(config, numValue.toString());\n // Capitalize first letter\n return result.charAt(0).toUpperCase() + result.slice(1);\n } catch (error) {\n if (error instanceof InvalidFormatError || error instanceof InvalidNumberError) {\n return '';\n }\n console.warn('Error generating Vietnamese text:', error);\n return '';\n }\n }, [value, showVietnameseText, vietnameseTextUnit]);\n\n // Determine which text to show based on priority\n const getDisplayText = () => {\n // Priority 1: Error text (if error state and error text exists)\n if (isError && errorText) {\n return { text: errorText, className: errorTextClassName, isError: true };\n }\n\n // Priority 2: Vietnamese text (if enabled, has value, and no error)\n if (\n showVietnameseText &&\n vietnameseText &&\n value !== '' &&\n value !== null &&\n value !== undefined &&\n !isError\n ) {\n return { text: vietnameseText, className: vietnameseTextClassName, isError: false };\n }\n\n // Priority 4: Help text (if exists)\n if (helpText) {\n return { text: helpText, className: helpTextClassName, isError: false };\n }\n\n return null;\n };\n\n const displayTextInfo = getDisplayText();\n\n return (\n <div className=\"space-y-1\">\n <DsInputLayout\n showRemoveIcon={showRemoveIconFlag}\n label={label}\n isRequired={isRequired}\n trackingData={trackingData}\n trackingIndex={trackingIndex}\n trackingName={trackingName}\n disabled={disabled}\n addonAfter={addonAfter || currency}\n addonBefore={addonBefore}\n addonBeforeClassName={addonBeforeClassName}\n addonAfterClassName={addonAfterClassName}\n buttonIcon={buttonIcon}\n className={className}\n isError={isError}\n classButton={classButton}\n classLabel={classLabel}\n onClearValue={handleClearValue}\n size={validSize}\n buttonIconClassName={buttonIconClassName}\n >\n {({ iconAreaWidth }) => (\n <NumericFormat\n className={cn(\n 'w-full flex-1 rounded-md font-normal focus:outline-none',\n disabled && 'cursor-not-allowed opacity-50',\n inputClasses[validSize],\n inputClassName,\n )}\n style={{\n paddingRight: iconAreaWidth,\n }}\n getInputRef={getInputRef || ref}\n disabled={disabled}\n value={displayValue}\n onValueChange={onInputChange}\n isAllowed={isAllowed}\n thousandSeparator=\",\"\n decimalSeparator=\".\"\n decimalScale={0}\n fixedDecimalScale={false}\n allowNegative={false}\n allowLeadingZeros={allowLeadingZeros}\n renderText={renderText}\n displayType=\"input\"\n thousandsGroupStyle=\"thousand\"\n valueIsNumericString={valueIsNumericString}\n onWheel={(e) => {\n // Prevent scrolling from changing values\n if (document.activeElement === e.currentTarget) {\n e.preventDefault();\n }\n }}\n onKeyDown={(e) => {\n // Prevent arrow keys from changing values\n if (\n e.key === 'ArrowUp' ||\n e.key === 'ArrowDown' ||\n e.key === 'PageUp' ||\n e.key === 'PageDown'\n ) {\n e.preventDefault();\n }\n }}\n {...rest}\n />\n )}\n </DsInputLayout>\n\n {/* Help/Error/Vietnamese text display */}\n {displayTextInfo && (\n <div\n className={cn(\n 'pr-2 text-sm',\n displayTextInfo.isError\n ? 'text-destructive'\n : showVietnameseText &&\n vietnameseText &&\n value !== '' &&\n value !== null &&\n value !== undefined &&\n !isError\n ? 'text-foreground'\n : 'text-foreground',\n displayTextInfo.className,\n )}\n >\n {displayTextInfo.text}\n </div>\n )}\n </div>\n );\n },\n);\n\nInputCurrency.displayName = 'InputCurrency';\n\nexport interface InputNumberProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'children' | 'size' | 'value' | 'onChange'\n> {\n // Layout props\n disabled?: boolean;\n isError?: boolean;\n className?: string;\n addonBefore?: React.ReactNode;\n addonAfter?: React.ReactNode;\n addonBeforeClassName?: string;\n addonAfterClassName?: string;\n label?: string;\n isRequired?: boolean;\n buttonIcon?: React.ReactNode;\n showRemoveIcon?: boolean;\n onClearValue?: () => void;\n buttonIconClassName?: string;\n classButton?: string;\n classLabel?: string;\n size?: 'default' | 'lg';\n\n // Input specific props\n inputClassName?: string;\n trackingInputName?: string;\n helpText?: React.ReactNode;\n errorText?: React.ReactNode;\n helpTextClassName?: string;\n errorTextClassName?: string;\n wrapperClassName?: string;\n\n // Tracking props\n trackingData?: TrackingData;\n trackingIndex?: number;\n trackingName?: string;\n trackingClearName?: string;\n\n // Number specific props\n value: number | '';\n onChange: (value: number | '') => void;\n\n // Decimal configuration\n allowDecimals?: boolean;\n decimalScale?: number;\n fixedDecimalScale?: boolean;\n\n // NumericFormat specific props\n allowNegative?: boolean;\n allowLeadingZeros?: boolean;\n getInputRef?: (el: HTMLInputElement) => void;\n renderText?: (value: string, props: any) => React.ReactNode;\n valueIsNumericString?: boolean;\n maxIntegerLength?: number;\n}\n\nconst InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n className,\n disabled = false,\n isError = false,\n addonAfter,\n addonBefore,\n addonBeforeClassName,\n addonAfterClassName,\n label,\n isRequired = false,\n buttonIcon,\n showRemoveIcon = true,\n onClearValue,\n buttonIconClassName,\n classButton,\n classLabel,\n inputClassName,\n trackingData,\n trackingIndex,\n trackingName,\n trackingInputName,\n trackingClearName,\n size = 'default',\n helpText,\n errorText,\n helpTextClassName,\n errorTextClassName,\n wrapperClassName,\n value,\n onChange,\n // Number specific props\n allowDecimals = true,\n decimalScale = 2,\n fixedDecimalScale = false,\n // NumericFormat props\n allowNegative = false,\n allowLeadingZeros = false,\n getInputRef,\n renderText,\n valueIsNumericString = false,\n maxIntegerLength = 15,\n type,\n defaultValue,\n ...rest\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n const sendTracking = React.useMemo(() => {\n return debounce((_text: string) => {\n if (trackingInputName || trackingData?.identity) {\n sendTrack?.(trackingInputName || `input_${trackingData?.identity}`, TRACKING_TYPE.input, {\n ...trackingData,\n object_type: 'input_field',\n });\n }\n }, 1000);\n }, [sendTrack, trackingInputName, trackingData]);\n\n const showRemoveIconFlag = Boolean(\n value !== '' && value !== null && value !== undefined && !disabled && showRemoveIcon,\n );\n\n const handleClearValue = React.useCallback(() => {\n // Call custom clear callback if provided\n onClearValue?.();\n\n // Send tracking for clear action\n if (trackingClearName || trackingData?.identity) {\n sendTrack?.(\n trackingClearName || `clear_input_${trackingData?.identity}`,\n TRACKING_TYPE.input,\n {\n ...trackingData,\n object_type: 'input_field',\n },\n );\n }\n\n // Default clear behavior - reset to empty string\n onChange('');\n }, [onClearValue, onChange]);\n\n // Convert number value to string for NumericFormat\n const displayValue = React.useMemo(() => {\n if (value === '' || value === null || value === undefined) return '';\n if (typeof value === 'number' && isNaN(value)) return '';\n return value.toString();\n }, [value]);\n\n const onInputChange = React.useCallback(\n (values: { value: string; floatValue?: number; formattedValue: string }) => {\n // Extract clean numeric value\n const numericValue = values.floatValue;\n\n // Handle empty input\n if (values.value === '' || numericValue === undefined || numericValue === null) {\n onChange('');\n return;\n }\n\n // Apply constraints for integer length\n const cleanValue = values.value.replace(/[^\\d.,]/g, '');\n const integerPart = cleanValue.split(/[.,]/)[0] || '';\n\n if (integerPart.length > maxIntegerLength) {\n return;\n }\n\n // Send the numeric value\n sendTracking?.(values.value);\n onChange(numericValue);\n },\n [onChange, sendTracking, maxIntegerLength, fixedDecimalScale, allowDecimals, decimalScale],\n );\n\n // Add isAllowed function to prevent typing beyond limits\n const isAllowed = React.useCallback(\n (values: { value: string; floatValue?: number; formattedValue: string }) => {\n const { value } = values;\n if (!value) return true;\n\n // Block negative sign (-) immediately for InputNumber\n if (value.includes('-')) {\n return false;\n }\n\n // EARLY CHECK: If value ends with dot and integer is at max length, block immediately\n if (value.endsWith('.') && allowDecimals) {\n const integerPartOnly = value.slice(0, -1).replace(/,/g, '');\n if (integerPartOnly.length >= maxIntegerLength) {\n return false;\n }\n }\n\n // If decimals are not allowed, block dot (decimal separator)\n if (!allowDecimals && value.includes('.')) {\n return false;\n }\n\n // For fixedDecimalScale, we need special handling to prevent format issues\n if (fixedDecimalScale && allowDecimals) {\n // Split by dot (decimal separator)\n const parts = value.split('.');\n if (parts.length > 2) {\n // More than one dot, reject\n return false;\n }\n\n if (parts.length === 2) {\n const integerPart = parts[0]?.replace(/,/g, '') || '';\n const decimalPart = parts[1] || '';\n\n // Check integer length\n if (integerPart.length > maxIntegerLength) {\n return false;\n }\n\n // IMPORTANT: If integer part is already at max length, don't allow decimal input\n if (integerPart.length === maxIntegerLength) {\n return false;\n }\n\n // For fixedDecimalScale, allow typing up to decimalScale digits\n if (decimalPart.length > decimalScale) {\n return false;\n }\n }\n\n return true;\n }\n\n // Extract integer and decimal parts for normal case\n const parts = value.split('.');\n const integerPart = parts[0]?.replace(/,/g, '') || '';\n const decimalPart = parts[1] || '';\n\n // Check integer length limit FIRST\n if (integerPart.length > maxIntegerLength) {\n return false;\n }\n\n // IMPORTANT: If integer part is already at max length, don't allow decimal input\n // This prevents cases like \"12345678901234.56\" where integer is 14 digits but total exceeds limit\n if (integerPart.length === maxIntegerLength && allowDecimals) {\n // Check if user is trying to add decimal (either already has dot or trying to add dot)\n if (parts.length > 1 || value.endsWith('.')) {\n return false;\n }\n }\n\n // Check decimal part length if decimals are allowed\n if (allowDecimals && decimalPart && decimalScale !== undefined) {\n // Only strictly enforce decimalScale when fixedDecimalScale is true\n // When fixedDecimalScale is false, allow flexible decimal input up to decimalScale\n if (fixedDecimalScale && decimalPart.length > decimalScale) {\n return false;\n }\n // For non-fixed decimal scale, allow typing but will be truncated later\n if (!fixedDecimalScale && decimalPart.length > decimalScale) {\n // Allow typing beyond decimalScale for flexible input\n // NumericFormat will handle the truncation\n return true;\n }\n }\n\n return true;\n },\n [maxIntegerLength, allowDecimals, decimalScale, fixedDecimalScale],\n );\n\n const validSize = size === 'lg' ? 'lg' : 'default';\n\n // Determine which text to show based on priority\n const getDisplayText = () => {\n if (isError && errorText) {\n return { text: errorText, className: errorTextClassName, isError: true };\n }\n if (helpText) {\n return { text: helpText, className: helpTextClassName, isError: false };\n }\n return null;\n };\n\n const displayTextInfo = getDisplayText();\n\n return (\n <div className={cn('space-y-1', wrapperClassName)}>\n <DsInputLayout\n showRemoveIcon={showRemoveIconFlag}\n label={label}\n isRequired={isRequired}\n trackingData={trackingData}\n trackingIndex={trackingIndex}\n trackingName={trackingName}\n disabled={disabled}\n addonAfter={addonAfter}\n addonBefore={addonBefore}\n addonBeforeClassName={addonBeforeClassName}\n addonAfterClassName={addonAfterClassName}\n buttonIcon={buttonIcon}\n className={className}\n isError={isError}\n classButton={classButton}\n classLabel={classLabel}\n onClearValue={handleClearValue}\n size={validSize}\n buttonIconClassName={buttonIconClassName}\n >\n {({ iconAreaWidth }) => (\n <NumericFormat\n className={cn(\n 'w-full flex-1 rounded-md font-normal focus:outline-none',\n disabled && 'cursor-not-allowed opacity-50',\n inputClasses[validSize],\n inputClassName,\n )}\n style={{\n paddingRight: iconAreaWidth,\n }}\n getInputRef={getInputRef || ref}\n disabled={disabled}\n value={displayValue}\n onValueChange={onInputChange}\n isAllowed={isAllowed}\n thousandSeparator=\",\"\n decimalSeparator=\".\"\n decimalScale={allowDecimals ? decimalScale : 0}\n fixedDecimalScale={fixedDecimalScale}\n allowNegative={allowNegative}\n allowLeadingZeros={allowLeadingZeros}\n renderText={renderText}\n displayType=\"input\"\n thousandsGroupStyle=\"thousand\"\n valueIsNumericString={allowDecimals}\n onWheel={(e) => {\n // Prevent scrolling from changing values\n if (document.activeElement === e.currentTarget) {\n e.preventDefault();\n }\n }}\n onKeyDown={(e) => {\n // Prevent arrow keys from changing values\n if (\n e.key === 'ArrowUp' ||\n e.key === 'ArrowDown' ||\n e.key === 'PageUp' ||\n e.key === 'PageDown'\n ) {\n e.preventDefault();\n }\n }}\n {...rest}\n />\n )}\n </DsInputLayout>\n\n {/* Help/Error text display */}\n {displayTextInfo && (\n <div\n className={cn(\n 'px-2 text-sm',\n displayTextInfo.isError ? 'text-destructive' : 'text-muted-foreground',\n displayTextInfo.className,\n )}\n >\n {displayTextInfo.text}\n </div>\n )}\n </div>\n );\n },\n);\n\nInputNumber.displayName = 'InputNumber';\n\nexport { Input, InputCurrency, InputNumber };\n","'use client';\n\nimport * as React from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit] [&>div]:!block [&>div]:!h-full\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","'use client';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { useDialogTracking } from '@/hooks/useDialogTracking';\nimport { TrackingPropsType } from '@/lib/types';\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\n\nconst dialogVariants = cva('', {\n variants: {\n size: {\n sm: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(24rem,88svw)]',\n md: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(28rem,88svw)]',\n lg: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(32rem,88svw)]',\n xl: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(36rem,88svw)]',\n '2xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(42rem,88svw)]',\n '3xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(48rem,88svw)]',\n '4xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(56rem,88svw)]',\n '5xl':\n 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:min-w-[min(69rem,88svw)] lg:max-w-[min(69rem,88svw)]',\n full: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:h-[88svh] lg:w-[88svw]',\n auto: 'w-full max-h-full h-full lg:h-auto lg:rounded-lg lg:max-h-[88svh] lg:max-w-[min(max-content,88svw)]',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-[50] bg-black opacity-30',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n onCloseClick?: () => void;\n hasCloseButton?: boolean;\n trackingNameView?: string; // Event name for view tracking (e.g., 'view_modal')\n trackingNameClose?: string; // Event name for close tracking (e.g., 'close_modal')\n } & Omit<TrackingPropsType, 'trackingName'> &\n VariantProps<typeof dialogVariants>\n>(\n (\n {\n className,\n children,\n onCloseClick,\n hasCloseButton = true,\n size,\n trackingNameView = 'view_modal',\n trackingNameClose = 'close_modal',\n trackingData,\n trackingIndex,\n ...props\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n\n // Use custom hook for tracking\n const { setupTracking, handleCloseClick: handleTrackingClose } = useDialogTracking({\n trackingNameView,\n trackingNameClose,\n trackingData,\n trackingIndex,\n enabled: !!sendTrack,\n });\n\n const handleClose = React.useCallback(\n (e: React.MouseEvent) => {\n handleTrackingClose();\n onCloseClick?.();\n },\n [handleTrackingClose, onCloseClick],\n );\n\n // Merge setupTracking ref with external ref\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n setupTracking(node);\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [setupTracking, ref],\n );\n\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={mergedRef}\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] border-border fixed left-[50%] top-[50%] z-[50] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border shadow-lg duration-200 focus:outline-none lg:rounded-lg',\n dialogVariants({ size }),\n className,\n )}\n {...props}\n >\n {children}\n {hasCloseButton && (\n <DialogPrimitive.Close\n className=\"data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none\"\n onClick={handleClose}\n >\n <X className=\"mt-[-2px] h-6 w-6\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'bg-background flex min-h-[56px] flex-col border-b p-4 text-left lg:rounded-t-lg',\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'bg-background flex gap-4 border-t px-4 py-4 md:justify-end lg:rounded-b-lg',\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-medium leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n dialogVariants,\n type VariantProps,\n};\n","'use client';\n\nimport { OTPInput, OTPInputContext } from 'input-otp';\nimport { Dot } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// Create a context to pass error and disabled states to slots\nconst InputOTPErrorContext = React.createContext<boolean>(false);\nconst InputOTPDisabledContext = React.createContext<boolean>(false);\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n Omit<React.ComponentPropsWithoutRef<typeof OTPInput>, 'render'> & {\n error?: boolean;\n disabled?: boolean;\n children: React.ReactNode;\n }\n>(({ className, containerClassName, error, disabled, children, ...otpProps }, ref) => (\n <InputOTPErrorContext.Provider value={!!error}>\n <InputOTPDisabledContext.Provider value={!!disabled}>\n <OTPInput\n ref={ref}\n disabled={disabled}\n containerClassName={cn('flex items-center gap-2', containerClassName)}\n className={cn('disabled:cursor-not-allowed', className)}\n {...otpProps}\n >\n {children}\n </OTPInput>\n </InputOTPDisabledContext.Provider>\n </InputOTPErrorContext.Provider>\n));\nInputOTP.displayName = 'InputOTP';\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<'div'>,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-3', className)} {...props} />\n));\nInputOTPGroup.displayName = 'InputOTPGroup';\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<'div'>,\n React.ComponentPropsWithoutRef<'div'> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const slot = inputOTPContext.slots[index];\n const char = slot?.char;\n const hasFakeCaret = slot?.hasFakeCaret;\n const isActive = slot?.isActive;\n\n // Get error and disabled states from our custom contexts\n const hasError = React.useContext(InputOTPErrorContext);\n const isDisabled = React.useContext(InputOTPDisabledContext);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'relative flex h-10 w-10 items-center justify-center rounded-lg border text-lg font-normal transition-all',\n 'border-border bg-white',\n isActive && !isDisabled && 'border-blue-500',\n char && 'border-ink-300s',\n hasError && '!border-red-500',\n !isDisabled && 'focus-within:border-blue-500',\n isDisabled && 'text-ink-300s cursor-not-allowed',\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && !isDisabled && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-ink-400s h-5 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n});\nInputOTPSlot.displayName = 'InputOTPSlot';\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<'div'>,\n React.ComponentPropsWithoutRef<'div'>\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n));\nInputOTPSeparator.displayName = 'InputOTPSeparator';\n\nexport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };\n","import {\n doReadNumber,\n InvalidFormatError,\n InvalidNumberError,\n ReadingConfig,\n} from 'read-vietnamese-number';\n\nexport interface CurrencyFormatOptions {\n /**\n * Thousand separator character\n * @default ',' (International format)\n */\n thousandSeparator?: string | boolean;\n\n /**\n * Decimal separator character\n * @default '.' (International format)\n */\n decimalSeparator?: string;\n\n /**\n * Number of decimal places\n * @default 2\n */\n decimalScale?: number;\n\n /**\n * Whether to use fixed decimal scale\n * @default false\n */\n fixedDecimalScale?: boolean;\n\n /**\n * Allow negative numbers\n * @default false\n */\n allowNegative?: boolean;\n\n /**\n * Currency symbol\n * @default 'đ'\n */\n currency?: string;\n\n /**\n * Currency position\n * @default 'suffix'\n */\n currencyPosition?: 'prefix' | 'suffix';\n\n /**\n * Show Vietnamese text reading\n * @default false\n */\n showVietnameseText?: boolean;\n\n /**\n * Vietnamese text unit\n * @default 'đồng'\n */\n vietnameseTextUnit?: string;\n\n /**\n * Locale for formatting\n * @default 'vi-VN'\n */\n locale?: string;\n\n /**\n * Maximum length for integer part (before decimal)\n * @default 14\n */\n maxIntegerLength?: number;\n\n /**\n * Maximum length for decimal part (after decimal)\n * @default 6\n */\n maxDecimalLength?: number;\n\n /**\n * Show shortened currency display (k, tr, tỷ)\n * @default false\n */\n shortenedCurrencyDisplay?: boolean;\n\n /**\n * Whether to round the number to remove decimal places\n * @default false\n */\n isRound?: boolean;\n}\n\nexport interface CurrencyFormatResult {\n /**\n * Raw numeric value\n */\n value: number;\n\n /**\n * Formatted value with thousand separators\n */\n formatted: string;\n\n /**\n * Formatted value with currency symbol\n */\n formattedWithCurrency: string;\n\n /**\n * Vietnamese text reading\n */\n vietnameseText: string;\n\n /**\n * Shortened currency text (k, tr, tỷ)\n */\n shortenedCurrencyText: string;\n\n /**\n * Display text (formatted + currency or vietnamese text based on options)\n */\n displayText: string;\n}\n\n/**\n * Function to format currency values with Vietnamese text support\n * @param value - The numeric value to format\n * @param options - Formatting options\n * @returns Formatted currency result\n */\nexport function formatCurrency(\n value: string | number | null | undefined,\n options: CurrencyFormatOptions = {},\n): CurrencyFormatResult {\n const {\n thousandSeparator = ',',\n decimalSeparator = '.',\n decimalScale = 2,\n fixedDecimalScale = false,\n currency = 'đ',\n currencyPosition = 'suffix',\n showVietnameseText = false,\n vietnameseTextUnit = 'đồng',\n maxIntegerLength = 14,\n maxDecimalLength = 6,\n shortenedCurrencyDisplay = false,\n isRound = false,\n } = options;\n\n // Parse input value\n let numericValue = 0;\n if (value !== null && value !== undefined && value !== '') {\n if (typeof value === 'string') {\n // Only allow digits, comma, and dots\n const cleanValue = value.replace(/[^\\d,.]/g, '');\n\n // Handle different separator formats\n let parseValue = cleanValue;\n if (decimalSeparator === ',' && thousandSeparator === '.') {\n // Vietnamese format: thousand='.', decimal=','\n // Replace comma with dot for parsing (since parseFloat expects dot as decimal)\n parseValue = cleanValue.replace(/,/g, '.');\n } else if (decimalSeparator === '.' && thousandSeparator === ',') {\n // International format: thousand=',', decimal='.'\n // Remove thousand separators (commas) and keep dots as decimal\n parseValue = cleanValue.replace(/,/g, '');\n }\n\n numericValue = parseFloat(parseValue) || 0;\n } else {\n numericValue = value;\n }\n }\n\n // Force positive values only\n if (numericValue < 0) {\n numericValue = 0;\n }\n\n // Apply length constraints with configurable decimal places\n const applyLengthConstraints = (num: number): number => {\n const numStr = num.toString();\n const [integerPart, decimalPart] = numStr.split('.');\n\n // Limit integer part length\n if (integerPart && integerPart.length > maxIntegerLength) {\n const limitedInteger = integerPart.slice(0, maxIntegerLength);\n const limitedDecimal = decimalPart ? decimalPart.slice(0, maxDecimalLength) : '';\n return parseFloat(limitedDecimal ? `${limitedInteger}.${limitedDecimal}` : limitedInteger);\n }\n\n // Limit decimal part to maxDecimalLength\n if (decimalPart && decimalPart.length > maxDecimalLength) {\n const limitedDecimal = decimalPart.slice(0, maxDecimalLength);\n return parseFloat(`${integerPart}.${limitedDecimal}`);\n }\n\n return num;\n };\n\n numericValue = applyLengthConstraints(numericValue);\n\n // Apply rounding if isRound option is enabled\n if (isRound) {\n numericValue = Math.round(numericValue);\n }\n\n // Format number with thousand separators\n const formatNumber = (num: number): string => {\n if (thousandSeparator === false) {\n if (isRound) {\n return num.toFixed(fixedDecimalScale ? Math.min(decimalScale, maxDecimalLength) : 0);\n } else {\n // When not rounding, format to specified decimal places without using toFixed\n if (fixedDecimalScale && decimalScale > 0) {\n const numStr = num.toString();\n const [integerPart, decimalPart] = numStr.split('.');\n const targetDecimals = Math.min(decimalScale, maxDecimalLength);\n const currentDecimals = decimalPart || '';\n\n // Truncate or pad to exact decimal places\n const formattedDecimals = currentDecimals\n .slice(0, targetDecimals)\n .padEnd(targetDecimals, '0');\n return `${integerPart}.${formattedDecimals}`;\n }\n return num.toString();\n }\n }\n\n // Format with thousand separators\n const numStr = num.toString();\n const [integerPart, decimalPart] = numStr.split('.');\n\n // Format integer part with thousand separators\n let formattedInteger = integerPart || '0';\n if (thousandSeparator && formattedInteger.length > 3) {\n const separator = typeof thousandSeparator === 'string' ? thousandSeparator : ',';\n formattedInteger = formattedInteger.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n }\n\n // Format decimal part\n let formattedDecimal = '';\n if (decimalPart || fixedDecimalScale) {\n const maxDecimals = Math.min(decimalScale, maxDecimalLength);\n const decimals = decimalPart || '';\n\n if (fixedDecimalScale) {\n if (isRound) {\n // When rounding, use toFixed-like behavior but respect original separators\n const rounded = Math.round(num * Math.pow(10, maxDecimals)) / Math.pow(10, maxDecimals);\n const roundedStr = rounded.toString();\n const [, roundedDecimal] = roundedStr.split('.');\n formattedDecimal = (roundedDecimal || '').padEnd(maxDecimals, '0').slice(0, maxDecimals);\n } else {\n // When not rounding, truncate to specified decimal places without padding zeros unless needed\n formattedDecimal = decimals.slice(0, maxDecimals);\n // Pad with zeros only if we want fixed decimal scale\n if (maxDecimals > 0) {\n formattedDecimal = formattedDecimal.padEnd(maxDecimals, '0');\n }\n }\n\n // Only show decimal part if it's not all zeros (smart decimal display)\n if (formattedDecimal && !formattedDecimal.match(/^0+$/)) {\n formattedDecimal = decimalSeparator + formattedDecimal;\n } else if (maxDecimals > 0 && (decimals.length > 0 || !isRound)) {\n // Show decimal part if there are actual decimals or if we're not rounding\n formattedDecimal = decimalSeparator + formattedDecimal;\n } else {\n formattedDecimal = '';\n }\n } else {\n // Not fixed decimal scale - only show existing decimal digits\n formattedDecimal = decimals.slice(0, maxDecimals);\n if (formattedDecimal) {\n formattedDecimal = decimalSeparator + formattedDecimal;\n }\n }\n }\n\n return formattedInteger + formattedDecimal;\n };\n\n const formatted = formatNumber(numericValue);\n\n // Add currency symbol\n const formattedWithCurrency =\n currencyPosition === 'prefix' ? `${currency}${formatted}` : `${formatted}${currency}`;\n\n // Generate Vietnamese text\n let vietnameseText = '';\n if (showVietnameseText && numericValue > 0) {\n try {\n const config = new ReadingConfig();\n if (vietnameseTextUnit) {\n config.unit = [vietnameseTextUnit];\n }\n\n const result = doReadNumber(config, numericValue.toString());\n vietnameseText = result.charAt(0).toUpperCase() + result.slice(1);\n } catch (error) {\n if (!(error instanceof InvalidFormatError || error instanceof InvalidNumberError)) {\n console.warn('Error generating Vietnamese text:', error);\n }\n vietnameseText = '';\n }\n }\n\n // Generate shortened currency text\n let shortenedCurrencyText = '';\n if (shortenedCurrencyDisplay && numericValue > 0) {\n try {\n let shortValue: number = 0;\n let unit: string = '';\n\n if (numericValue >= 1000000000) {\n // >= 1 tỷ\n shortValue = numericValue / 1000000000;\n unit = 'tỷ';\n } else if (numericValue >= 1000000) {\n // >= 1 triệu\n shortValue = numericValue / 1000000;\n unit = 'tr';\n } else if (numericValue >= 1000) {\n // >= 1 nghìn\n shortValue = numericValue / 1000;\n unit = 'k';\n } else {\n // < 1 nghìn - use original formatting\n shortenedCurrencyText = formatted;\n unit = '';\n }\n\n if (unit) {\n // For shortened currency, we want Vietnamese standard format:\n // - Comma for thousands separator (12,312)\n // - Dot for decimal separator (.31)\n // - Result: \"12,312.31 tỷ\"\n\n // Create a custom formatter for shortened currency that always uses Vietnamese format\n const formatShortened = (num: number): string => {\n const numStr = num.toString();\n const [integerPart, decimalPart] = numStr.split('.');\n\n // Format integer part with comma as thousand separator\n let formattedInteger = integerPart || '0';\n if (formattedInteger.length > 3) {\n formattedInteger = formattedInteger.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n // Format decimal part with dot as decimal separator\n let formattedDecimal = '';\n if (decimalPart) {\n const maxDecimals = Math.min(decimalScale, 2); // Max 2 decimal places for shortened\n let decimals = decimalPart.slice(0, maxDecimals);\n\n // Remove trailing zeros for clean display\n decimals = decimals.replace(/0+$/, '');\n\n if (decimals) {\n formattedDecimal = '.' + decimals;\n }\n }\n\n return formattedInteger + formattedDecimal;\n };\n\n const displayValue = formatShortened(shortValue);\n shortenedCurrencyText = `${displayValue} ${unit}`;\n }\n } catch (error) {\n console.warn('Error generating shortened currency text:', error);\n shortenedCurrencyText = '';\n }\n }\n\n // Determine display text\n const displayText =\n shortenedCurrencyDisplay && shortenedCurrencyText\n ? shortenedCurrencyText\n : showVietnameseText && vietnameseText\n ? vietnameseText\n : formattedWithCurrency;\n\n return {\n value: numericValue,\n formatted,\n formattedWithCurrency,\n vietnameseText,\n shortenedCurrencyText,\n displayText,\n };\n}\n","'use client';\n\nimport * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/lib/utils';\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\n// Enhanced Tooltip with click support\nexport interface TooltipProps extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {\n /**\n * Whether the tooltip should also trigger on click (in addition to hover/focus)\n * Default: true (hover/focus + click)\n */\n enableClickTrigger?: boolean;\n /**\n * Whether the tooltip should ONLY trigger on click (disables hover/focus)\n * Default: false\n */\n clickOnly?: boolean;\n}\n\nconst Tooltip = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Root>, TooltipProps>(\n ({ enableClickTrigger = true, clickOnly = false, children, ...props }, ref) => {\n const [clickOpen, setClickOpen] = React.useState(false);\n const isControlled = props.open !== undefined;\n\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n if ((enableClickTrigger || clickOnly) && !isControlled) {\n setClickOpen(newOpen);\n }\n props.onOpenChange?.(newOpen);\n },\n [enableClickTrigger, clickOnly, isControlled, props],\n );\n\n const finalOpen = React.useMemo(() => {\n if (isControlled) {\n return props.open;\n }\n if (enableClickTrigger || clickOnly) {\n return clickOpen;\n }\n return props.open;\n }, [isControlled, enableClickTrigger, clickOnly, clickOpen, props.open]);\n\n if (enableClickTrigger || clickOnly) {\n return (\n <TooltipPrimitive.Root\n {...props}\n open={finalOpen}\n onOpenChange={handleOpenChange}\n disableHoverableContent={clickOnly} // Only disable hover if clickOnly=true\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === TooltipTrigger) {\n return React.cloneElement(child, {\n ...child.props,\n enableClickTrigger: enableClickTrigger,\n clickOnly: clickOnly,\n tooltipSetOpen: setClickOpen,\n isControlledTooltip: isControlled,\n onTooltipOpenChange: handleOpenChange,\n });\n }\n return child;\n })}\n </TooltipPrimitive.Root>\n );\n }\n\n return (\n <TooltipPrimitive.Root {...props} onOpenChange={handleOpenChange}>\n {children}\n </TooltipPrimitive.Root>\n );\n },\n);\nTooltip.displayName = 'Tooltip';\n\n// Enhanced TooltipTrigger with click support\ninterface TooltipTriggerProps extends React.ComponentPropsWithoutRef<\n typeof TooltipPrimitive.Trigger\n> {\n enableClickTrigger?: boolean;\n clickOnly?: boolean;\n tooltipSetOpen?: (open: boolean) => void;\n isControlledTooltip?: boolean;\n onTooltipOpenChange?: (open: boolean) => void;\n onClick?: (event: React.MouseEvent<Element, MouseEvent>) => void;\n}\n\nconst TooltipTrigger = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Trigger>,\n TooltipTriggerProps\n>(\n (\n {\n className,\n onClick,\n enableClickTrigger = false,\n clickOnly = false,\n tooltipSetOpen,\n isControlledTooltip,\n onTooltipOpenChange,\n ...props\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<Element, MouseEvent>) => {\n if (enableClickTrigger || clickOnly) {\n // Don't prevent default for regular tooltips that also have hover\n if (clickOnly) {\n event.preventDefault();\n }\n\n const newOpen = !isOpen;\n setIsOpen(newOpen);\n\n if (!isControlledTooltip && tooltipSetOpen) {\n tooltipSetOpen(newOpen);\n }\n\n if (onTooltipOpenChange) {\n onTooltipOpenChange(newOpen);\n }\n }\n onClick?.(event);\n },\n [\n enableClickTrigger,\n clickOnly,\n isOpen,\n isControlledTooltip,\n tooltipSetOpen,\n onTooltipOpenChange,\n onClick,\n ],\n );\n\n if (clickOnly) {\n // Click-only mode: disable hover/focus completely\n return (\n <TooltipPrimitive.Trigger\n ref={ref}\n className={cn('cursor-pointer', className)}\n {...props}\n onClick={handleClick}\n onPointerEnter={undefined} // Disable hover when click-only mode\n onPointerLeave={undefined} // Disable hover when click-only mode\n onFocus={undefined} // Disable focus when click-only mode\n onBlur={undefined} // Disable focus when click-only mode\n />\n );\n }\n\n // Default mode or click + hover mode\n return (\n <TooltipPrimitive.Trigger\n ref={ref}\n className={cn(enableClickTrigger ? 'cursor-pointer' : '', className)}\n {...props}\n onClick={handleClick}\n />\n );\n },\n);\nTooltipTrigger.displayName = TooltipPrimitive.Trigger.displayName;\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow ref={ref} className={cn('fill-popover', className)} {...props} />\n));\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {\n showArrow?: boolean;\n }\n>(({ className, sideOffset = 4, showArrow = true, children, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-ink-500s border-ink-500s z-[9999] max-w-[280px] overflow-hidden rounded-md border-none px-3 py-1.5 text-sm text-white shadow-sm',\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && <TooltipArrow className=\"fill-ink-500s\" />}\n </TooltipPrimitive.Content>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipArrow, TooltipProvider };\n","'use client';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\n\nexport interface PressableProps extends React.HTMLAttributes<any>, TrackingPropsType {\n innerTextKey?: string;\n asChild?: boolean;\n disabled?: boolean;\n as?: string;\n}\n\n// innerTextKey là gì?\n// Khi bạn muốn track lấy thêm nội dung của thẻ html và muốn custom giá trị key của param đó\n// thì bạn truyền thêm innerTextKey là giá trị key mà bạn muốn, default là keyword\nconst Pressable = React.forwardRef<HTMLDivElement, PressableProps>(\n (\n {\n onClick,\n trackingIndex,\n trackingName,\n trackingData,\n className,\n innerTextKey = 'object_name',\n blockSendTracking,\n asChild,\n ...rest\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n\n const onClickFn: React.MouseEventHandler<any> = (e) => {\n // Không xử lý onClick khi disabled\n if (rest.disabled) return;\n\n onClick?.(e);\n if (!sendTrack) return;\n const targetElm = e.target as HTMLElement;\n const keywordText = targetElm.innerText || targetElm.textContent;\n const _trackName = trackingName;\n if (!_trackName) {\n return;\n }\n const otherData: Record<string, any> = {};\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n !blockSendTracking &&\n sendTrack(_trackName, TRACKING_TYPE.click, {\n ...otherData,\n [innerTextKey]: keywordText,\n ...trackingData,\n auto_click: !trackingName,\n });\n };\n\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n className={cn(\n 'cursor-pointer',\n rest.disabled ? 'pointer-events-none cursor-not-allowed' : '',\n className,\n )}\n onClick={onClickFn}\n {...rest}\n />\n );\n },\n);\n\nPressable.displayName = 'Pressable';\n\nexport { Pressable };\n","import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * When true, shows skeleton. When false, shows children.\n */\n loading?: boolean;\n /**\n * Content to show when loading is false\n */\n children?: React.ReactNode;\n /**\n * Custom skeleton component to use instead of default\n */\n skeleton?: React.ReactNode;\n /**\n * Animation variant\n */\n variant?: 'pulse' | 'wave' | 'none';\n /**\n * Skeleton shape\n */\n shape?: 'rectangle' | 'circle' | 'text';\n /**\n * Size preset for common use cases\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nconst skeletonVariants = {\n pulse: 'animate-pulse',\n wave: 'animate-wave',\n none: '',\n};\n\nconst shapeVariants = {\n rectangle: 'rounded-md',\n circle: 'rounded-full',\n text: 'rounded-sm',\n};\n\nconst sizeVariants = {\n sm: 'h-4',\n md: 'h-6',\n lg: 'h-8',\n xl: 'h-12',\n};\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n loading = true,\n children,\n skeleton,\n variant = 'pulse',\n shape = 'rectangle',\n size,\n ...props\n },\n ref,\n ) => {\n // If loading is false, render children normally\n if (loading === false && children !== undefined && children !== null) {\n return <>{children}</>;\n }\n\n // If custom skeleton is provided, use it\n if (skeleton) {\n return <>{skeleton}</>;\n }\n\n // If we have children, render invisible children with skeleton overlay\n if (loading && children) {\n // Extract the children element to copy its classes\n const childElement = React.isValidElement(children) ? children : null;\n const childClasses = childElement?.props?.className || '';\n\n // Extract margin classes from children\n const marginClasses = childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-'),\n )\n .join(' ');\n\n // Create children without margin classes for accurate content area measurement\n const childrenWithoutMargin = React.isValidElement(children)\n ? React.cloneElement(children, {\n ...children.props,\n className: childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n !(\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-')\n ),\n )\n .join(' '),\n })\n : children;\n\n return (\n <div ref={ref} className={cn('relative', marginClasses)} {...props}>\n {/* Container for content area only - maintains exact content dimensions */}\n <div className=\"relative\">\n {/* Invisible children to maintain exact layout and dimensions */}\n <div className=\"pointer-events-none opacity-0\">{childrenWithoutMargin}</div>\n {/* Skeleton overlay - only covers content area, not margins */}\n <div\n className={cn(\n 'bg-muted absolute inset-0',\n skeletonVariants[variant],\n shapeVariants[shape],\n className,\n )}\n />\n </div>\n </div>\n );\n }\n\n // Default skeleton classes for when no children are provided\n const skeletonClasses = cn(\n 'bg-muted',\n skeletonVariants[variant],\n shapeVariants[shape],\n size && sizeVariants[size],\n // Default dimensions if no size prop and no explicit dimensions\n !size && !className?.includes('h-') && !className?.includes('w-') && 'h-4 w-full',\n className,\n );\n\n return <div ref={ref} className={skeletonClasses} {...props} />;\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n\n// Skeleton presets for common use cases\nconst SkeletonText = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, ...props }, ref) => (\n <Skeleton ref={ref} shape=\"text\" className={cn('h-4 w-full', className)} {...props} />\n ),\n);\nSkeletonText.displayName = 'SkeletonText';\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, size = 'md', ...props }, ref) => {\n const avatarSizes = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n };\n\n return (\n <Skeleton ref={ref} shape=\"circle\" className={cn(avatarSizes[size], className)} {...props} />\n );\n },\n);\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, children, loading = true, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n <Skeleton className=\"h-[125px] w-full rounded-xl\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n );\n },\n);\nSkeletonCard.displayName = 'SkeletonCard';\n\nconst SkeletonList = React.forwardRef<HTMLDivElement, SkeletonProps & { items?: number }>(\n ({ className, children, loading = true, items = 3, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-4\">\n <SkeletonAvatar />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nSkeletonList.displayName = 'SkeletonList';\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonList };\n","'use client';\n\nimport * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className,\n )}\n {...props}\n />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","'use client';\n\nimport * as React from 'react';\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { Dialog, DialogContent } from '@/components/dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'placeholder:text-muted-foreground flex h-11 w-full rounded-md bg-transparent py-3 text-sm font-normal outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as React from 'react';\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { ButtonProps, buttonVariants } from '@/components/button';\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<'nav'>) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n);\nPagination.displayName = 'Pagination';\n\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul ref={ref} className={cn('flex flex-row items-center gap-1', className)} {...props} />\n ),\n);\nPaginationContent.displayName = 'PaginationContent';\n\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ className, ...props }, ref) => <li ref={ref} className={cn('', className)} {...props} />,\n);\nPaginationItem.displayName = 'PaginationItem';\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<ButtonProps, 'size'> &\n React.ComponentProps<'a'>;\n\nconst PaginationLink = ({ className, isActive, size = 'icon', ...props }: PaginationLinkProps) => (\n <a\n aria-current={isActive ? 'page' : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n className,\n )}\n {...props}\n />\n);\nPaginationLink.displayName = 'PaginationLink';\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn('gap-1 pl-2.5', className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n);\nPaginationPrevious.displayName = 'PaginationPrevious';\n\nconst PaginationNext = ({ className, ...props }: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn('gap-1 pr-2.5', className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n);\nPaginationNext.displayName = 'PaginationNext';\n\nconst PaginationEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => (\n <span\n aria-hidden\n className={cn('flex h-9 w-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n {/*<span className=\"sr-only\">More pages</span>*/}\n </span>\n);\nPaginationEllipsis.displayName = 'PaginationEllipsis';\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'text-muted-foreground h-12 px-4 text-left align-middle font-medium [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('text-muted-foreground mt-4 text-sm', className)} {...props} />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { Pressable } from '@/common/interactive';\nimport { TrackingPropsType } from '@/lib/types';\nimport { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport React from 'react';\n\nconst chipVariants = cva(\n 'width-max flex font-medium transition-all duration-300 ease-in-out focus-within:outline-none cursor-pointer items-center border',\n {\n variants: {\n size: {\n sm: 'py-1.5 px-3 h-10 text-t16 rounded-full gap-1.5',\n default: 'py-2 px-4 h-12 text-t16 rounded-full gap-2',\n lg: 'py-3 px-4 h-14 text-t16 rounded-full gap-2',\n circle: 'w-12 h-12 text-t16 rounded-full justify-center',\n },\n status: {\n default:\n 'border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground',\n active: 'border-primary bg-primary/10 text-primary hover:bg-primary/20',\n destructive:\n 'border-destructive bg-destructive/10 text-destructive hover:bg-destructive/20',\n disable: 'border-border bg-muted text-muted-foreground cursor-not-allowed opacity-60',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'default',\n },\n },\n);\n\ninterface TrackingData {\n [key: string]: any;\n identity?: string;\n object_type?: 'chip';\n object_name?: string; // Tên label hiển thị trên UI của Selection\n status?: 'selected' | 'unselected'; // Nếu user chọn --> value là \"selected\" - Nếu user bỏ chọn --> value là \"unselected\"\n value?: string; // Tên value hiển thị trên UI mà user chọn\n}\n\nexport type Props = JSX.IntrinsicElements['button'] &\n VariantProps<typeof chipVariants> &\n TrackingPropsType & {\n className?: string;\n tag: React.ReactNode;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n badgeComponent?: React.ReactNode;\n as?: string;\n trackingData?: TrackingData;\n };\n\nconst Chip = React.forwardRef<HTMLDivElement, Props>((inProps, ref) => {\n const {\n tag,\n size,\n status,\n className,\n leftIcon,\n rightIcon,\n badgeComponent,\n trackingName,\n trackingData,\n trackingIndex,\n blockSendTracking,\n as = 'button',\n ...rest\n } = inProps;\n\n // Auto-enhance tracking data with object_name from tag\n const enhancedTrackingData = React.useMemo(() => {\n const data = { ...trackingData };\n\n // Auto-extract object_name from tag if not provided\n if (!data.object_name && typeof tag === 'string') {\n data.object_name = tag;\n }\n\n return data;\n }, [trackingData, tag]);\n\n return (\n <Pressable\n as={as}\n trackingName={trackingName || `input_${trackingData?.identity}`}\n trackingData={enhancedTrackingData}\n trackingIndex={trackingIndex}\n blockSendTracking={blockSendTracking}\n data-status-buttonchip={status}\n className={cn(chipVariants({ size, status }), className)}\n ref={ref as any}\n aria-labelledby=\"chip\"\n data-status={status}\n data-disabled={status === 'disable' ? 'true' : undefined}\n disabled={status === 'disable'}\n {...rest}\n >\n {leftIcon}\n {tag}\n {rightIcon}\n {badgeComponent}\n </Pressable>\n );\n});\n\nChip.displayName = 'Chip';\n\n// Export types for external use\nexport type ChipVariants = VariantProps<typeof chipVariants>;\nexport type ChipSize = NonNullable<ChipVariants['size']>;\nexport type ChipStatus = NonNullable<ChipVariants['status']>;\n\nexport { Chip };\n","'use client';\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","'use client';\n\nimport * as React from 'react';\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst ContextMenu = ContextMenuPrimitive.Root;\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub;\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n));\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md',\n className,\n )}\n {...props}\n />\n));\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md',\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn('text-foreground px-2 py-1.5 text-sm font-medium', inset && 'pl-8', className)}\n {...props}\n />\n));\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn('bg-border -mx-1 my-1 h-px', className)}\n {...props}\n />\n));\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;\n\nconst ContextMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}\n {...props}\n />\n );\n};\nContextMenuShortcut.displayName = 'ContextMenuShortcut';\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '@/lib/utils';\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />\n);\nDrawer.displayName = 'Drawer';\n\nconst DrawerTrigger = DrawerPrimitive.Trigger as React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Trigger> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Trigger>>\n>;\n\nconst DrawerPortal = DrawerPrimitive.Portal;\n\nconst DrawerClose = DrawerPrimitive.Close as React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Close> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Close>>\n>;\n\nconst DrawerOverlay: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Overlay>>\n> = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn('fixed inset-0 z-50 bg-black !opacity-30', className)}\n {...props}\n />\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst DrawerContent: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Content>>\n> = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n 'bg-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border',\n className,\n )}\n {...props}\n >\n <div className=\"bg-muted mx-auto mt-4 h-2 w-[100px] rounded-full\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n));\nDrawerContent.displayName = 'DrawerContent';\n\nconst DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('grid gap-1.5 p-4 text-center sm:text-left', className)} {...props} />\n);\nDrawerHeader.displayName = 'DrawerHeader';\n\nconst DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('mt-auto flex flex-col gap-2 p-4', className)} {...props} />\n);\nDrawerFooter.displayName = 'DrawerFooter';\n\nconst DrawerTitle: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Title>>\n> = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn('text-lg font-medium leading-none tracking-tight', className)}\n {...props}\n />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Description>>\n> = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'focus:bg-accent data-[state=open]:bg-accent flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-medium', inset && 'pl-8', className)}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('bg-muted -mx-1 my-1 h-px', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />\n );\n};\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from 'react-hook-form';\n\nimport { Label } from '@/components/label';\nimport { cn } from '@/lib/utils';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn('space-y-2', className)} {...props} />\n </FormItemContext.Provider>\n );\n },\n);\nFormItem.displayName = 'FormItem';\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { formItemId } = useFormField();\n\n return <Label ref={ref} className={cn(className)} htmlFor={formItemId} {...props} />;\n});\nFormLabel.displayName = 'FormLabel';\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn('text-destructive text-sm font-medium', className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\n\nimport { cn } from '@/lib/utils';\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 rounded-md border p-4 shadow-md outline-none',\n className,\n )}\n {...props}\n />\n));\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","'use client';\n\nimport React from 'react';\nimport Lottie from 'react-lottie';\nimport { cn } from '../lib/utils';\n\nexport interface LottieComponentProps {\n /**\n * Animation data (JSON object)\n */\n animationData: any;\n /**\n * Width of the animation\n */\n width?: number | string;\n /**\n * Height of the animation\n */\n height?: number | string;\n /**\n * Whether the animation should loop\n */\n loop?: boolean;\n /**\n * Whether the animation should autoplay\n */\n autoplay?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n /**\n * Renderer settings\n */\n rendererSettings?: {\n preserveAspectRatio?: string;\n clearCanvas?: boolean;\n progressiveLoad?: boolean;\n hideOnTransparent?: boolean;\n };\n /**\n * Animation speed\n */\n speed?: number;\n /**\n * Direction of the animation (1 = forward, -1 = reverse)\n */\n direction?: number;\n /**\n * Whether the animation is stopped\n */\n isStopped?: boolean;\n /**\n * Whether the animation is paused\n */\n isPaused?: boolean;\n /**\n * Callback when animation completes\n */\n eventListeners?: Array<{\n eventName:\n | 'complete'\n | 'loopComplete'\n | 'enterFrame'\n | 'segmentStart'\n | 'config_ready'\n | 'data_ready'\n | 'loaded_images'\n | 'DOMLoaded'\n | 'destroy';\n callback: () => void;\n }>;\n}\n\nconst LottieComponent = React.forwardRef<HTMLDivElement, LottieComponentProps>(\n (\n {\n animationData,\n width = 200,\n height = 200,\n loop = true,\n autoplay = true,\n className,\n rendererSettings = {\n preserveAspectRatio: 'xMidYMid slice',\n },\n speed = 1,\n direction = 1,\n isStopped = false,\n isPaused = false,\n eventListeners = [],\n },\n ref,\n ) => {\n const defaultOptions = {\n loop,\n autoplay,\n animationData,\n rendererSettings,\n };\n\n return (\n <div ref={ref} className={cn('inline-block', className)}>\n <Lottie\n options={defaultOptions}\n height={height}\n width={width}\n speed={speed}\n direction={direction}\n isStopped={isStopped}\n isPaused={isPaused}\n eventListeners={eventListeners}\n />\n </div>\n );\n },\n);\n\nLottieComponent.displayName = 'LottieComponent';\n\nexport { LottieComponent };\nexport default LottieComponent;\n","'use client';\n\nimport * as React from 'react';\nimport * as MenubarPrimitive from '@radix-ui/react-menubar';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst MenubarMenu: React.ComponentType<React.ComponentProps<typeof MenubarPrimitive.Menu>> =\n MenubarPrimitive.Menu;\n\nconst MenubarGroup = MenubarPrimitive.Group;\n\nconst MenubarPortal = MenubarPrimitive.Portal;\n\nconst MenubarSub = MenubarPrimitive.Sub;\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup;\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n 'bg-background flex h-10 items-center space-x-1 rounded-md border p-1',\n className,\n )}\n {...props}\n />\n));\nMenubar.displayName = MenubarPrimitive.Root.displayName;\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none',\n className,\n )}\n {...props}\n />\n));\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n));\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1',\n className,\n )}\n {...props}\n />\n));\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(({ className, align = 'start', alignOffset = -4, sideOffset = 8, ...props }, ref) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[12rem] overflow-hidden rounded-md border p-1 shadow-md',\n className,\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n));\nMenubarContent.displayName = MenubarPrimitive.Content.displayName;\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Item\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n));\nMenubarItem.displayName = MenubarPrimitive.Item.displayName;\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n));\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n));\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-medium', inset && 'pl-8', className)}\n {...props}\n />\n));\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName;\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn('bg-muted -mx-1 my-1 h-px', className)}\n {...props}\n />\n));\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;\n\nconst MenubarShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}\n {...props}\n />\n );\n};\nMenubarShortcut.displayname = 'MenubarShortcut';\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n};\n","import * as React from 'react';\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDown } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn('relative z-10 flex max-w-max flex-1 items-center justify-center', className)}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn('group flex flex-1 list-none items-center justify-center space-x-1', className)}\n {...props}\n />\n));\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50',\n);\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 left-0 top-0 w-full md:absolute md:w-auto ',\n className,\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn('absolute left-0 top-full flex justify-center')}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow-lg md:w-[var(--radix-navigation-menu-viewport-width)]',\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n >\n <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '@/lib/utils';\n\ntype ProgressProps = React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> & {\n progressClassName?: string;\n};\n\nconst Progress = React.forwardRef<React.ElementRef<typeof ProgressPrimitive.Root>, ProgressProps>(\n ({ className, progressClassName, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn('bg-muted relative h-4 w-full overflow-hidden rounded-full', className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn('bg-primary h-full w-full flex-1 transition-all', progressClassName)}\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n ),\n);\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","'use client';\n\nimport * as React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\n\ninterface TrackingData {\n [key: string]: any;\n identity?: string;\n object_type?: 'radio';\n object_name?: string; // Tên label hiển thị trên UI của RadioGroup\n value?: string; // Nếu user chọn --> value là \"true\" - Nếu user bỏ chọn --> value là \"false\"\n}\n\ninterface RadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>, TrackingPropsType {\n trackingData?: TrackingData;\n}\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(\n (\n {\n className,\n trackingName,\n trackingData,\n trackingIndex,\n blockSendTracking,\n onValueChange,\n ...props\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n\n const handleValueChange = React.useCallback(\n (value: string) => {\n // Call original handler\n onValueChange?.(value);\n\n // Send tracking\n if (sendTrack && !blockSendTracking && (trackingName || trackingData?.identity)) {\n const mergedTrackingData = {\n ...trackingData,\n value: value,\n };\n\n const otherData: Record<string, any> = { ...mergedTrackingData };\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n\n sendTrack(trackingName || `input_${trackingData?.identity}`, TRACKING_TYPE.click, otherData);\n }\n },\n [onValueChange, sendTrack, blockSendTracking, trackingName, trackingData, trackingIndex],\n );\n\n return (\n <RadioGroupPrimitive.Root\n className={cn('grid gap-2', className)}\n onValueChange={handleValueChange}\n {...props}\n ref={ref}\n />\n );\n },\n);\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'border-primary text-primary aspect-square h-4 w-4 rounded-full border focus:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","'use client';\n\nimport { GripVertical } from 'lucide-react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { cn } from '@/lib/utils';\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n <ResizablePrimitive.PanelGroup\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n);\n\nconst ResizablePanel = ResizablePrimitive.Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) => (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n 'bg-border relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n);\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","'use client';\n\nimport * as React from 'react';\nimport { useDevice } from '@/hooks/useDevice';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\nimport { Sheet, SheetContent, SheetTrigger } from './sheet';\nimport { cn } from '@/lib/utils';\n\ninterface ResponsivePopoverProps {\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\ninterface ResponsivePopoverTriggerProps {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\ninterface ResponsivePopoverContentProps {\n children: React.ReactNode;\n className?: string;\n align?: 'start' | 'center' | 'end';\n side?: 'top' | 'right' | 'bottom' | 'left';\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst ResponsivePopover = ({ children, open, onOpenChange, modal }: ResponsivePopoverProps) => {\n const { isMobile } = useDevice();\n\n if (isMobile) {\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n {children}\n </Sheet>\n );\n }\n\n return (\n <Popover open={open} onOpenChange={onOpenChange} modal={modal}>\n {children}\n </Popover>\n );\n};\n\nconst ResponsivePopoverTrigger = React.forwardRef<HTMLButtonElement, ResponsivePopoverTriggerProps>(\n ({ children, asChild, className, ...props }, ref) => {\n const { isMobile } = useDevice();\n\n if (isMobile) {\n return (\n <SheetTrigger ref={ref} asChild={asChild} className={className} {...props}>\n {children}\n </SheetTrigger>\n );\n }\n\n return (\n <PopoverTrigger ref={ref} asChild={asChild} className={className} {...props}>\n {children}\n </PopoverTrigger>\n );\n },\n);\nResponsivePopoverTrigger.displayName = 'ResponsivePopoverTrigger';\n\nconst ResponsivePopoverContent = React.forwardRef<HTMLDivElement, ResponsivePopoverContentProps>(\n ({ children, className, align, side, sideOffset, alignOffset, ...props }, ref) => {\n const { isMobile } = useDevice();\n\n if (isMobile) {\n return (\n <SheetContent ref={ref} className={cn('w-full', className)} side=\"bottom\" {...props}>\n {children}\n </SheetContent>\n );\n }\n\n return (\n <PopoverContent\n ref={ref}\n className={className}\n align={align}\n side={side}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n {...props}\n >\n {children}\n </PopoverContent>\n );\n },\n);\nResponsivePopoverContent.displayName = 'ResponsivePopoverContent';\n\nexport { ResponsivePopover, ResponsivePopoverTrigger, ResponsivePopoverContent };\n","'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { TooltipProvider } from '@/components/tooltip';\nimport { useDevice } from '@/hooks/useDevice';\nimport { ArrowRightIcon } from '@/icons';\nimport { cn } from '@/lib/utils';\n\n// Sidebar configuration\nexport interface SidebarConfig {\n storageKey?: string; // Optional: if not provided, state won't be persisted to localStorage\n width: string;\n widthMobile: string;\n widthIcon: string;\n keyboardShortcut: string;\n paddingX: string; // Horizontal padding for sidebar content\n maxWidth?: string; // Maximum width when resizing (in rem), e.g., '19rem', default is '30rem'\n collapsedSize?: {\n width: string; // Width of menu items when collapsed, default is '2.5rem' (40px = w-10)\n height: string; // Height of menu items when collapsed, default is '2.5rem' (40px = h-10)\n };\n enableHoverExpand?: boolean; // Enable hover to expand collapsed sidebar, default is true\n}\n\n// Default sidebar configuration\nexport const defaultSidebarConfig: SidebarConfig = {\n storageKey: 'sidebar:state',\n width: '18rem',\n widthMobile: '18rem',\n widthIcon: '5rem',\n keyboardShortcut: 'b',\n paddingX: '1rem', // Default 1rem = 16px = px-4\n maxWidth: '30rem', // Default max width 30rem = 480px\n collapsedSize: {\n width: '3rem', // Default 2.5rem = 40px = w-10\n height: '2.5rem', // Default 2.5rem = 40px = h-10\n },\n enableHoverExpand: true, // Default enable hover to expand\n};\n\n// Utility functions for localStorage\nconst getSidebarState = (storageKey?: string): boolean => {\n if (!storageKey || typeof window === 'undefined') return false;\n try {\n const saved = localStorage.getItem(storageKey);\n return saved ? JSON.parse(saved) : false;\n } catch {\n return false;\n }\n};\n\nconst setSidebarState = (storageKey: string | undefined, open: boolean): void => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n localStorage.setItem(storageKey, JSON.stringify(open));\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\nconst getSidebarWidth = (storageKey?: string): number | null => {\n if (!storageKey || typeof window === 'undefined') return null;\n try {\n const saved = localStorage.getItem(`${storageKey}:width`);\n return saved ? parseFloat(saved) : null;\n } catch {\n return null;\n }\n};\n\nconst setSidebarWidth = (storageKey: string | undefined, width: number): void => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n localStorage.setItem(`${storageKey}:width`, width.toString());\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (_open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (_open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n config: SidebarConfig;\n customWidth: number | null;\n setCustomWidth: (_width: number | null) => void;\n isHovered: boolean;\n setIsHovered: (_hovered: boolean) => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (_open: boolean) => void;\n sidebarConfig?: Partial<SidebarConfig>;\n }\n>(\n (\n {\n defaultOpen = false,\n open: openProp,\n onOpenChange: setOpenProp,\n sidebarConfig: customSidebarConfig,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const { isDesktop } = useDevice();\n\n // Merge custom sidebar config with default\n const sidebarConfig = React.useMemo(\n () => ({\n ...defaultSidebarConfig,\n ...customSidebarConfig,\n }),\n [customSidebarConfig],\n );\n\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // Track if component has mounted to prevent initial animation\n const [hasInitialized, setHasInitialized] = React.useState(false);\n\n // Track hover state for collapsed sidebar expansion\n const [isHovered, setIsHovered] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n // Initialize with saved state from localStorage\n const [_open, _setOpen] = React.useState(() => {\n if (openProp !== undefined) return openProp;\n if (defaultOpen !== undefined) return defaultOpen;\n return getSidebarState(sidebarConfig.storageKey);\n });\n\n // Custom width state for resizable sidebar\n const [customWidth, setCustomWidthState] = React.useState<number | null>(() => {\n return getSidebarWidth(sidebarConfig.storageKey);\n });\n\n const setCustomWidth = React.useCallback(\n (width: number | null) => {\n setCustomWidthState(width);\n if (width !== null) {\n setSidebarWidth(sidebarConfig.storageKey, width);\n }\n },\n [sidebarConfig.storageKey],\n );\n\n // Use a ref to track if we've already synced with localStorage on mount\n const hasSyncedRef = React.useRef(false);\n\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (_value: boolean | ((_value: boolean) => boolean)) => {\n const openState = typeof _value === 'function' ? _value(open) : _value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // Save to localStorage instead of cookie\n setSidebarState(sidebarConfig.storageKey, openState);\n },\n [setOpenProp, open, sidebarConfig.storageKey],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return !isDesktop ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isDesktop, setOpen, setOpenMobile]);\n\n // Sync with localStorage only on mount and when localStorage changes from other tabs\n React.useEffect(() => {\n if (openProp !== undefined) return; // Don't sync if controlled from outside\n if (!sidebarConfig.storageKey) return; // Don't sync if no storageKey\n\n // Only sync once on mount\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true;\n const savedState = getSidebarState(sidebarConfig.storageKey);\n if (savedState !== _open) {\n _setOpen(savedState);\n }\n }\n\n // Listen for localStorage changes from other tabs\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === sidebarConfig.storageKey && e.newValue !== null) {\n try {\n const newState = JSON.parse(e.newValue);\n _setOpen(newState);\n } catch {\n // Ignore invalid JSON\n }\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n return () => window.removeEventListener('storage', handleStorageChange);\n }, [openProp, sidebarConfig.storageKey]); // Remove _open from dependencies to prevent unnecessary re-runs\n\n // Enable transitions after initial mount to prevent animation on load\n React.useEffect(() => {\n // Small delay to ensure initial render is complete\n const timer = setTimeout(() => {\n setHasInitialized(true);\n }, 100);\n\n return () => clearTimeout(timer);\n }, []);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === sidebarConfig.keyboardShortcut && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar, sidebarConfig.keyboardShortcut]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile: !isDesktop,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n config: sidebarConfig,\n customWidth,\n setCustomWidth,\n isHovered,\n setIsHovered,\n }),\n [\n state,\n open,\n setOpen,\n isDesktop,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n sidebarConfig,\n customWidth,\n setCustomWidth,\n isHovered,\n ],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': customWidth ? `${customWidth}px` : sidebarConfig.width,\n '--sidebar-width-icon': sidebarConfig.widthIcon,\n '--sidebar-padding-x': sidebarConfig.paddingX,\n '--sidebar-collapsed-width': sidebarConfig.collapsedSize?.width,\n '--sidebar-collapsed-height': sidebarConfig.collapsedSize?.height,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full',\n !hasInitialized && 'sidebar-no-transition',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n },\n);\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n mobileSheetClassName?: string;\n }\n>(\n (\n {\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n mobileSheetClassName,\n children,\n ...props\n },\n ref,\n ) => {\n const {\n isMobile,\n state,\n openMobile,\n setOpenMobile,\n config: sidebarConfig,\n isHovered,\n } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'bg-sidebar text-ink-500s flex h-full w-[--sidebar-width] flex-col',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} modal={false} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className={cn(\n 'text-ink-500s p-0',\n // Override sheet default width constraints\n '!w-full !max-w-none',\n mobileSheetClassName,\n )}\n style={\n {\n '--sidebar-width': sidebarConfig.widthMobile,\n '--sidebar-width-icon': sidebarConfig.widthIcon,\n '--sidebar-padding-x': sidebarConfig.paddingX,\n '--sidebar-collapsed-width': sidebarConfig.collapsedSize?.width,\n '--sidebar-collapsed-height': sidebarConfig.collapsedSize?.height,\n } as React.CSSProperties\n }\n side={side}\n showCloseButton={false}\n showOverlay={false}\n disableOutsideClick={true}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"text-ink-500s group peer hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-hovered={isHovered}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-500 ease-out',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]',\n )}\n />\n <div\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-all duration-500 ease-out md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-4 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n : 'group-data-[side=left]:border-ink-200s group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',\n // Add shadow when hovered and collapsed\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:w-[--sidebar-width] group-data-[collapsible=icon]:group-data-[hovered=true]:shadow-lg',\n // Make it overlay on top when hovered\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:z-50',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n },\n);\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, open, state, isHovered } = useSidebar();\n\n // Show as \"expanded\" icon when open OR when collapsed but hovered\n const showExpandedIcon = open || (state === 'collapsed' && isHovered);\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"icon\"\n size=\"icon\"\n className={cn('h-8 w-8', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <ArrowRightIcon\n className={cn('h-6 w-6 transition-transform duration-200', {\n 'rotate-180': showExpandedIcon,\n })}\n />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n});\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar, state, config, customWidth, setCustomWidth } = useSidebar();\n const [isResizing, setIsResizing] = React.useState(false);\n\n const handleMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n // Only allow resize when sidebar is expanded\n if (state === 'collapsed') {\n toggleSidebar();\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n setIsResizing(true);\n\n const startX = e.clientX;\n const startWidth = customWidth || parseFloat(config.width) * 16; // Convert rem to px (assuming 1rem = 16px)\n\n // Parse min width from config.width (default sidebar width, not icon width)\n const minWidth = parseFloat(config.width) * 16;\n // Max width based on config (default 30rem if not specified)\n const maxWidthValue = config.maxWidth ?? '30rem';\n const maxWidth = maxWidthValue.endsWith('rem')\n ? parseFloat(maxWidthValue) * 16\n : parseFloat(maxWidthValue);\n\n const handleMouseMove = (e: MouseEvent) => {\n const delta = e.clientX - startX;\n const newWidth = Math.max(minWidth, Math.min(maxWidth, startWidth + delta));\n setCustomWidth(newWidth);\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [state, toggleSidebar, customWidth, config, setCustomWidth],\n );\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onMouseDown={handleMouseDown}\n title={state === 'collapsed' ? 'Expand Sidebar' : 'Drag to resize'}\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-[1px] after:bg-gray-300 after:transition-all after:duration-200',\n 'hover:after:w-[3px] hover:after:bg-blue-500',\n '[[data-side=left]_&]:cursor-col-resize [[data-side=right]_&]:cursor-col-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n isResizing && 'after:!w-[3px] after:!bg-blue-500 ',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'bg-background relative flex min-h-svh w-full flex-1 flex-col',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn('bg-background w-full shadow-none focus-visible:h-8 ', className)}\n {...props}\n />\n );\n});\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 pt-3',\n '[padding-left:var(--sidebar-padding-x)] [padding-right:var(--sidebar-padding-x)]',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n const { state, setIsHovered, config } = useSidebar();\n const hoverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const leaveTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = React.useCallback(() => {\n if (state !== 'collapsed' || !config.enableHoverExpand) return;\n\n // Clear any pending leave timeout\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n // Add delay before expanding (300ms)\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n }, 300);\n }, [state, setIsHovered, config.enableHoverExpand]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (!config.enableHoverExpand) return;\n\n // Clear timeout if mouse leaves before delay completes\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n // Add delay before collapsing (200ms)\n leaveTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, 200);\n }, [setIsHovered, config.enableHoverExpand]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2', '[padding:var(--sidebar-padding-x)]', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n />\n );\n },\n);\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n );\n});\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n const { state, setIsHovered, config } = useSidebar();\n const hoverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const leaveTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = React.useCallback(() => {\n if (state !== 'collapsed' || !config.enableHoverExpand) return;\n\n // Clear any pending leave timeout\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n // Add delay before expanding (300ms)\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n }, 300);\n }, [state, setIsHovered, config.enableHoverExpand]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (!config.enableHoverExpand) return;\n\n // Clear timeout if mouse leaves before delay completes\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n // Add delay before collapsing (200ms)\n leaveTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, 200);\n }, [setIsHovered, config.enableHoverExpand]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-4 overflow-auto',\n // Hide scrollbar when collapsed but keep scrolling functionality\n 'group-data-[collapsible=icon]:scrollbar-hide',\n className,\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n />\n );\n },\n);\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col',\n '[padding-left:var(--sidebar-padding-x)] [padding-right:var(--sidebar-padding-x)]',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'text-ink-500s flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-none transition-[margin,opacity] duration-300 [&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:mt-0 group-data-[collapsible=icon]:group-data-[hovered=true]:opacity-100',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform [&>svg]:size-6 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn('w-full text-base', className)}\n {...props}\n />\n ),\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-2', className)}\n {...props}\n />\n ),\n);\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n ),\n);\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md px-3 py-2 text-left text-base outline-none transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!h-[--sidebar-collapsed-height] group-data-[collapsible=icon]:!w-[--sidebar-collapsed-width] group-data-[collapsible=icon]:!justify-start group-data-[collapsible=icon]:!items-center group-data-[collapsible=icon]:group-data-[hovered=true]:!w-full group-data-[collapsible=icon]:group-data-[hovered=true]:!h-10 group-data-[collapsible=icon]:group-data-[hovered=true]:!pl-3 group-data-[collapsible=icon]:group-data-[hovered=true]:!pr-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!py-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!justify-start [&>span]:whitespace-nowrap [&>span]:transition-[opacity,transform] [&>span]:duration-500 [&>span]:ease-out [&>span]:group-data-[collapsible=icon]:opacity-0 [&>span]:group-data-[collapsible=icon]:hidden [&>span]:group-data-[collapsible=icon]:group-data-[hovered=true]:opacity-100 [&>span]:group-data-[collapsible=icon]:group-data-[hovered=true]:inline [&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-500',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-10 text-base',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-base group-data-[collapsible=icon]:!p-0 group-data-[collapsible=icon]:group-data-[hovered=true]:!pl-3 group-data-[collapsible=icon]:group-data-[hovered=true]:!pr-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!py-2',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n className,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-all duration-300 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:flex',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none flex h-5 min-w-5 select-none items-center justify-center rounded-full bg-red-500 px-1 text-xs font-medium tabular-nums text-white transition-all duration-300',\n 'absolute right-1',\n 'peer-hover/menu-button:bg-red-500 peer-data-[active=true]/menu-button:bg-red-500',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!flex',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!relative',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!right-auto',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!top-auto',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:ml-auto',\n className,\n )}\n {...props}\n />\n ),\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border ml-5 flex min-w-0 translate-x-px flex-col gap-1 pl-3 pt-2 transition-all duration-300',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:flex',\n className,\n )}\n {...props}\n />\n ),\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ ...props }, ref) => <li ref={ref} {...props} />,\n);\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n }\n>(({ asChild = false, size = 'sm', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-10 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-3 py-2 outline-none transition-all duration-300 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>span:last-child]:transition-opacity [&>span:last-child]:duration-300 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-sm',\n size === 'md' && 'text-base',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n","'use client';\n\nimport * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-muted relative h-2 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-primary absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","'use client';\n\nimport { Theme, useTheme } from '../providers/UISystemProvider';\nimport * as React from 'react';\nimport { Toaster as Sonner, ToasterProps, toast } from 'sonner';\nimport { AlertCircleIcon16, AlertTriangleIcon16, CheckCircleIcon16 } from '../assets/Icon';\nimport { useDevice } from '../hooks/useDevice';\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { resolvedTheme } = useTheme();\n const { isDesktop } = useDevice();\n // Convert Theme enum to string for Sonner\n const themeValue = resolvedTheme === Theme.DARK ? 'dark' : 'light';\n\n return (\n <Sonner\n theme={themeValue as ToasterProps['theme']}\n className=\"toaster group\"\n visibleToasts={3}\n position={isDesktop ? 'top-center' : 'bottom-center'}\n offset={isDesktop ? 16 : 24}\n icons={{\n success: <CheckCircleIcon16 className=\"icon-background h-5 w-5 text-white\" />,\n info: <AlertCircleIcon16 className=\"icon-background h-5 w-5 text-white\" />,\n warning: <AlertTriangleIcon16 className=\"icon-background h-5 w-5 text-white\" />,\n error: <AlertCircleIcon16 className=\"icon-background h-5 w-5 text-white\" />,\n }}\n style={\n {\n '--normal-bg': 'hsl(var(--background))',\n '--normal-text': 'hsl(var(--foreground))',\n '--normal-border': 'hsl(var(--border))',\n '--success-bg': 'hsl(var(--success))',\n '--success-text': 'hsl(var(--success-foreground))',\n '--success-border': 'hsl(var(--success))',\n '--error-bg': 'hsl(var(--destructive))',\n '--error-text': 'hsl(var(--destructive-foreground))',\n '--error-border': 'hsl(var(--destructive))',\n '--warning-bg': 'hsl(29 100% 55%)', // orange-500\n '--warning-text': 'hsl(0 0% 100%)', // white\n '--warning-border': 'hsl(29 100% 55%)', // orange-500\n '--info-bg': 'hsl(var(--primary))',\n '--info-text': 'hsl(var(--primary-foreground))',\n '--info-border': 'hsl(var(--primary))',\n '--badge-bg': 'hsl(143 69% 95%)', // green-100\n '--badge-color': 'hsl(144 86% 25%)', // green-700\n zIndex: 9999,\n } as React.CSSProperties\n }\n toastOptions={{\n classNames: {\n toast: 'shadow-lg rounded-md pointer-events-auto',\n success: 'text-white',\n error: 'text-white',\n info: 'text-white',\n warning: 'text-white',\n title: 'text-white text-sm !font-bold leading-5 m-0',\n description: 'text-white/90 text-sm m-0 mt-0.5',\n actionButton:\n '!bg-transparent !border-transparent hover:!bg-white/10 !outline-none !shadow-none !min-h-[32px] flex items-center',\n cancelButton:\n '!bg-transparent !border-transparent hover:!bg-white/10 !outline-none !shadow-none !min-h-[32px]',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster, toast };\n","'use client';\n\nimport { CheckCircleIcon16 } from '@/icons';\nimport { cn } from '@/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\n// Types\ninterface StepperStepType {\n id: string;\n title: string;\n description?: string | React.ReactNode;\n disabled?: boolean;\n active?: boolean;\n complete?: boolean;\n // Circle configuration\n circleContent?: React.ReactNode;\n circleClassName?: string;\n circleStyles?: {\n completed?: string;\n active?: string;\n inactive?: string;\n disabled?: string;\n };\n}\n\ninterface StepperContextType {\n steps: StepperStepType[];\n currentStep: string;\n completedSteps: Set<string>;\n variant: 'horizontal' | 'vertical' | 'circle';\n labelOrientation: 'horizontal' | 'vertical';\n tracking: boolean;\n metadata: Record<string, any>;\n methods: {\n goTo: (stepId: string) => void;\n next: () => void;\n prev: () => void;\n reset: () => void;\n complete: (stepId?: string) => void;\n all: StepperStepType[];\n isFirst: boolean;\n isLast: boolean;\n nextStep: StepperStepType | null;\n prevStep: StepperStepType | null;\n currentStepData: StepperStepType | null;\n hasCompleted: (stepId: string) => boolean;\n isCurrent: (stepId: string) => boolean;\n switch: (cases: Record<string, (step: StepperStepType) => React.ReactNode>) => React.ReactNode;\n beforeNext: (callback: () => boolean | Promise<boolean>) => void;\n beforePrev: (callback: () => boolean | Promise<boolean>) => void;\n getMetadata: (key?: string) => any;\n setMetadata: (key: string, value: any) => void;\n resetMetadata: () => void;\n };\n}\n\nconst StepperContext = React.createContext<StepperContextType | null>(null);\n\n// Navigation context for dynamic height\nconst NavigationContext = React.createContext<{\n isDynamicHeight: boolean;\n shouldUseLargeCircle?: boolean;\n stepSpacing?: 'none' | 'sm' | 'md' | 'lg';\n updateConnectors?: () => void;\n}>({ isDynamicHeight: false, shouldUseLargeCircle: false, stepSpacing: 'md' });\n\n// Step context for individual step state\nconst StepContext = React.createContext<{\n isActive: boolean;\n isCompleted: boolean;\n isDisabled: boolean;\n stepIndex: number;\n} | null>(null);\n\nfunction useStepContext() {\n const context = React.useContext(StepContext);\n if (!context) {\n throw new Error('useStepContext must be used within a StepperStep');\n }\n return context;\n}\n\n// Custom hook to use stepper\nexport function useStepper() {\n const context = React.useContext(StepperContext);\n if (!context) {\n throw new Error('useStepper must be used within a StepperProvider');\n }\n return context;\n}\n\n// Define stepper function to create stepper instances\nexport function defineStepper(...steps: StepperStepType[]) {\n const StepperProvider = React.forwardRef<\n HTMLDivElement,\n {\n children: React.ReactNode | ((context: StepperContextType) => React.ReactNode);\n variant?: 'horizontal' | 'vertical' | 'circle';\n labelOrientation?: 'horizontal' | 'vertical';\n tracking?: boolean;\n initialStep?: string;\n initialMetadata?: Record<string, any>;\n className?: string;\n }\n >(\n (\n {\n children,\n variant = 'horizontal',\n labelOrientation = 'horizontal',\n tracking = false,\n initialStep,\n initialMetadata = {},\n className,\n ...props\n },\n ref,\n ) => {\n const [currentStep, setCurrentStep] = React.useState(initialStep || steps[0]?.id || '');\n const [completedSteps, setCompletedSteps] = React.useState(new Set<string>());\n const [metadata, setMetadataState] = React.useState(initialMetadata);\n const beforeNextRef = React.useRef<(() => boolean | Promise<boolean>) | null>(null);\n const beforePrevRef = React.useRef<(() => boolean | Promise<boolean>) | null>(null);\n\n const getCurrentStepIndex = () => steps.findIndex((step) => step.id === currentStep);\n const getCurrentStep = () => steps[getCurrentStepIndex()];\n\n const methods = React.useMemo(\n () => ({\n goTo: async (stepId: string) => {\n const stepExists = steps.find((step) => step.id === stepId);\n if (stepExists) {\n setCurrentStep(stepId);\n }\n },\n next: async () => {\n const currentIndex = getCurrentStepIndex();\n if (currentIndex < steps.length - 1) {\n if (beforeNextRef.current) {\n const canProceed = await beforeNextRef.current();\n if (!canProceed) return;\n }\n const nextStep = steps[currentIndex + 1];\n if (nextStep) {\n setCurrentStep(nextStep.id);\n const currentStepItem = steps[currentIndex];\n if (currentStepItem) {\n setCompletedSteps((prev) => new Set([...prev, currentStepItem.id]));\n }\n }\n }\n },\n prev: async () => {\n const currentIndex = getCurrentStepIndex();\n if (currentIndex > 0) {\n if (beforePrevRef.current) {\n const canProceed = await beforePrevRef.current();\n if (!canProceed) return;\n }\n const prevStep = steps[currentIndex - 1];\n if (prevStep) {\n setCurrentStep(prevStep.id);\n setCompletedSteps((prev) => {\n const newSet = new Set(prev);\n newSet.delete(currentStep);\n return newSet;\n });\n }\n }\n },\n reset: () => {\n const firstStep = steps[0];\n if (firstStep) {\n setCurrentStep(firstStep.id);\n }\n setCompletedSteps(new Set());\n setMetadataState(initialMetadata);\n },\n complete: (stepId?: string) => {\n const targetStep = stepId || currentStep;\n setCompletedSteps((prev) => new Set([...prev, targetStep]));\n },\n all: steps,\n get isFirst() {\n return getCurrentStepIndex() === 0;\n },\n get isLast() {\n return getCurrentStepIndex() === steps.length - 1;\n },\n get nextStep() {\n const currentIndex = getCurrentStepIndex();\n return currentIndex < steps.length - 1 ? steps[currentIndex + 1] || null : null;\n },\n get prevStep() {\n const currentIndex = getCurrentStepIndex();\n return currentIndex > 0 ? steps[currentIndex - 1] || null : null;\n },\n get currentStepData() {\n return getCurrentStep() || null;\n },\n hasCompleted: (stepId: string) => completedSteps.has(stepId),\n isCurrent: (stepId: string) => currentStep === stepId,\n switch: (cases: Record<string, (step: StepperStepType) => React.ReactNode>) => {\n const step = getCurrentStep();\n if (!step) return null;\n return cases[currentStep]?.(step) || null;\n },\n beforeNext: (callback: () => boolean | Promise<boolean>) => {\n beforeNextRef.current = callback;\n },\n beforePrev: (callback: () => boolean | Promise<boolean>) => {\n beforePrevRef.current = callback;\n },\n getMetadata: (key?: string) => (key ? metadata[key] : metadata),\n setMetadata: (key: string, value: any) => {\n setMetadataState((prev) => ({ ...prev, [key]: value }));\n },\n resetMetadata: () => setMetadataState(initialMetadata),\n }),\n [currentStep, completedSteps, metadata, initialMetadata],\n );\n\n const contextValue: StepperContextType = React.useMemo(\n () => ({\n steps,\n currentStep,\n completedSteps,\n variant,\n labelOrientation,\n tracking,\n metadata,\n methods,\n }),\n [currentStep, completedSteps, variant, labelOrientation, tracking, metadata, methods],\n );\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div ref={ref} className={cn('stepper', className)} {...props}>\n {typeof children === 'function' ? children(contextValue) : children}\n </div>\n </StepperContext.Provider>\n );\n },\n );\n StepperProvider.displayName = 'StepperProvider';\n\n // Navigation variants\n const navigationVariants = cva('flex', {\n variants: {\n variant: {\n horizontal: 'flex-row items-start w-full',\n vertical: 'flex-col',\n circle: 'flex-row items-center justify-center',\n },\n spacing: {\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n },\n height: {\n auto: '',\n full: 'h-full',\n dynamic: 'justify-start', // Remove h-full to allow natural height\n },\n },\n defaultVariants: {\n variant: 'horizontal',\n spacing: 'md',\n height: 'auto',\n },\n compoundVariants: [\n // For vertical variants, don't use gap to allow connector lines to stretch\n {\n variant: 'vertical',\n className: 'gap-0',\n },\n ],\n });\n\n const StepperNavigation = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof navigationVariants> & {\n containerHeight?: string | number;\n dynamicHeight?: boolean;\n minHeight?: number;\n stepSpacing?: 'none' | 'sm' | 'md' | 'lg';\n navigationClassName?: string;\n }\n >(\n (\n {\n className,\n variant: navVariant,\n spacing,\n containerHeight,\n dynamicHeight,\n minHeight = 350,\n stepSpacing = 'md',\n style,\n navigationClassName,\n ...props\n },\n ref,\n ) => {\n const { variant } = useStepper();\n const [updateTrigger, setUpdateTrigger] = React.useState(0);\n\n // Force update connectors - called when content changes\n const updateConnectors = React.useCallback(() => {\n setUpdateTrigger((prev) => prev + 1);\n }, []);\n\n // Determine height variant based on props\n const heightVariant = dynamicHeight ? 'dynamic' : containerHeight ? 'full' : 'auto';\n\n // Create dynamic style for custom height\n const dynamicStyle = React.useMemo(() => {\n const baseStyle = style || {};\n if (containerHeight && typeof containerHeight === 'string') {\n return { ...baseStyle, height: containerHeight };\n } else if (containerHeight && typeof containerHeight === 'number') {\n return { ...baseStyle, height: `${containerHeight}px` };\n }\n return baseStyle;\n }, [style, containerHeight]);\n\n // Check if container height meets minimum requirement for larger circles\n const heightValue = React.useMemo(() => {\n if (containerHeight && typeof containerHeight === 'number') {\n return containerHeight;\n } else if (containerHeight && typeof containerHeight === 'string') {\n const match = containerHeight.match(/(\\d+)px/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n }\n return 0;\n }, [containerHeight]);\n\n const shouldUseLargeCircle = dynamicHeight && heightValue >= minHeight;\n\n return (\n <NavigationContext.Provider\n value={{\n isDynamicHeight: !!dynamicHeight,\n shouldUseLargeCircle,\n stepSpacing,\n updateConnectors,\n }}\n >\n <nav\n ref={ref}\n className={cn(\n navigationVariants({\n variant: navVariant || variant,\n spacing,\n height: heightVariant,\n }),\n className,\n navigationClassName,\n )}\n style={dynamicStyle}\n data-update-trigger={updateTrigger}\n {...props}\n />\n </NavigationContext.Provider>\n );\n },\n );\n StepperNavigation.displayName = 'StepperNavigation';\n\n // Step variants\n const stepVariants = cva('cursor-pointer transition-all duration-200', {\n variants: {\n variant: {\n horizontal: 'flex-1 flex items-start',\n vertical: 'w-full',\n 'vertical-dynamic': 'w-full', // Remove flex-1 to allow natural height\n circle: 'flex-col text-center',\n },\n state: {\n inactive: 'opacity-50',\n active: 'opacity-100',\n completed: 'opacity-100',\n disabled: 'opacity-50 cursor-not-allowed',\n },\n },\n defaultVariants: {\n variant: 'horizontal',\n state: 'inactive',\n },\n });\n\n const StepperStep = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n of: string | StepperStepType;\n icon?: React.ReactNode;\n active?: boolean;\n completed?: boolean;\n disabled?: boolean;\n circleClassName?: string;\n connectorClassName?: string;\n contentClassName?: string;\n containerClassName?: string;\n circleContent?: React.ReactNode;\n circleStyles?: {\n completed?: string;\n active?: string;\n inactive?: string;\n disabled?: string;\n };\n showDefaultIcon?: boolean;\n showStepNumber?: boolean;\n forceShowConnector?: boolean;\n }\n >(\n (\n {\n className,\n of,\n icon,\n active,\n completed,\n disabled,\n children,\n circleClassName,\n connectorClassName,\n contentClassName,\n containerClassName,\n circleContent,\n circleStyles,\n showDefaultIcon,\n showStepNumber,\n forceShowConnector,\n ...props\n },\n ref,\n ) => {\n const { methods, variant } = useStepper();\n const {\n isDynamicHeight,\n stepSpacing = 'md',\n updateConnectors,\n } = React.useContext(NavigationContext);\n\n // Ref to measure container width and content height\n const containerRef = React.useRef<HTMLDivElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const [isDesktop, setIsDesktop] = React.useState(false);\n const [contentHeight, setContentHeight] = React.useState(0);\n\n React.useEffect(() => {\n const checkIsDesktop = () => {\n setIsDesktop(window.innerWidth >= 768);\n };\n\n // Check on mount\n checkIsDesktop();\n\n // Add listener for resize\n window.addEventListener('resize', checkIsDesktop);\n\n return () => window.removeEventListener('resize', checkIsDesktop);\n }, []);\n\n // Monitor content height changes for vertical layout\n React.useEffect(() => {\n if (variant === 'vertical' && isDynamicHeight && containerRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const newHeight = entry.contentRect.height;\n if (newHeight !== contentHeight && newHeight > 0) {\n setContentHeight(newHeight);\n // Trigger connector line update with a small delay\n if (updateConnectors) {\n setTimeout(updateConnectors, 100);\n }\n }\n }\n });\n\n // Observe the entire step container\n resizeObserver.observe(containerRef.current);\n\n // Also observe content area specifically\n if (contentRef.current) {\n resizeObserver.observe(contentRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, [variant, isDynamicHeight, contentHeight, updateConnectors]);\n\n // Measure navigation container width and calculate step width dynamically\n const [stepWidth, setStepWidth] = React.useState(0);\n\n React.useEffect(() => {\n const measureNavigation = () => {\n if (containerRef.current && variant === 'horizontal') {\n // Find the navigation container (parent of all steps)\n const navigationContainer =\n containerRef.current.closest('[role=\"navigation\"], nav') ||\n containerRef.current.parentElement;\n\n if (navigationContainer) {\n const rect = navigationContainer.getBoundingClientRect();\n\n // Calculate width per step\n const calculatedStepWidth = rect.width / methods.all.length;\n setStepWidth(calculatedStepWidth);\n }\n }\n };\n\n measureNavigation();\n\n const resizeObserver = new ResizeObserver(measureNavigation);\n if (containerRef.current) {\n const navigationContainer =\n containerRef.current.closest('[role=\"navigation\"], nav') ||\n containerRef.current.parentElement;\n if (navigationContainer) {\n resizeObserver.observe(navigationContainer);\n }\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [variant, methods.all.length]);\n\n const stepId = typeof of === 'string' ? of : of.id;\n const step = methods.all.find((s) => s.id === stepId);\n\n if (!step) return null;\n\n // Priority order: component props > step definition > stepper state\n const isActive =\n active !== undefined\n ? active\n : step.active !== undefined\n ? step.active\n : methods.isCurrent(stepId);\n const isCompleted =\n completed !== undefined\n ? completed\n : step.complete !== undefined\n ? step.complete\n : methods.hasCompleted(stepId);\n const isDisabled = disabled !== undefined ? disabled : step.disabled || false;\n const stepIndex = methods.all.findIndex((s) => s.id === stepId);\n\n // Handle click events\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n // Prevent click if step is disabled\n if (isDisabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n // Call the original onClick if provided\n props.onClick?.(e);\n\n // Navigate to step if not prevented\n if (!e.defaultPrevented) {\n methods.goTo(stepId);\n }\n },\n [isDisabled, stepId, methods, props.onClick],\n );\n\n const state = isCompleted\n ? 'completed'\n : isDisabled\n ? 'disabled'\n : isActive\n ? 'active'\n : 'inactive';\n\n // Get circle content with priority: component props > step definition > default\n const getCircleContent = () => {\n // Priority 1: Component prop\n if (circleContent !== undefined) return circleContent;\n\n // Priority 2: Step definition\n if (step.circleContent !== undefined) return step.circleContent;\n\n // Priority 3: Default behavior\n if (showDefaultIcon === false && showStepNumber === false) return null;\n\n if (isCompleted && showDefaultIcon !== false) {\n return <CheckCircleIcon16 className=\"ic-white h-4 w-4\" />;\n }\n\n if (icon && showDefaultIcon !== false) {\n return icon;\n }\n\n if (showStepNumber !== false) {\n return stepIndex + 1;\n }\n\n return null;\n };\n\n // Get circle styles with priority: component props > step definition > default\n const getCircleStyles = () => {\n const componentStyles = circleStyles || {};\n const stepStyles = step.circleStyles || {};\n\n return {\n completed:\n componentStyles.completed ||\n stepStyles.completed ||\n 'border-green-500 bg-green-500 text-white',\n active:\n componentStyles.active ||\n stepStyles.active ||\n 'border-[4px] border-blue-100 bg-blue-200 !font-bold text-blue-500',\n inactive:\n componentStyles.inactive ||\n stepStyles.inactive ||\n 'border-ink-200s bg-ink-200s text-ink-400s !font-bold',\n disabled:\n componentStyles.disabled ||\n stepStyles.disabled ||\n 'cursor-not-allowed border-ink-200s bg-ink-200s text-ink-400s !font-bold',\n };\n };\n\n const circleStylesConfig = getCircleStyles();\n const circleContentToRender = getCircleContent();\n\n // Determine connector color based on current step status\n const getConnectorColor = () => {\n if (isCompleted) {\n return {\n className: '',\n style: {\n background:\n variant === 'horizontal'\n ? 'linear-gradient(90deg, #12CA5B 0%, rgba(18, 202, 91, 0) 100%)'\n : 'linear-gradient(180deg, #12CA5B 0%, rgba(18, 202, 91, 0) 100%)',\n },\n };\n } else if (isDisabled) {\n return {\n className: '',\n style: {\n background:\n variant === 'horizontal'\n ? 'linear-gradient(90deg, #BBC0CC 0%, rgba(187, 192, 204, 0) 100%)'\n : 'linear-gradient(180deg, #BBC0CC 0%, rgba(187, 192, 204, 0) 100%)',\n },\n }; // Gray gradient for disabled steps\n } else if (isActive) {\n return {\n className: '',\n style: {\n background:\n variant === 'horizontal'\n ? 'linear-gradient(90deg, #094BF4 0%, rgba(9, 75, 244, 0) 100%)'\n : 'linear-gradient(180deg, #094BF4 0%, rgba(9, 75, 244, 0) 100%)',\n },\n }; // Blue gradient for connections from active step\n } else {\n return {\n className: '',\n style: {\n background:\n variant === 'horizontal'\n ? 'linear-gradient(90deg, #BBC0CC 0%, rgba(187, 192, 204, 0) 100%)'\n : 'linear-gradient(180deg, #BBC0CC 0%, rgba(187, 192, 204, 0) 100%)',\n },\n }; // Gray gradient for connections from inactive steps\n }\n };\n\n // Get step spacing class\n const getStepSpacing = () => {\n // For natural height, don't add spacing - let content determine height\n if (isDynamicHeight) return '';\n switch (stepSpacing) {\n case 'none':\n return '';\n case 'sm':\n return 'pb-2';\n case 'md':\n return 'pb-4';\n case 'lg':\n return 'pb-6';\n default:\n return 'pb-4';\n }\n };\n\n // Check if step has description by looking for StepperDescription component or data attribute\n const hasDescription = React.Children.toArray(children).some((child) => {\n if (React.isValidElement(child)) {\n // Check for StepperDescription component\n if (child.type === StepperDescription) return true;\n // Check for data attribute\n if ((child.props as any)?.['data-stepper-description'] === 'true') return true;\n // Check for nested children (wrapper divs)\n if (child.props?.children) {\n const nestedChildren = React.Children.toArray(child.props.children);\n return nestedChildren.some((nested: any) => {\n if (React.isValidElement(nested)) {\n return (\n nested.type === StepperDescription ||\n (nested.props as any)?.['data-stepper-description'] === 'true'\n );\n }\n return false;\n });\n }\n }\n return false;\n });\n\n if (variant === 'vertical') {\n const stepVariant = isDynamicHeight ? 'vertical-dynamic' : 'vertical';\n return (\n <StepContext.Provider value={{ isActive, isCompleted, isDisabled, stepIndex }}>\n <div\n ref={containerRef}\n className={cn(\n stepVariants({ variant: stepVariant, state }),\n // Use flex to allow connector to stretch\n isDynamicHeight ? 'flex' : '',\n // Add padding to create spacing between steps\n getStepSpacing(),\n className,\n )}\n onClick={handleClick}\n {...(({ onClick, ...rest }) => rest)(props)}\n >\n <div className={cn('flex w-full', isDynamicHeight ? 'min-h-0' : '')}>\n {/* Circle and connector column */}\n <div\n className={cn(\n 'flex flex-shrink-0 flex-col items-center',\n isDynamicHeight ? 'h-full' : '',\n )}\n >\n <div\n className={cn(\n 'z-10 flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full text-xs font-medium shadow-sm transition-colors md:h-10 md:w-10 md:text-sm',\n isCompleted && circleStylesConfig.completed,\n !isCompleted && isDisabled && circleStylesConfig.disabled,\n !isCompleted && !isDisabled && isActive && circleStylesConfig.active,\n !isCompleted && !isDisabled && !isActive && circleStylesConfig.inactive,\n circleClassName,\n step.circleClassName,\n )}\n >\n {circleContentToRender}\n </div>\n\n {/* Vertical connector - automatically stretches to match content height */}\n {(stepIndex < methods.all.length - 1 || forceShowConnector) && (\n <div\n className={cn(\n 'w-1 rounded-full transition-all duration-200 ease-in-out',\n // Reduce min-height and margin when no description\n isDynamicHeight\n ? hasDescription\n ? 'mb-2 mt-2 min-h-[2rem] flex-1'\n : 'mb-1.5 mt-1.5 min-h-[1rem] flex-1'\n : 'my-2 h-8',\n getConnectorColor().className,\n connectorClassName,\n )}\n style={getConnectorColor().style}\n />\n )}\n </div>\n\n {/* Content column */}\n <div\n ref={contentRef}\n className={cn(\n 'flex flex-1 flex-col justify-start',\n // Reduce padding when no description\n hasDescription ? 'pt-1' : 'pt-2',\n // Use margin instead of gap to avoid affecting connector\n isDynamicHeight ? 'ml-3' : 'ml-4',\n contentClassName,\n )}\n >\n {children}\n </div>\n </div>\n </div>\n </StepContext.Provider>\n );\n }\n\n // Horizontal layout\n return (\n <StepContext.Provider value={{ isActive, isCompleted, isDisabled, stepIndex }}>\n <div\n ref={containerRef}\n className={cn(stepVariants({ variant, state }), className)}\n onClick={handleClick}\n {...(({ onClick, ...rest }) => rest)(props)}\n >\n <div className=\"flex w-full flex-col items-center gap-1 md:gap-2\">\n {/* Circle row với connector - sử dụng flexbox để auto-center */}\n <div className=\"relative flex w-full items-center\">\n {/* Circle container */}\n <div className=\"flex w-full justify-center\">\n <div\n className={cn(\n 'z-10 flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full text-xs font-medium shadow-sm transition-colors md:h-10 md:w-10 md:text-sm',\n isCompleted && circleStylesConfig.completed,\n !isCompleted && isDisabled && circleStylesConfig.disabled,\n !isCompleted && !isDisabled && isActive && circleStylesConfig.active,\n !isCompleted && !isDisabled && !isActive && circleStylesConfig.inactive,\n circleClassName,\n step.circleClassName,\n )}\n >\n {circleContentToRender}\n </div>\n </div>\n\n {/* Connector line - positioned absolutely to connect between circle centers */}\n {(stepIndex < methods.all.length - 1 || forceShowConnector) && stepWidth > 0 && (\n <div\n className={cn(\n 'absolute h-1 rounded-full transition-colors',\n 'top-1/2 z-0 -translate-y-1/2',\n getConnectorColor().className,\n connectorClassName,\n )}\n style={{\n // Start from center + half circle + small gap\n left: `calc(50% + ${isDesktop ? '28px' : '22px'})`,\n // End at next step center - half circle - small gap\n width: `calc(${stepWidth - (isDesktop ? 48 : 36)}px)`,\n ...getConnectorColor().style,\n }}\n />\n )}\n </div>\n\n {/* Text content - separated from circle positioning */}\n <div className=\"flex w-full justify-center\">\n <div className=\"flex flex-col items-center text-center\">{children}</div>\n </div>\n </div>\n </div>\n </StepContext.Provider>\n );\n },\n );\n StepperStep.displayName = 'StepperStep';\n\n const StepperTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement> & { asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const { isActive, isDisabled, isCompleted } = useStepContext();\n const { variant } = useStepper();\n const { isDynamicHeight } = React.useContext(NavigationContext);\n const Comp = asChild ? 'div' : 'h4';\n return (\n <Comp\n ref={ref}\n className={cn(\n 'font-normal',\n isDynamicHeight\n ? 'text-sm lg:text-base'\n : variant !== 'vertical'\n ? 'mt-1 text-sm lg:text-base'\n : 'mt-1 text-sm lg:text-base',\n isCompleted\n ? 'text-black'\n : isDisabled\n ? 'text-ink-400s cursor-not-allowed'\n : isActive\n ? 'text-primary'\n : 'text-ink-500s',\n className,\n )}\n {...props}\n />\n );\n });\n StepperTitle.displayName = 'StepperTitle';\n\n const StepperDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement> & { asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const { isDynamicHeight } = React.useContext(NavigationContext);\n const Comp = asChild ? 'div' : 'p';\n return (\n <Comp\n ref={ref}\n data-stepper-description=\"true\"\n className={cn(\n 'text-muted-foreground',\n isDynamicHeight ? 'text-base' : 'mt-1 text-base',\n className,\n )}\n {...props}\n />\n );\n });\n StepperDescription.displayName = 'StepperDescription';\n\n const StepperPanel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? 'div' : 'div';\n return <Comp ref={ref} className={cn('mt-4', className)} {...props} />;\n });\n StepperPanel.displayName = 'StepperPanel';\n\n const StepperControls = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? 'div' : 'div';\n return (\n <Comp ref={ref} className={cn('mt-4 flex justify-between gap-2', className)} {...props} />\n );\n });\n StepperControls.displayName = 'StepperControls';\n\n const StepperCircle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n variant?: 'default' | 'outline' | 'ghost';\n }\n >(({ className, asChild, size = 'md', variant = 'default', ...props }, ref) => {\n const { isActive, isCompleted, isDisabled } = useStepContext();\n const Comp = asChild ? 'div' : 'div';\n\n const sizeClasses = {\n sm: 'h-8 w-8 text-xs',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-14 w-14 text-lg',\n };\n\n const variantClasses = {\n default: cn(\n 'flex items-center justify-center rounded-full font-medium shadow-sm transition-colors',\n isCompleted && 'border-green-500 bg-green-500 text-white',\n !isCompleted &&\n isDisabled &&\n 'cursor-not-allowed border-ink-200s bg-ink-200s text-ink-400s !font-bold',\n !isCompleted &&\n !isDisabled &&\n isActive &&\n 'border-[4px] border-blue-100 bg-blue-200 !font-bold text-blue-500',\n !isCompleted &&\n !isDisabled &&\n !isActive &&\n 'border-ink-200s bg-ink-200s text-ink-400s !font-bold',\n ),\n outline: cn(\n 'flex items-center justify-center rounded-full border-2 font-medium transition-colors',\n isCompleted && 'border-green-500 bg-green-50 text-green-600',\n !isCompleted && isDisabled && 'cursor-not-allowed border-ink-300s bg-ink-50s text-ink-400s',\n !isCompleted && !isDisabled && isActive && 'border-blue-500 bg-blue-50 text-blue-600',\n !isCompleted && !isDisabled && !isActive && 'border-ink-300s bg-white text-ink-500s',\n ),\n ghost: cn(\n 'flex items-center justify-center rounded-full font-medium transition-colors',\n isCompleted && 'bg-green-100 text-green-600',\n !isCompleted && isDisabled && 'cursor-not-allowed bg-ink-100s text-ink-400s',\n !isCompleted && !isDisabled && isActive && 'bg-blue-100 text-blue-600',\n !isCompleted && !isDisabled && !isActive && 'bg-ink-100s text-ink-500s',\n ),\n };\n\n return (\n <Comp\n ref={ref}\n className={cn('z-10 flex-shrink-0', sizeClasses[size], variantClasses[variant], className)}\n {...props}\n />\n );\n });\n StepperCircle.displayName = 'StepperCircle';\n\n return {\n StepperProvider,\n StepperNavigation,\n StepperStep,\n StepperTitle,\n StepperDescription,\n StepperPanel,\n StepperControls,\n StepperCircle,\n useStepper,\n };\n}\n\nexport { StepperContext };\nexport type { StepperContextType, StepperStepType };\n","'use client';\n\nimport * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport { TRACKING_TYPE, TrackingPropsType } from '@/lib/types';\n\ninterface TrackingData {\n [key: string]: any;\n identity?: string;\n object_type?: 'switch';\n object_name?: string; // Tên label hiển thị trên UI của Switch\n value?: string;\n}\n\ninterface SwitchProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>, TrackingPropsType {\n trackingData?: TrackingData;\n}\n\nconst Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchProps>(\n (\n {\n className,\n trackingName,\n trackingData,\n trackingIndex,\n blockSendTracking,\n onCheckedChange,\n ...props\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n\n const handleCheckedChange = React.useCallback(\n (checked: boolean) => {\n // Call original handler\n onCheckedChange?.(checked);\n\n // Send tracking\n if (sendTrack && !blockSendTracking && (trackingName || trackingData?.identity)) {\n const mergedTrackingData = {\n ...trackingData,\n value: checked ? 'selected' : 'unselected',\n };\n\n const otherData: Record<string, any> = { ...mergedTrackingData };\n if (trackingIndex !== undefined && trackingIndex !== null) {\n otherData.index = trackingIndex;\n }\n\n sendTrack(trackingName || `input_${trackingData?.identity}`, TRACKING_TYPE.click, otherData);\n }\n },\n [onCheckedChange, sendTrack, blockSendTracking, trackingName, trackingData, trackingIndex],\n );\n\n return (\n <SwitchPrimitives.Root\n className={cn(\n 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n onCheckedChange={handleCheckedChange}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-5 w-5 rounded-full shadow-lg transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n );\n },\n);\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","'use client';\n\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { motion, useMotionValue, animate } from 'motion/react';\n\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers';\nimport { TRACKING_TYPE } from '@/lib';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst tabsListVariants = cva('inline-flex items-center relative scrollbar-hide', {\n variants: {\n variant: {\n normal: 'bg-muted text-muted-foreground rounded-md p-1 h-10',\n specific: 'border-b border-border bg-transparent gap-6 h-auto p-0 overflow-x-auto',\n fixed: 'bg-transparent border-b border-border h-auto p-0 overflow-x-auto',\n full: 'bg-transparent border-b border-border h-auto p-0 w-full overflow-x-auto gap-4',\n },\n scrollable: {\n true: 'overflow-x-auto justify-start',\n false: 'justify-center',\n },\n },\n defaultVariants: {\n variant: 'specific',\n scrollable: true,\n },\n});\n\nconst tabsTriggerVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap transition-all duration-200 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n normal:\n 'rounded-sm px-3 py-1.5 font-medium data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n specific:\n 'relative px-0 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary',\n fixed:\n 'relative px-4 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary',\n full: 'relative px-4 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary',\n },\n scrollable: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n variant: 'full',\n scrollable: false,\n className: 'flex-1',\n },\n ],\n defaultVariants: {\n variant: 'specific',\n scrollable: false,\n },\n },\n);\n\nexport interface TabsListProps\n extends\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {\n scrollable?: boolean;\n showAnimatedUnderline?: boolean;\n}\n\ninterface TrackingData {\n identity?: string;\n object_name?: string; // tab name\n index?: number; // tab index\n}\n\nexport interface TabsTriggerProps\n extends\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {\n trackingName?: string;\n trackingData?: TrackingData;\n trackingIndex?: number;\n blockSendTracking?: boolean;\n}\n\nconst TabsList = React.forwardRef<React.ElementRef<typeof TabsPrimitive.List>, TabsListProps>(\n ({ className, variant, scrollable, showAnimatedUnderline = true, children, ...props }, ref) => {\n const listRef = React.useRef<HTMLDivElement>(null);\n const [showLeftFade, setShowLeftFade] = React.useState(false);\n const [showRightFade, setShowRightFade] = React.useState(false);\n const [underlineStyle, setUnderlineStyle] = React.useState({ left: 0, width: 0 });\n const tabRefs = React.useRef<(HTMLButtonElement | null)[]>([]);\n const scrollX = useMotionValue(0);\n\n // Check scroll position to show/hide fade indicators\n const checkScroll = React.useCallback(() => {\n if (!listRef.current || !scrollable) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = listRef.current;\n setShowLeftFade(scrollLeft > 0);\n setShowRightFade(scrollLeft < scrollWidth - clientWidth - 1);\n }, [scrollable]);\n\n // Smooth scroll to active tab using Framer Motion\n const scrollToActiveTab = React.useCallback(\n (activeTab: HTMLButtonElement) => {\n if (!scrollable || !listRef.current) return;\n\n const list = listRef.current;\n const listRect = list.getBoundingClientRect();\n const tabRect = activeTab.getBoundingClientRect();\n\n const tabLeft = tabRect.left - listRect.left + list.scrollLeft;\n const tabRight = tabLeft + tabRect.width;\n const visibleLeft = list.scrollLeft;\n const visibleRight = visibleLeft + list.clientWidth;\n\n const padding = 32; // Padding from edges\n\n let shouldScroll = false;\n let scrollTarget = 0;\n\n // Check if tab is outside visible area\n if (tabLeft < visibleLeft + padding) {\n // Tab is to the left of visible area\n shouldScroll = true;\n scrollTarget = Math.max(0, tabLeft - padding);\n } else if (tabRight > visibleRight - padding) {\n // Tab is to the right of visible area\n shouldScroll = true;\n scrollTarget = tabRight - list.clientWidth + padding;\n }\n\n if (shouldScroll) {\n const startScroll = list.scrollLeft;\n const distance = scrollTarget - startScroll;\n\n // Use Framer Motion animate with better mobile support\n animate(0, 1, {\n type: 'spring',\n stiffness: 300,\n damping: 30,\n onUpdate: (progress) => {\n // Use scrollTo instead of direct scrollLeft assignment for better mobile support\n list.scrollTo({\n left: startScroll + distance * progress,\n behavior: 'auto', // We're handling the animation ourselves\n });\n },\n onComplete: () => {\n // Ensure we're at the exact target position\n list.scrollTo({ left: scrollTarget, behavior: 'auto' });\n },\n });\n }\n },\n [scrollable],\n );\n\n // Update underline position based on active tab\n React.useLayoutEffect(() => {\n if (variant === 'normal') return;\n\n const updateUnderline = () => {\n const activeTab = tabRefs.current.find(\n (tab) => tab?.getAttribute('data-state') === 'active',\n );\n\n if (activeTab && listRef.current) {\n const listRect = listRef.current.getBoundingClientRect();\n const tabRect = activeTab.getBoundingClientRect();\n\n const newLeft = tabRect.left - listRect.left + (listRef.current.scrollLeft || 0);\n const newWidth = tabRect.width;\n\n if (showAnimatedUnderline) {\n setUnderlineStyle({\n left: newLeft,\n width: newWidth,\n });\n }\n\n // Scroll to active tab after a small delay\n setTimeout(() => {\n scrollToActiveTab(activeTab);\n }, 50);\n }\n };\n\n // Initial update\n updateUnderline();\n\n // Watch for tab state changes\n const observer = new MutationObserver(() => {\n updateUnderline();\n });\n\n tabRefs.current.forEach((tab) => {\n if (tab) {\n observer.observe(tab, { attributes: true, attributeFilter: ['data-state'] });\n }\n });\n\n return () => observer.disconnect();\n }, [showAnimatedUnderline, variant, children, scrollToActiveTab]);\n\n React.useEffect(() => {\n checkScroll();\n window.addEventListener('resize', checkScroll);\n return () => window.removeEventListener('resize', checkScroll);\n }, [checkScroll]);\n\n // Clone children to inject refs and scrollable prop\n const childrenWithRefs = React.Children.map(children, (child, index) => {\n if (React.isValidElement(child) && child.type === TabsTrigger) {\n return React.cloneElement(child as React.ReactElement<any>, {\n scrollable,\n ref: (el: HTMLButtonElement | null) => {\n tabRefs.current[index] = el;\n // Preserve original ref if exists\n const originalRef = (child as any).ref;\n if (typeof originalRef === 'function') {\n originalRef(el);\n } else if (originalRef) {\n originalRef.current = el;\n }\n },\n });\n }\n return child;\n });\n\n return (\n <div className=\"relative\">\n {/* Left fade indicator */}\n {showLeftFade && (\n <div className=\"from-background via-background/80 pointer-events-none absolute left-0 top-0 z-10 h-full w-16 bg-gradient-to-r to-transparent\" />\n )}\n\n <TabsPrimitive.List\n ref={(node) => {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n // @ts-ignore\n listRef.current = node;\n }}\n onScroll={checkScroll}\n className={cn(tabsListVariants({ variant, scrollable, className }))}\n {...props}\n >\n {childrenWithRefs}\n\n {/* Animated underline */}\n {showAnimatedUnderline && variant !== 'normal' && (\n <motion.div\n className=\"bg-primary absolute bottom-0 h-0.5\"\n layoutId=\"tab-underline\"\n style={{\n left: underlineStyle.left,\n width: underlineStyle.width,\n }}\n transition={{\n type: 'spring',\n stiffness: 400,\n damping: 40,\n }}\n />\n )}\n </TabsPrimitive.List>\n\n {/* Right fade indicator */}\n {showRightFade && (\n <div className=\"from-background via-background/80 pointer-events-none absolute right-0 top-0 z-10 h-full w-16 bg-gradient-to-l to-transparent\" />\n )}\n </div>\n );\n },\n);\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(\n (\n {\n className,\n variant,\n scrollable,\n onClick,\n trackingData,\n trackingIndex,\n trackingName,\n blockSendTracking,\n ...props\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext();\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if ((trackingName || trackingData?.identity) && !blockSendTracking) {\n sendTrack(\n trackingName || `sl_tab_${trackingData?.identity}`,\n TRACKING_TYPE.click,\n trackingData,\n );\n }\n onClick?.(event);\n };\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(tabsTriggerVariants({ variant, scrollable, className }))}\n onClick={handleClick}\n {...props}\n />\n );\n },\n);\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'animate-in fade-in-0 slide-in-from-bottom-1 mt-2 duration-200',\n 'focus:outline-none focus-visible:outline-none',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { debounce } from '@/lib/helpers';\nimport { TRACKING_TYPE } from '@/lib/types';\nimport { cn } from '@/lib/utils';\nimport { useUISystemContext } from '@/providers/UISystemProvider';\nimport * as React from 'react';\nimport DsInputLayout, { InputLayoutProps } from './input';\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n Omit<InputLayoutProps, 'children'> {\n value?: string;\n inputClassName?: string;\n trackingInputName?: string;\n size?: 'default' | 'lg';\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n helpText?: React.ReactNode;\n errorText?: React.ReactNode;\n helpTextClassName?: string;\n errorTextClassName?: string;\n showInputLength?: boolean;\n}\n\nexport const textareaClasses = {\n default: 'px-3 py-3',\n lg: 'px-3 py-4',\n};\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n label,\n className,\n isError = false,\n disabled = false,\n classButton,\n buttonIcon,\n addonAfter,\n addonBefore,\n buttonIconClassName,\n onClearValue,\n showRemoveIcon = false,\n trackingData,\n trackingIndex,\n trackingName,\n trackingInputName,\n //Textarea props\n inputClassName,\n value = '',\n style,\n onChange,\n name,\n size = 'default',\n autoFocus,\n maxLength,\n readOnly,\n placeholder,\n rows = 4,\n cols,\n helpText,\n errorText,\n helpTextClassName,\n errorTextClassName,\n showInputLength,\n ...rest\n },\n ref,\n ) => {\n const { sendTrack } = useUISystemContext() ?? {};\n const callbackRef = React.useRef((_text: string) => {});\n React.useEffect(() => {\n callbackRef.current = (_text: string) => {\n trackingInputName &&\n sendTrack?.(trackingInputName, TRACKING_TYPE.input, trackingData || {});\n };\n });\n const sendTrackingDebounce = React.useMemo(() => {\n return debounce((_text: string) => {\n trackingInputName && callbackRef.current?.(_text);\n }, 1000);\n }, [trackingInputName]);\n\n const showRemoveIconFlag = !!value && !disabled && showRemoveIcon;\n\n const handleClearValue = React.useCallback(() => {\n // Call custom clear callback if provided\n onClearValue?.();\n\n // Default clear behavior - always clear the textarea value\n onChange?.({\n target: {\n name,\n value: '',\n },\n } as React.ChangeEvent<HTMLTextAreaElement>);\n }, [onClearValue, name, onChange]);\n\n const onChangeInput = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n sendTrackingDebounce(e?.target?.value);\n },\n [onChange, sendTrackingDebounce],\n );\n\n // Determine which text to show based on priority\n const getDisplayText = () => {\n if (isError && errorText) {\n return { text: errorText, className: errorTextClassName, isError: true };\n }\n if (helpText) {\n return { text: helpText, className: helpTextClassName, isError: false };\n }\n return null;\n };\n\n const displayTextInfo = getDisplayText();\n\n return (\n <div className=\"space-y-1\">\n <DsInputLayout\n isTextarea\n showRemoveIcon={showRemoveIconFlag}\n label={label}\n trackingData={trackingData}\n trackingIndex={trackingIndex}\n trackingName={trackingName}\n disabled={disabled}\n addonAfter={addonAfter}\n addonBefore={addonBefore}\n buttonIcon={buttonIcon}\n className={className}\n isError={isError}\n classButton={classButton}\n onClearValue={handleClearValue}\n size={size}\n buttonIconClassName={buttonIconClassName}\n >\n {() => {\n return (\n <textarea\n data-disabled={disabled}\n className={cn(\n 'flex w-full resize-none rounded-md border border-none font-normal focus:outline-none disabled:cursor-not-allowed',\n disabled && 'text-muted-foreground cursor-not-allowed',\n 'input-placeholder',\n textareaClasses[size],\n inputClassName,\n )}\n style={style}\n value={value}\n ref={ref}\n onChange={onChangeInput}\n name={name}\n disabled={disabled}\n maxLength={maxLength}\n autoFocus={autoFocus}\n readOnly={readOnly}\n placeholder={placeholder}\n rows={rows}\n cols={cols}\n {...rest}\n />\n );\n }}\n </DsInputLayout>\n <div\n className={cn(\n 'flex',\n displayTextInfo && showInputLength\n ? 'justify-between'\n : showInputLength\n ? 'justify-end'\n : '',\n )}\n >\n {displayTextInfo && (\n <div\n className={cn(\n 'mt-1 flex flex-1 items-center text-sm',\n displayTextInfo.isError ? 'text-destructive' : 'text-muted-foreground',\n displayTextInfo.className,\n )}\n >\n <span className=\"line-clamp-1\">{displayTextInfo.text}</span>\n </div>\n )}\n {showInputLength && (\n <div className=\"text-muted-foreground mt-1\">\n {value.length}/{maxLength}\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","'use client';\n\nimport * as React from 'react';\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\nconst toggleVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 gap-2',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-10 px-3 min-w-10',\n sm: 'h-9 px-2.5 min-w-9',\n lg: 'h-11 px-5 min-w-11',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","'use client';\n\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { toggleVariants } from '@/components/toggle';\n\nconst ToggleGroupContext = React.createContext<VariantProps<typeof toggleVariants>>({\n size: 'default',\n variant: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn('flex items-center justify-center gap-1', className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className,\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { useState, useEffect, useCallback } from 'react';\nimport { toast } from '../components/sonner';\n\nexport type CopyStatus = 'idle' | 'copied' | 'failed';\n\nexport interface UseCopyToClipboardReturn {\n copyToClipboard: (text: string, successNotifyText?: string) => Promise<boolean>;\n copyToClipboardNoNotify: (text: string) => Promise<boolean>;\n status: CopyStatus;\n copiedText: string | null;\n}\n\n/**\n * Hook to copy text to clipboard with status tracking\n */\nexport function useCopyToClipboard(): UseCopyToClipboardReturn {\n const [status, setStatus] = useState<CopyStatus>('idle');\n const [copiedText, setCopiedText] = useState<string | null>(null);\n\n const copyToClipboard = useCallback(\n async (text: string, successNotifyText?: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text);\n setStatus('copied');\n setCopiedText(text);\n toast.success(successNotifyText ?? 'Copied to clipboard!');\n return true;\n } catch (error) {\n setStatus('failed');\n setCopiedText(null);\n toast.error('Failed to copy to clipboard');\n console.error('Failed to copy text to clipboard:', error);\n return false;\n }\n },\n [],\n );\n\n const copyToClipboardNoNotify = useCallback(async (text: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text);\n setStatus('copied');\n setCopiedText(text);\n return true;\n } catch (error) {\n setStatus('failed');\n setCopiedText(null);\n console.error('Failed to copy text to clipboard:', error);\n return false;\n }\n }, []);\n\n // Reset status after 2 seconds\n useEffect(() => {\n if (status === 'copied' || status === 'failed') {\n const timeout = setTimeout(() => {\n setStatus('idle');\n setCopiedText(null);\n }, 2000);\n\n return () => clearTimeout(timeout);\n }\n }, [status]);\n\n return {\n copyToClipboard,\n status,\n copiedText,\n copyToClipboardNoNotify,\n };\n}\n\n/**\n * Example usage:\n * const { copyToClipboard, status } = useCopyToClipboard();\n *\n * const handleCopy = () => {\n * copyToClipboard('Text to copy', 'Custom success message!');\n * };\n *\n * return (\n * <button onClick={handleCopy}>\n * {status === 'copied' ? 'Copied!' : 'Copy'}\n * </button>\n * );\n */\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\n/**\n * Hook to detect if component is mounted on client-side\n * Useful for components that should only render after hydration\n *\n * @returns boolean indicating if component is mounted\n */\nexport function useIsMounted(): boolean {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n}\n","import { useEffect, useState } from 'react';\n\n/**\n * Detect routing framework at module level (outside component)\n * This ensures we only detect once and don't violate Rules of Hooks\n */\nlet detectedFramework: 'next-app' | 'next-pages' | 'generic' | null = null;\nlet nextNavigationModule: any = null;\nlet nextRouterModule: any = null;\n\nfunction detectFramework() {\n if (detectedFramework !== null) {\n return detectedFramework;\n }\n\n // Only detect on client side\n if (typeof window === 'undefined') {\n detectedFramework = 'generic';\n return detectedFramework;\n }\n\n // Try to detect Next.js App Router (next/navigation)\n try {\n // @ts-ignore - Dynamic detection\n nextNavigationModule = require('next/navigation');\n if (nextNavigationModule?.usePathname) {\n detectedFramework = 'next-app';\n return detectedFramework;\n }\n } catch (e) {\n // Not available\n }\n\n // Try to detect Next.js Pages Router (next/router)\n try {\n // @ts-ignore - Dynamic detection\n nextRouterModule = require('next/router');\n if (nextRouterModule?.useRouter) {\n detectedFramework = 'next-pages';\n return detectedFramework;\n }\n } catch (e) {\n // Not available\n }\n\n // Fallback to generic implementation\n detectedFramework = 'generic';\n return detectedFramework;\n}\n\n/**\n * Generic pathname hook for UI package with auto-detection support\n *\n * This hook automatically detects and uses:\n * 1. Next.js App Router (next/navigation) - if available\n * 2. Next.js Pages Router (next/router) - if available\n * 3. React Router / Vanilla React - listens to popstate/pushState/replaceState events\n *\n * ✅ Works with:\n * - Next.js 13+ (App Router)\n * - Next.js 12 (Pages Router)\n * - React Router v6\n * - React Router v5\n * - Vanilla React with any routing solution\n * - Plain React without routing\n *\n * No setup required in consumer apps - works out of the box!\n */\nexport function usePathname(): string {\n const framework = detectFramework();\n\n // Next.js App Router - use their hook directly\n if (framework === 'next-app' && nextNavigationModule?.usePathname) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return nextNavigationModule.usePathname();\n }\n\n // Next.js Pages Router - use their router\n if (framework === 'next-pages' && nextRouterModule?.useRouter) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const router = nextRouterModule.useRouter();\n return router.pathname || router.asPath?.split('?')[0] || '/';\n }\n\n // Generic implementation for React Router, vanilla React, etc.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useGenericPathname();\n}\n\n/**\n * Generic pathname implementation that works with any React app\n * Listens to browser navigation events to detect route changes\n */\nfunction useGenericPathname(): string {\n const [pathname, setPathname] = useState<string>(() => {\n if (typeof window === 'undefined') {\n return '/';\n }\n return window.location.pathname;\n });\n\n useEffect(() => {\n // Only run on client side\n if (typeof window === 'undefined') {\n return;\n }\n\n // Handler to update pathname when navigation occurs\n const handleLocationChange = () => {\n const newPathname = window.location.pathname;\n setPathname(newPathname);\n };\n\n // Listen to popstate event (back/forward buttons, browser history API)\n window.addEventListener('popstate', handleLocationChange);\n\n // Intercept pushState and replaceState to detect programmatic navigation\n // This is crucial for React Router and other client-side routing solutions\n const originalPushState = history.pushState.bind(history);\n const originalReplaceState = history.replaceState.bind(history);\n\n history.pushState = function (...args) {\n const result = originalPushState(...args);\n handleLocationChange();\n return result;\n };\n\n history.replaceState = function (...args) {\n const result = originalReplaceState(...args);\n handleLocationChange();\n return result;\n };\n\n // Cleanup on unmount\n return () => {\n window.removeEventListener('popstate', handleLocationChange);\n history.pushState = originalPushState;\n history.replaceState = originalReplaceState;\n };\n }, []); // Empty deps - only set up listeners once\n\n return pathname;\n}\n"]}