shad-m 1.0.2 → 1.0.3

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 (613) hide show
  1. package/dist/assets/Animation/index.js +180 -0
  2. package/dist/assets/Animation/index.js.map +1 -0
  3. package/dist/assets/Animation/index.mjs +79 -0
  4. package/dist/assets/Animation/index.mjs.map +1 -0
  5. package/dist/assets/Icon/index.js +2102 -0
  6. package/dist/assets/Icon/index.js.map +1 -0
  7. package/dist/assets/Icon/index.mjs +421 -0
  8. package/dist/assets/Icon/index.mjs.map +1 -0
  9. package/dist/assets/Image/index.js +755 -0
  10. package/dist/assets/Image/index.js.map +1 -0
  11. package/dist/assets/Image/index.mjs +150 -0
  12. package/dist/assets/Image/index.mjs.map +1 -0
  13. package/dist/common/display/countdown.js +68 -0
  14. package/dist/common/display/countdown.js.map +1 -0
  15. package/dist/common/display/countdown.mjs +46 -0
  16. package/dist/common/display/countdown.mjs.map +1 -0
  17. package/dist/common/display/display-field-group.js +91 -0
  18. package/dist/common/display/display-field-group.js.map +1 -0
  19. package/dist/common/display/display-field-group.mjs +89 -0
  20. package/dist/common/display/display-field-group.mjs.map +1 -0
  21. package/dist/common/display/display-field.js +46 -0
  22. package/dist/common/display/display-field.js.map +1 -0
  23. package/dist/common/display/display-field.mjs +40 -0
  24. package/dist/common/display/display-field.mjs.map +1 -0
  25. package/dist/common/display/display-html-string.js +52 -0
  26. package/dist/common/display/display-html-string.js.map +1 -0
  27. package/dist/common/display/display-html-string.mjs +30 -0
  28. package/dist/common/display/display-html-string.mjs.map +1 -0
  29. package/dist/common/display/index.js +59 -0
  30. package/dist/common/display/index.js.map +1 -0
  31. package/dist/common/display/index.mjs +10 -0
  32. package/dist/common/display/index.mjs.map +1 -0
  33. package/dist/common/display/page-breadcrumb.js +43 -0
  34. package/dist/common/display/page-breadcrumb.js.map +1 -0
  35. package/dist/common/display/page-breadcrumb.mjs +37 -0
  36. package/dist/common/display/page-breadcrumb.mjs.map +1 -0
  37. package/dist/common/display/page-v2.js +58 -0
  38. package/dist/common/display/page-v2.js.map +1 -0
  39. package/dist/common/display/page-v2.mjs +20 -0
  40. package/dist/common/display/page-v2.mjs.map +1 -0
  41. package/dist/common/display/page.js +155 -0
  42. package/dist/common/display/page.js.map +1 -0
  43. package/dist/common/display/page.mjs +138 -0
  44. package/dist/common/display/page.mjs.map +1 -0
  45. package/dist/common/display/score-meter.js +161 -0
  46. package/dist/common/display/score-meter.js.map +1 -0
  47. package/dist/common/display/score-meter.mjs +140 -0
  48. package/dist/common/display/score-meter.mjs.map +1 -0
  49. package/dist/common/display/sidebar/app-sidebar.js +114 -0
  50. package/dist/common/display/sidebar/app-sidebar.js.map +1 -0
  51. package/dist/common/display/sidebar/app-sidebar.mjs +92 -0
  52. package/dist/common/display/sidebar/app-sidebar.mjs.map +1 -0
  53. package/dist/common/display/sidebar/index.js +89 -0
  54. package/dist/common/display/sidebar/index.js.map +1 -0
  55. package/dist/common/display/sidebar/index.mjs +81 -0
  56. package/dist/common/display/sidebar/index.mjs.map +1 -0
  57. package/dist/common/display/sidebar/nav-main.js +406 -0
  58. package/dist/common/display/sidebar/nav-main.js.map +1 -0
  59. package/dist/common/display/sidebar/nav-main.mjs +400 -0
  60. package/dist/common/display/sidebar/nav-main.mjs.map +1 -0
  61. package/dist/common/display/sidebar/sidebar-sheet.js +140 -0
  62. package/dist/common/display/sidebar/sidebar-sheet.js.map +1 -0
  63. package/dist/common/display/sidebar/sidebar-sheet.mjs +118 -0
  64. package/dist/common/display/sidebar/sidebar-sheet.mjs.map +1 -0
  65. package/dist/common/display/sidebar/types.js +4 -0
  66. package/dist/common/display/sidebar/types.js.map +1 -0
  67. package/dist/common/display/sidebar/types.mjs +3 -0
  68. package/dist/common/display/sidebar/types.mjs.map +1 -0
  69. package/dist/common/display/status-state.js +97 -0
  70. package/dist/common/display/status-state.js.map +1 -0
  71. package/dist/common/display/status-state.mjs +88 -0
  72. package/dist/common/display/status-state.mjs.map +1 -0
  73. package/dist/common/forms/auto-form.js +101 -0
  74. package/dist/common/forms/auto-form.js.map +1 -0
  75. package/dist/common/forms/auto-form.mjs +78 -0
  76. package/dist/common/forms/auto-form.mjs.map +1 -0
  77. package/dist/common/forms/form-field.js +58 -0
  78. package/dist/common/forms/form-field.js.map +1 -0
  79. package/dist/common/forms/form-field.mjs +56 -0
  80. package/dist/common/forms/form-field.mjs.map +1 -0
  81. package/dist/common/forms/form-input-field.js +64 -0
  82. package/dist/common/forms/form-input-field.js.map +1 -0
  83. package/dist/common/forms/form-input-field.mjs +62 -0
  84. package/dist/common/forms/form-input-field.mjs.map +1 -0
  85. package/dist/common/forms/index.js +22 -0
  86. package/dist/common/forms/index.js.map +1 -0
  87. package/dist/common/forms/index.mjs +5 -0
  88. package/dist/common/forms/index.mjs.map +1 -0
  89. package/dist/common/forms/switch-field.js +106 -0
  90. package/dist/common/forms/switch-field.js.map +1 -0
  91. package/dist/common/forms/switch-field.mjs +104 -0
  92. package/dist/common/forms/switch-field.mjs.map +1 -0
  93. package/dist/common/interactive/alert-dialog-wrapper.js +141 -0
  94. package/dist/common/interactive/alert-dialog-wrapper.js.map +1 -0
  95. package/dist/common/interactive/alert-dialog-wrapper.mjs +119 -0
  96. package/dist/common/interactive/alert-dialog-wrapper.mjs.map +1 -0
  97. package/dist/common/interactive/autocomplete.js +178 -0
  98. package/dist/common/interactive/autocomplete.js.map +1 -0
  99. package/dist/common/interactive/autocomplete.mjs +157 -0
  100. package/dist/common/interactive/autocomplete.mjs.map +1 -0
  101. package/dist/common/interactive/copy-tooltip.js +152 -0
  102. package/dist/common/interactive/copy-tooltip.js.map +1 -0
  103. package/dist/common/interactive/copy-tooltip.mjs +143 -0
  104. package/dist/common/interactive/copy-tooltip.mjs.map +1 -0
  105. package/dist/common/interactive/date-field.js +303 -0
  106. package/dist/common/interactive/date-field.js.map +1 -0
  107. package/dist/common/interactive/date-field.mjs +281 -0
  108. package/dist/common/interactive/date-field.mjs.map +1 -0
  109. package/dist/common/interactive/date-input/date-input.js +68 -0
  110. package/dist/common/interactive/date-input/date-input.js.map +1 -0
  111. package/dist/common/interactive/date-input/date-input.mjs +62 -0
  112. package/dist/common/interactive/date-input/date-input.mjs.map +1 -0
  113. package/dist/common/interactive/date-input/index.js +17 -0
  114. package/dist/common/interactive/date-input/index.js.map +1 -0
  115. package/dist/common/interactive/date-input/index.mjs +4 -0
  116. package/dist/common/interactive/date-input/index.mjs.map +1 -0
  117. package/dist/common/interactive/date-input/types.js +4 -0
  118. package/dist/common/interactive/date-input/types.js.map +1 -0
  119. package/dist/common/interactive/date-input/types.mjs +3 -0
  120. package/dist/common/interactive/date-input/types.mjs.map +1 -0
  121. package/dist/common/interactive/date-input/use-typed-date.js +478 -0
  122. package/dist/common/interactive/date-input/use-typed-date.js.map +1 -0
  123. package/dist/common/interactive/date-input/use-typed-date.mjs +476 -0
  124. package/dist/common/interactive/date-input/use-typed-date.mjs.map +1 -0
  125. package/dist/common/interactive/date-input/utils.js +34 -0
  126. package/dist/common/interactive/date-input/utils.js.map +1 -0
  127. package/dist/common/interactive/date-input/utils.mjs +29 -0
  128. package/dist/common/interactive/date-input/utils.mjs.map +1 -0
  129. package/dist/common/interactive/date-picker.js +616 -0
  130. package/dist/common/interactive/date-picker.js.map +1 -0
  131. package/dist/common/interactive/date-picker.mjs +594 -0
  132. package/dist/common/interactive/date-picker.mjs.map +1 -0
  133. package/dist/common/interactive/date-range-input/date-range-input.js +82 -0
  134. package/dist/common/interactive/date-range-input/date-range-input.js.map +1 -0
  135. package/dist/common/interactive/date-range-input/date-range-input.mjs +76 -0
  136. package/dist/common/interactive/date-range-input/date-range-input.mjs.map +1 -0
  137. package/dist/common/interactive/date-range-input/index.js +12 -0
  138. package/dist/common/interactive/date-range-input/index.js.map +1 -0
  139. package/dist/common/interactive/date-range-input/index.mjs +3 -0
  140. package/dist/common/interactive/date-range-input/index.mjs.map +1 -0
  141. package/dist/common/interactive/date-range-input/types.js +4 -0
  142. package/dist/common/interactive/date-range-input/types.js.map +1 -0
  143. package/dist/common/interactive/date-range-input/types.mjs +3 -0
  144. package/dist/common/interactive/date-range-input/types.mjs.map +1 -0
  145. package/dist/common/interactive/date-range-input/use-typed-date-range.js +602 -0
  146. package/dist/common/interactive/date-range-input/use-typed-date-range.js.map +1 -0
  147. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs +600 -0
  148. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs.map +1 -0
  149. package/dist/common/interactive/date-time-picker.js +215 -0
  150. package/dist/common/interactive/date-time-picker.js.map +1 -0
  151. package/dist/common/interactive/date-time-picker.mjs +213 -0
  152. package/dist/common/interactive/date-time-picker.mjs.map +1 -0
  153. package/dist/common/interactive/dialog-wrapper.js +124 -0
  154. package/dist/common/interactive/dialog-wrapper.js.map +1 -0
  155. package/dist/common/interactive/dialog-wrapper.mjs +102 -0
  156. package/dist/common/interactive/dialog-wrapper.mjs.map +1 -0
  157. package/dist/common/interactive/filter.js +287 -0
  158. package/dist/common/interactive/filter.js.map +1 -0
  159. package/dist/common/interactive/filter.mjs +280 -0
  160. package/dist/common/interactive/filter.mjs.map +1 -0
  161. package/dist/common/interactive/index.js +235 -0
  162. package/dist/common/interactive/index.js.map +1 -0
  163. package/dist/common/interactive/index.mjs +24 -0
  164. package/dist/common/interactive/index.mjs.map +1 -0
  165. package/dist/common/interactive/list.js +160 -0
  166. package/dist/common/interactive/list.js.map +1 -0
  167. package/dist/common/interactive/list.mjs +134 -0
  168. package/dist/common/interactive/list.mjs.map +1 -0
  169. package/dist/common/interactive/otp-dialog/index.js +35 -0
  170. package/dist/common/interactive/otp-dialog/index.js.map +1 -0
  171. package/dist/common/interactive/otp-dialog/index.mjs +6 -0
  172. package/dist/common/interactive/otp-dialog/index.mjs.map +1 -0
  173. package/dist/common/interactive/otp-dialog/otp-dialog.js +325 -0
  174. package/dist/common/interactive/otp-dialog/otp-dialog.js.map +1 -0
  175. package/dist/common/interactive/otp-dialog/otp-dialog.mjs +303 -0
  176. package/dist/common/interactive/otp-dialog/otp-dialog.mjs.map +1 -0
  177. package/dist/common/interactive/otp-dialog/reducer.js +40 -0
  178. package/dist/common/interactive/otp-dialog/reducer.js.map +1 -0
  179. package/dist/common/interactive/otp-dialog/reducer.mjs +37 -0
  180. package/dist/common/interactive/otp-dialog/reducer.mjs.map +1 -0
  181. package/dist/common/interactive/otp-dialog/types.js +15 -0
  182. package/dist/common/interactive/otp-dialog/types.js.map +1 -0
  183. package/dist/common/interactive/otp-dialog/types.mjs +13 -0
  184. package/dist/common/interactive/otp-dialog/types.mjs.map +1 -0
  185. package/dist/common/interactive/otp-dialog/utils.js +24 -0
  186. package/dist/common/interactive/otp-dialog/utils.js.map +1 -0
  187. package/dist/common/interactive/otp-dialog/utils.mjs +21 -0
  188. package/dist/common/interactive/otp-dialog/utils.mjs.map +1 -0
  189. package/dist/common/interactive/pagination/PaginationSkeleton.js +51 -0
  190. package/dist/common/interactive/pagination/PaginationSkeleton.js.map +1 -0
  191. package/dist/common/interactive/pagination/PaginationSkeleton.mjs +49 -0
  192. package/dist/common/interactive/pagination/PaginationSkeleton.mjs.map +1 -0
  193. package/dist/common/interactive/pagination/index.js +235 -0
  194. package/dist/common/interactive/pagination/index.js.map +1 -0
  195. package/dist/common/interactive/pagination/index.mjs +223 -0
  196. package/dist/common/interactive/pagination/index.mjs.map +1 -0
  197. package/dist/common/interactive/pagination/usePagination.js +28 -0
  198. package/dist/common/interactive/pagination/usePagination.js.map +1 -0
  199. package/dist/common/interactive/pagination/usePagination.mjs +25 -0
  200. package/dist/common/interactive/pagination/usePagination.mjs.map +1 -0
  201. package/dist/common/interactive/popover-wrapper.js +138 -0
  202. package/dist/common/interactive/popover-wrapper.js.map +1 -0
  203. package/dist/common/interactive/popover-wrapper.mjs +116 -0
  204. package/dist/common/interactive/popover-wrapper.mjs.map +1 -0
  205. package/dist/common/interactive/pressable.js +84 -0
  206. package/dist/common/interactive/pressable.js.map +1 -0
  207. package/dist/common/interactive/pressable.mjs +62 -0
  208. package/dist/common/interactive/pressable.mjs.map +1 -0
  209. package/dist/common/interactive/select/context.js +38 -0
  210. package/dist/common/interactive/select/context.js.map +1 -0
  211. package/dist/common/interactive/select/context.mjs +14 -0
  212. package/dist/common/interactive/select/context.mjs.map +1 -0
  213. package/dist/common/interactive/select/index.js +123 -0
  214. package/dist/common/interactive/select/index.js.map +1 -0
  215. package/dist/common/interactive/select/index.mjs +18 -0
  216. package/dist/common/interactive/select/index.mjs.map +1 -0
  217. package/dist/common/interactive/select/select-body.js +89 -0
  218. package/dist/common/interactive/select/select-body.js.map +1 -0
  219. package/dist/common/interactive/select/select-body.mjs +67 -0
  220. package/dist/common/interactive/select/select-body.mjs.map +1 -0
  221. package/dist/common/interactive/select/select-close.js +38 -0
  222. package/dist/common/interactive/select/select-close.js.map +1 -0
  223. package/dist/common/interactive/select/select-close.mjs +16 -0
  224. package/dist/common/interactive/select/select-close.mjs.map +1 -0
  225. package/dist/common/interactive/select/select-content-auto-layout.js +221 -0
  226. package/dist/common/interactive/select/select-content-auto-layout.js.map +1 -0
  227. package/dist/common/interactive/select/select-content-auto-layout.mjs +199 -0
  228. package/dist/common/interactive/select/select-content-auto-layout.mjs.map +1 -0
  229. package/dist/common/interactive/select/select-content-group-auto-layout.js +411 -0
  230. package/dist/common/interactive/select/select-content-group-auto-layout.js.map +1 -0
  231. package/dist/common/interactive/select/select-content-group-auto-layout.mjs +389 -0
  232. package/dist/common/interactive/select/select-content-group-auto-layout.mjs.map +1 -0
  233. package/dist/common/interactive/select/select-content.js +187 -0
  234. package/dist/common/interactive/select/select-content.js.map +1 -0
  235. package/dist/common/interactive/select/select-content.mjs +165 -0
  236. package/dist/common/interactive/select/select-content.mjs.map +1 -0
  237. package/dist/common/interactive/select/select-footer.js +82 -0
  238. package/dist/common/interactive/select/select-footer.js.map +1 -0
  239. package/dist/common/interactive/select/select-footer.mjs +60 -0
  240. package/dist/common/interactive/select/select-footer.mjs.map +1 -0
  241. package/dist/common/interactive/select/select-item.js +214 -0
  242. package/dist/common/interactive/select/select-item.js.map +1 -0
  243. package/dist/common/interactive/select/select-item.mjs +191 -0
  244. package/dist/common/interactive/select/select-item.mjs.map +1 -0
  245. package/dist/common/interactive/select/select-layout.js +66 -0
  246. package/dist/common/interactive/select/select-layout.js.map +1 -0
  247. package/dist/common/interactive/select/select-layout.mjs +41 -0
  248. package/dist/common/interactive/select/select-layout.mjs.map +1 -0
  249. package/dist/common/interactive/select/select-search.js +55 -0
  250. package/dist/common/interactive/select/select-search.js.map +1 -0
  251. package/dist/common/interactive/select/select-search.mjs +33 -0
  252. package/dist/common/interactive/select/select-search.mjs.map +1 -0
  253. package/dist/common/interactive/select/select-states.js +57 -0
  254. package/dist/common/interactive/select/select-states.js.map +1 -0
  255. package/dist/common/interactive/select/select-states.mjs +34 -0
  256. package/dist/common/interactive/select/select-states.mjs.map +1 -0
  257. package/dist/common/interactive/select/select-trigger.js +310 -0
  258. package/dist/common/interactive/select/select-trigger.js.map +1 -0
  259. package/dist/common/interactive/select/select-trigger.mjs +286 -0
  260. package/dist/common/interactive/select/select-trigger.mjs.map +1 -0
  261. package/dist/common/interactive/select/select-value.js +52 -0
  262. package/dist/common/interactive/select/select-value.js.map +1 -0
  263. package/dist/common/interactive/select/select-value.mjs +30 -0
  264. package/dist/common/interactive/select/select-value.mjs.map +1 -0
  265. package/dist/common/interactive/select/select.js +184 -0
  266. package/dist/common/interactive/select/select.js.map +1 -0
  267. package/dist/common/interactive/select/select.mjs +162 -0
  268. package/dist/common/interactive/select/select.mjs.map +1 -0
  269. package/dist/common/interactive/select/types.js +4 -0
  270. package/dist/common/interactive/select/types.js.map +1 -0
  271. package/dist/common/interactive/select/types.mjs +3 -0
  272. package/dist/common/interactive/select/types.mjs.map +1 -0
  273. package/dist/common/interactive/select/utils.js +31 -0
  274. package/dist/common/interactive/select/utils.js.map +1 -0
  275. package/dist/common/interactive/select/utils.mjs +28 -0
  276. package/dist/common/interactive/select/utils.mjs.map +1 -0
  277. package/dist/common/interactive/select/variants.js +27 -0
  278. package/dist/common/interactive/select/variants.js.map +1 -0
  279. package/dist/common/interactive/select/variants.mjs +25 -0
  280. package/dist/common/interactive/select/variants.mjs.map +1 -0
  281. package/dist/common/interactive/select-chip.js +76 -0
  282. package/dist/common/interactive/select-chip.js.map +1 -0
  283. package/dist/common/interactive/select-chip.mjs +74 -0
  284. package/dist/common/interactive/select-chip.mjs.map +1 -0
  285. package/dist/common/interactive/select-level.js +236 -0
  286. package/dist/common/interactive/select-level.js.map +1 -0
  287. package/dist/common/interactive/select-level.mjs +230 -0
  288. package/dist/common/interactive/select-level.mjs.map +1 -0
  289. package/dist/common/interactive/select-range.js +211 -0
  290. package/dist/common/interactive/select-range.js.map +1 -0
  291. package/dist/common/interactive/select-range.mjs +209 -0
  292. package/dist/common/interactive/select-range.mjs.map +1 -0
  293. package/dist/common/interactive/select-with-api.js +767 -0
  294. package/dist/common/interactive/select-with-api.js.map +1 -0
  295. package/dist/common/interactive/select-with-api.mjs +758 -0
  296. package/dist/common/interactive/select-with-api.mjs.map +1 -0
  297. package/dist/common/interactive/select.js +15 -0
  298. package/dist/common/interactive/select.js.map +1 -0
  299. package/dist/common/interactive/select.mjs +4 -0
  300. package/dist/common/interactive/select.mjs.map +1 -0
  301. package/dist/common/interactive/sheet-wrapper.js +105 -0
  302. package/dist/common/interactive/sheet-wrapper.js.map +1 -0
  303. package/dist/common/interactive/sheet-wrapper.mjs +83 -0
  304. package/dist/common/interactive/sheet-wrapper.mjs.map +1 -0
  305. package/dist/common/interactive/table/enhanced-table.js +390 -0
  306. package/dist/common/interactive/table/enhanced-table.js.map +1 -0
  307. package/dist/common/interactive/table/enhanced-table.mjs +388 -0
  308. package/dist/common/interactive/table/enhanced-table.mjs.map +1 -0
  309. package/dist/common/interactive/table/index.js +83 -0
  310. package/dist/common/interactive/table/index.js.map +1 -0
  311. package/dist/common/interactive/table/index.mjs +68 -0
  312. package/dist/common/interactive/table/index.mjs.map +1 -0
  313. package/dist/common/interactive/table/table-pagination.js +12 -0
  314. package/dist/common/interactive/table/table-pagination.js.map +1 -0
  315. package/dist/common/interactive/table/table-pagination.mjs +10 -0
  316. package/dist/common/interactive/table/table-pagination.mjs.map +1 -0
  317. package/dist/common/interactive/table/types.js +4 -0
  318. package/dist/common/interactive/table/types.js.map +1 -0
  319. package/dist/common/interactive/table/types.mjs +3 -0
  320. package/dist/common/interactive/table/types.mjs.map +1 -0
  321. package/dist/common/interactive/time-picker.js +313 -0
  322. package/dist/common/interactive/time-picker.js.map +1 -0
  323. package/dist/common/interactive/time-picker.mjs +307 -0
  324. package/dist/common/interactive/time-picker.mjs.map +1 -0
  325. package/dist/common/interactive/types.js +4 -0
  326. package/dist/common/interactive/types.js.map +1 -0
  327. package/dist/common/interactive/types.mjs +3 -0
  328. package/dist/common/interactive/types.mjs.map +1 -0
  329. package/dist/common/pages/page-404.js +16 -0
  330. package/dist/common/pages/page-404.js.map +1 -0
  331. package/dist/common/pages/page-404.mjs +11 -0
  332. package/dist/common/pages/page-404.mjs.map +1 -0
  333. package/dist/common/pages/page-500.js +30 -0
  334. package/dist/common/pages/page-500.js.map +1 -0
  335. package/dist/common/pages/page-500.mjs +25 -0
  336. package/dist/common/pages/page-500.mjs.map +1 -0
  337. package/dist/components/accordion.js +65 -0
  338. package/dist/components/accordion.js.map +1 -0
  339. package/dist/components/accordion.mjs +39 -0
  340. package/dist/components/accordion.mjs.map +1 -0
  341. package/dist/components/alert-dialog.js +231 -0
  342. package/dist/components/alert-dialog.js.map +1 -0
  343. package/dist/components/alert-dialog.mjs +197 -0
  344. package/dist/components/alert-dialog.mjs.map +1 -0
  345. package/dist/components/alert.js +97 -0
  346. package/dist/components/alert.js.map +1 -0
  347. package/dist/components/alert.mjs +72 -0
  348. package/dist/components/alert.mjs.map +1 -0
  349. package/dist/components/aspect-ratio.js +29 -0
  350. package/dist/components/aspect-ratio.js.map +1 -0
  351. package/dist/components/aspect-ratio.mjs +7 -0
  352. package/dist/components/aspect-ratio.mjs.map +1 -0
  353. package/dist/components/avatar.js +64 -0
  354. package/dist/components/avatar.js.map +1 -0
  355. package/dist/components/avatar.mjs +39 -0
  356. package/dist/components/avatar.mjs.map +1 -0
  357. package/dist/components/badge.js +72 -0
  358. package/dist/components/badge.js.map +1 -0
  359. package/dist/components/badge.mjs +69 -0
  360. package/dist/components/badge.mjs.map +1 -0
  361. package/dist/components/breadcrumb.js +109 -0
  362. package/dist/components/breadcrumb.js.map +1 -0
  363. package/dist/components/breadcrumb.mjs +81 -0
  364. package/dist/components/breadcrumb.mjs.map +1 -0
  365. package/dist/components/button.js +250 -0
  366. package/dist/components/button.js.map +1 -0
  367. package/dist/components/button.mjs +226 -0
  368. package/dist/components/button.mjs.map +1 -0
  369. package/dist/components/calendar.js +681 -0
  370. package/dist/components/calendar.js.map +1 -0
  371. package/dist/components/calendar.mjs +659 -0
  372. package/dist/components/calendar.mjs.map +1 -0
  373. package/dist/components/card.js +98 -0
  374. package/dist/components/card.js.map +1 -0
  375. package/dist/components/card.mjs +71 -0
  376. package/dist/components/card.mjs.map +1 -0
  377. package/dist/components/carousel.js +237 -0
  378. package/dist/components/carousel.js.map +1 -0
  379. package/dist/components/carousel.mjs +208 -0
  380. package/dist/components/carousel.mjs.map +1 -0
  381. package/dist/components/chart.js +252 -0
  382. package/dist/components/chart.js.map +1 -0
  383. package/dist/components/chart.mjs +224 -0
  384. package/dist/components/chart.mjs.map +1 -0
  385. package/dist/components/checkbox.js +97 -0
  386. package/dist/components/checkbox.js.map +1 -0
  387. package/dist/components/checkbox.mjs +74 -0
  388. package/dist/components/checkbox.mjs.map +1 -0
  389. package/dist/components/chip.js +88 -0
  390. package/dist/components/chip.js.map +1 -0
  391. package/dist/components/chip.mjs +82 -0
  392. package/dist/components/chip.mjs.map +1 -0
  393. package/dist/components/collapsible.js +33 -0
  394. package/dist/components/collapsible.js.map +1 -0
  395. package/dist/components/collapsible.mjs +9 -0
  396. package/dist/components/collapsible.mjs.map +1 -0
  397. package/dist/components/command.js +125 -0
  398. package/dist/components/command.js.map +1 -0
  399. package/dist/components/command.mjs +95 -0
  400. package/dist/components/command.mjs.map +1 -0
  401. package/dist/components/context-menu.js +168 -0
  402. package/dist/components/context-menu.js.map +1 -0
  403. package/dist/components/context-menu.mjs +131 -0
  404. package/dist/components/context-menu.mjs.map +1 -0
  405. package/dist/components/dialog.js +192 -0
  406. package/dist/components/dialog.js.map +1 -0
  407. package/dist/components/dialog.mjs +159 -0
  408. package/dist/components/dialog.mjs.map +1 -0
  409. package/dist/components/drawer.js +98 -0
  410. package/dist/components/drawer.js.map +1 -0
  411. package/dist/components/drawer.mjs +67 -0
  412. package/dist/components/drawer.mjs.map +1 -0
  413. package/dist/components/dropdown-menu.js +163 -0
  414. package/dist/components/dropdown-menu.js.map +1 -0
  415. package/dist/components/dropdown-menu.mjs +126 -0
  416. package/dist/components/dropdown-menu.mjs.map +1 -0
  417. package/dist/components/form.js +123 -0
  418. package/dist/components/form.js.map +1 -0
  419. package/dist/components/form.mjs +94 -0
  420. package/dist/components/form.mjs.map +1 -0
  421. package/dist/components/hover-card.js +50 -0
  422. package/dist/components/hover-card.js.map +1 -0
  423. package/dist/components/hover-card.mjs +25 -0
  424. package/dist/components/hover-card.mjs.map +1 -0
  425. package/dist/components/input-otp.js +84 -0
  426. package/dist/components/input-otp.js.map +1 -0
  427. package/dist/components/input-otp.mjs +59 -0
  428. package/dist/components/input-otp.mjs.map +1 -0
  429. package/dist/components/input.js +858 -0
  430. package/dist/components/input.js.map +1 -0
  431. package/dist/components/input.mjs +831 -0
  432. package/dist/components/input.mjs.map +1 -0
  433. package/dist/components/label.js +38 -0
  434. package/dist/components/label.js.map +1 -0
  435. package/dist/components/label.mjs +15 -0
  436. package/dist/components/label.mjs.map +1 -0
  437. package/dist/components/lottie.js +59 -0
  438. package/dist/components/lottie.js.map +1 -0
  439. package/dist/components/lottie.mjs +49 -0
  440. package/dist/components/lottie.mjs.map +1 -0
  441. package/dist/components/menubar.js +195 -0
  442. package/dist/components/menubar.js.map +1 -0
  443. package/dist/components/menubar.mjs +157 -0
  444. package/dist/components/menubar.mjs.map +1 -0
  445. package/dist/components/navigation-menu.js +126 -0
  446. package/dist/components/navigation-menu.js.map +1 -0
  447. package/dist/components/navigation-menu.mjs +95 -0
  448. package/dist/components/navigation-menu.mjs.map +1 -0
  449. package/dist/components/pagination.js +112 -0
  450. package/dist/components/pagination.js.map +1 -0
  451. package/dist/components/pagination.mjs +84 -0
  452. package/dist/components/pagination.mjs.map +1 -0
  453. package/dist/components/popover.js +63 -0
  454. package/dist/components/popover.js.map +1 -0
  455. package/dist/components/popover.mjs +38 -0
  456. package/dist/components/popover.mjs.map +1 -0
  457. package/dist/components/progress.js +50 -0
  458. package/dist/components/progress.js.map +1 -0
  459. package/dist/components/progress.mjs +27 -0
  460. package/dist/components/progress.mjs.map +1 -0
  461. package/dist/components/radio-group.js +91 -0
  462. package/dist/components/radio-group.js.map +1 -0
  463. package/dist/components/radio-group.mjs +67 -0
  464. package/dist/components/radio-group.mjs.map +1 -0
  465. package/dist/components/resizable.js +59 -0
  466. package/dist/components/resizable.js.map +1 -0
  467. package/dist/components/resizable.mjs +35 -0
  468. package/dist/components/resizable.mjs.map +1 -0
  469. package/dist/components/responsive-popover.js +74 -0
  470. package/dist/components/responsive-popover.js.map +1 -0
  471. package/dist/components/responsive-popover.mjs +50 -0
  472. package/dist/components/responsive-popover.mjs.map +1 -0
  473. package/dist/components/scroll-area.js +63 -0
  474. package/dist/components/scroll-area.js.map +1 -0
  475. package/dist/components/scroll-area.mjs +39 -0
  476. package/dist/components/scroll-area.mjs.map +1 -0
  477. package/dist/components/separator.js +47 -0
  478. package/dist/components/separator.js.map +1 -0
  479. package/dist/components/separator.mjs +24 -0
  480. package/dist/components/separator.mjs.map +1 -0
  481. package/dist/components/sheet.js +239 -0
  482. package/dist/components/sheet.js.map +1 -0
  483. package/dist/components/sheet.mjs +206 -0
  484. package/dist/components/sheet.mjs.map +1 -0
  485. package/dist/components/sidebar.js +888 -0
  486. package/dist/components/sidebar.js.map +1 -0
  487. package/dist/components/sidebar.mjs +842 -0
  488. package/dist/components/sidebar.mjs.map +1 -0
  489. package/dist/components/skeleton.js +153 -0
  490. package/dist/components/skeleton.js.map +1 -0
  491. package/dist/components/skeleton.mjs +127 -0
  492. package/dist/components/skeleton.mjs.map +1 -0
  493. package/dist/components/slider.js +45 -0
  494. package/dist/components/slider.js.map +1 -0
  495. package/dist/components/slider.mjs +22 -0
  496. package/dist/components/slider.mjs.map +1 -0
  497. package/dist/components/sonner.js +76 -0
  498. package/dist/components/sonner.js.map +1 -0
  499. package/dist/components/sonner.mjs +71 -0
  500. package/dist/components/sonner.mjs.map +1 -0
  501. package/dist/components/spinner.js +59 -0
  502. package/dist/components/spinner.js.map +1 -0
  503. package/dist/components/spinner.mjs +36 -0
  504. package/dist/components/spinner.mjs.map +1 -0
  505. package/dist/components/stepper.js +726 -0
  506. package/dist/components/stepper.js.map +1 -0
  507. package/dist/components/stepper.mjs +702 -0
  508. package/dist/components/stepper.mjs.map +1 -0
  509. package/dist/components/switch.js +85 -0
  510. package/dist/components/switch.js.map +1 -0
  511. package/dist/components/switch.mjs +62 -0
  512. package/dist/components/switch.mjs.map +1 -0
  513. package/dist/components/table.js +91 -0
  514. package/dist/components/table.js.map +1 -0
  515. package/dist/components/table.mjs +62 -0
  516. package/dist/components/table.mjs.map +1 -0
  517. package/dist/components/tabs.js +287 -0
  518. package/dist/components/tabs.js.map +1 -0
  519. package/dist/components/tabs.mjs +261 -0
  520. package/dist/components/tabs.mjs.map +1 -0
  521. package/dist/components/textarea.js +200 -0
  522. package/dist/components/textarea.js.map +1 -0
  523. package/dist/components/textarea.mjs +174 -0
  524. package/dist/components/textarea.mjs.map +1 -0
  525. package/dist/components/toggle-group.js +67 -0
  526. package/dist/components/toggle-group.js.map +1 -0
  527. package/dist/components/toggle-group.mjs +43 -0
  528. package/dist/components/toggle-group.mjs.map +1 -0
  529. package/dist/components/toggle.js +63 -0
  530. package/dist/components/toggle.js.map +1 -0
  531. package/dist/components/toggle.mjs +39 -0
  532. package/dist/components/toggle.mjs.map +1 -0
  533. package/dist/components/tooltip.js +172 -0
  534. package/dist/components/tooltip.js.map +1 -0
  535. package/dist/components/tooltip.mjs +145 -0
  536. package/dist/components/tooltip.mjs.map +1 -0
  537. package/dist/hooks/index.js +27 -0
  538. package/dist/hooks/index.js.map +1 -0
  539. package/dist/hooks/index.mjs +6 -0
  540. package/dist/hooks/index.mjs.map +1 -0
  541. package/dist/hooks/useCopyToClipboard.js +59 -0
  542. package/dist/hooks/useCopyToClipboard.js.map +1 -0
  543. package/dist/hooks/useCopyToClipboard.mjs +57 -0
  544. package/dist/hooks/useCopyToClipboard.mjs.map +1 -0
  545. package/dist/hooks/useDevice.js +20 -0
  546. package/dist/hooks/useDevice.js.map +1 -0
  547. package/dist/hooks/useDevice.mjs +14 -0
  548. package/dist/hooks/useDevice.mjs.map +1 -0
  549. package/dist/hooks/useDialogTracking.js +113 -0
  550. package/dist/hooks/useDialogTracking.js.map +1 -0
  551. package/dist/hooks/useDialogTracking.mjs +91 -0
  552. package/dist/hooks/useDialogTracking.mjs.map +1 -0
  553. package/dist/hooks/useIsMounted.js +15 -0
  554. package/dist/hooks/useIsMounted.js.map +1 -0
  555. package/dist/hooks/useIsMounted.mjs +13 -0
  556. package/dist/hooks/useIsMounted.mjs.map +1 -0
  557. package/dist/hooks/usePathname.js +85 -0
  558. package/dist/hooks/usePathname.js.map +1 -0
  559. package/dist/hooks/usePathname.mjs +83 -0
  560. package/dist/hooks/usePathname.mjs.map +1 -0
  561. package/dist/icons.js +14 -0
  562. package/dist/icons.js.map +1 -0
  563. package/dist/icons.mjs +3 -0
  564. package/dist/icons.mjs.map +1 -0
  565. package/dist/index.d.ts +4 -0
  566. package/dist/index.d.ts.map +1 -1
  567. package/dist/index.js +403 -8151
  568. package/dist/index.js.map +1 -1
  569. package/dist/index.mjs +62 -7844
  570. package/dist/index.mjs.map +1 -1
  571. package/dist/lib/formatCurrency.js +187 -0
  572. package/dist/lib/formatCurrency.js.map +1 -0
  573. package/dist/lib/formatCurrency.mjs +185 -0
  574. package/dist/lib/formatCurrency.mjs.map +1 -0
  575. package/dist/lib/helpers.js +171 -0
  576. package/dist/lib/helpers.js.map +1 -0
  577. package/dist/lib/helpers.mjs +157 -0
  578. package/dist/lib/helpers.mjs.map +1 -0
  579. package/dist/lib/index.js +33 -0
  580. package/dist/lib/index.js.map +1 -0
  581. package/dist/lib/index.mjs +6 -0
  582. package/dist/lib/index.mjs.map +1 -0
  583. package/dist/lib/types.js +11 -0
  584. package/dist/lib/types.js.map +1 -0
  585. package/dist/lib/types.mjs +9 -0
  586. package/dist/lib/types.mjs.map +1 -0
  587. package/dist/lib/utils.js +24 -0
  588. package/dist/lib/utils.js.map +1 -0
  589. package/dist/lib/utils.mjs +19 -0
  590. package/dist/lib/utils.mjs.map +1 -0
  591. package/dist/providers/DeviceSizeWatcher/index.js +72 -0
  592. package/dist/providers/DeviceSizeWatcher/index.js.map +1 -0
  593. package/dist/providers/DeviceSizeWatcher/index.mjs +47 -0
  594. package/dist/providers/DeviceSizeWatcher/index.mjs.map +1 -0
  595. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js +22 -0
  596. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js.map +1 -0
  597. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs +20 -0
  598. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs.map +1 -0
  599. package/dist/providers/UISystemProvider.js +197 -0
  600. package/dist/providers/UISystemProvider.js.map +1 -0
  601. package/dist/providers/UISystemProvider.mjs +188 -0
  602. package/dist/providers/UISystemProvider.mjs.map +1 -0
  603. package/dist/providers/index.js +24 -0
  604. package/dist/providers/index.js.map +1 -0
  605. package/dist/providers/index.mjs +3 -0
  606. package/dist/providers/index.mjs.map +1 -0
  607. package/dist/theme.js +333 -0
  608. package/dist/theme.js.map +1 -0
  609. package/dist/theme.mjs +327 -0
  610. package/dist/theme.mjs.map +1 -0
  611. package/package.json +1 -1
  612. package/dist/index.css +0 -43
  613. package/dist/index.css.map +0 -1
@@ -0,0 +1,250 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var reactSlot = require('@radix-ui/react-slot');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var React = require('react');
7
+ var types = require('@/lib/types');
8
+ var utils = require('@/lib/utils');
9
+ var UISystemProvider = require('@/providers/UISystemProvider');
10
+ var spinner = require('./spinner');
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+
32
+ const buttonVariants = classVarianceAuthority.cva(
33
+ "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",
34
+ {
35
+ variants: {
36
+ variant: {
37
+ default: "bg-primary text-primary-foreground icon-primary-foreground hover:bg-primary/90",
38
+ destructive: "bg-destructive text-destructive-foreground icon-destructive-foreground hover:bg-destructive/90",
39
+ outline: "border border-input bg-background hover:bg-accent hover:border-accent",
40
+ secondary: "bg-secondary border border-primary text-secondary-foreground icon-secondary-foreground hover:bg-accent active:bg-accent/80",
41
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:icon-accent-foreground",
42
+ link: "text-primary icon-primary underline-offset-4 hover:underline",
43
+ plain: "text-primary icon-primary hover:text-primary/80 w-max h-max",
44
+ "plain-error": "text-red-500 hover:text-red-500/80 w-max h-max",
45
+ icon: "bg-card text-foreground icon-foreground hover:bg-muted border border-border rounded-full shadow [&_svg]:size-6",
46
+ // Primary variants with solid colors
47
+ "primary-success": "bg-green-500 text-white icon-white hover:bg-green-600 active:bg-green-700",
48
+ "primary-warning": "bg-yellow-500 text-white icon-white hover:bg-yellow-600 active:bg-yellow-700",
49
+ "primary-info": "bg-blue-500 text-white icon-white hover:bg-primary active:bg-blue-700",
50
+ "primary-error": "bg-red-500 text-white icon-white hover:bg-red-600 active:bg-red-700",
51
+ // Soft variants with lighter backgrounds
52
+ "soft-success": "bg-green-50 text-green-600 icon-green-600 hover:bg-green-100 active:bg-green-200 border border-green-200",
53
+ "soft-warning": "bg-yellow-50 text-yellow-600 icon-yellow-600 hover:bg-yellow-100 active:bg-yellow-200 border border-yellow-200",
54
+ "soft-info": "bg-blue-50 text-primary icon-primary hover:bg-blue-100 active:bg-blue-200 border border-blue-200",
55
+ "soft-error": "bg-red-50 text-red-600 icon-red-600 hover:bg-red-100 active:bg-red-200 border border-red-200",
56
+ // Primary variants with solid colors
57
+ "heavy-success": "bg-green-500 text-white icon-white hover:bg-green-600 active:bg-green-700",
58
+ "heavy-warning": "bg-yellow-500 text-white icon-white hover:bg-yellow-600 active:bg-yellow-700",
59
+ "heavy-info": "bg-blue-500 text-white icon-white hover:bg-primary active:bg-blue-700",
60
+ "heavy-error": "bg-red-500 text-white icon-white hover:bg-red-600 active:bg-red-700",
61
+ // Soft variants with lighter backgrounds
62
+ "light-success": "bg-green-50 text-green-600 icon-green-600 hover:bg-green-100 active:bg-green-200 border border-green-200",
63
+ "light-warning": "bg-yellow-50 text-yellow-600 icon-yellow-600 hover:bg-yellow-100 active:bg-yellow-200 border border-yellow-200",
64
+ "light-info": "bg-blue-50 text-primary icon-primary hover:bg-blue-100 active:bg-blue-200 border border-blue-200",
65
+ "light-error": "bg-red-50 text-red-600 icon-red-600 hover:bg-red-100 active:bg-red-200 border border-red-200",
66
+ // Outline variants with borders
67
+ "outline-success": "border border-green-500 bg-transparent text-green-600 icon-green-600 hover:bg-green-50 active:bg-green-100",
68
+ "outline-warning": "border border-yellow-600 bg-transparent text-yellow-600 icon-yellow-600 hover:bg-yellow-50 active:bg-yellow-100",
69
+ "outline-info": "border border-blue-500 bg-transparent text-primary icon-primary hover:bg-blue-50 active:bg-blue-100",
70
+ "outline-error": "border border-red-500 bg-transparent text-red-600 icon-red-600 hover:bg-red-50 active:bg-red-100"
71
+ },
72
+ rounded: {
73
+ none: "rounded-none",
74
+ sm: "rounded-sm",
75
+ md: "rounded-md",
76
+ lg: "rounded-lg",
77
+ xl: "rounded-xl",
78
+ full: "rounded-full"
79
+ },
80
+ size: {
81
+ default: "h-12 px-3 py-2",
82
+ sm: "h-10 px-3 py-2 [&_svg]:size-4",
83
+ lg: "h-14 px-3 py-2",
84
+ icon: "h-10 w-10"
85
+ }
86
+ },
87
+ defaultVariants: {
88
+ variant: "default",
89
+ size: "default",
90
+ rounded: "md"
91
+ }
92
+ }
93
+ );
94
+ const Button = React__namespace.forwardRef(
95
+ ({
96
+ className,
97
+ trackingData,
98
+ trackingIndex,
99
+ trackingName,
100
+ blockSendTracking,
101
+ variant,
102
+ size,
103
+ rounded,
104
+ asChild = false,
105
+ loading = false,
106
+ children,
107
+ onClick,
108
+ disabled,
109
+ ...props
110
+ }, ref) => {
111
+ const Comp = asChild ? reactSlot.Slot : "button";
112
+ const getSpinnerVariant = () => {
113
+ if (variant === "default" || variant === "primary-success" || variant === "primary-warning" || variant === "primary-info" || variant === "primary-error") {
114
+ return "white";
115
+ }
116
+ if (variant === "soft-success") return "success";
117
+ if (variant === "soft-warning") return "warning";
118
+ if (variant === "soft-info") return "info";
119
+ if (variant === "soft-error") return "error";
120
+ if (variant === "outline-success") return "success";
121
+ if (variant === "outline-warning") return "warning";
122
+ if (variant === "outline-info") return "info";
123
+ if (variant === "outline-error") return "error";
124
+ if (variant === "destructive") return "white";
125
+ return "primary";
126
+ };
127
+ const spinnerVariant = getSpinnerVariant();
128
+ const { sendTrack } = UISystemProvider.useUISystemContext() || {};
129
+ const onClickFn = (e) => {
130
+ if (disabled || loading) {
131
+ return;
132
+ }
133
+ onClick?.(e);
134
+ if (!sendTrack || blockSendTracking) return;
135
+ const targetElm = e.target;
136
+ const buttonText = targetElm.innerText || targetElm.textContent || "";
137
+ const finalTrackingName = trackingName || `click_btn_${trackingData?.identity}`;
138
+ const otherData = {};
139
+ if (trackingIndex !== void 0 && trackingIndex !== null) {
140
+ otherData.index = trackingIndex;
141
+ }
142
+ const mergedTrackingData = { ...trackingData };
143
+ if (!mergedTrackingData.object_name && buttonText) {
144
+ mergedTrackingData.object_name = buttonText.trim();
145
+ }
146
+ sendTrack(finalTrackingName, types.TRACKING_TYPE.click, {
147
+ ...otherData,
148
+ ...mergedTrackingData
149
+ });
150
+ };
151
+ const isIconElement = (element) => {
152
+ if (element.type === "svg") {
153
+ return true;
154
+ }
155
+ const getComponentName = (type) => {
156
+ if (!type) return "";
157
+ if (type.displayName) return type.displayName;
158
+ if (type.name) return type.name;
159
+ if (type.$$typeof === /* @__PURE__ */ Symbol.for("react.memo") && type.type) {
160
+ return getComponentName(type.type);
161
+ }
162
+ if (type.$$typeof === /* @__PURE__ */ Symbol.for("react.forward_ref") && type.render) {
163
+ return getComponentName(type.render);
164
+ }
165
+ return "";
166
+ };
167
+ if (element.type) {
168
+ const componentName = getComponentName(element.type);
169
+ const lowerName = componentName.toLowerCase();
170
+ if (lowerName.includes("icon") || lowerName.includes("svg") || componentName.match(/Icon\d+$/) || // Matches Icon16, Icon24, etc.
171
+ componentName.match(/^[A-Z][a-zA-Z]*Icon/)) {
172
+ return true;
173
+ }
174
+ }
175
+ if (element.props?.className && typeof element.props.className === "string") {
176
+ const className2 = element.props.className;
177
+ if (className2.includes("ic-") || className2.includes("icon-")) {
178
+ return true;
179
+ }
180
+ }
181
+ if (element.props?.viewBox || element.props?.xmlns === "http://www.w3.org/2000/svg") {
182
+ return true;
183
+ }
184
+ return false;
185
+ };
186
+ const filterChildren = (children2) => {
187
+ return React__namespace.Children.map(children2, (child) => {
188
+ if (!React__namespace.isValidElement(child)) {
189
+ return child;
190
+ }
191
+ if (isIconElement(child)) {
192
+ return null;
193
+ }
194
+ if ((child.type === "div" || child.type === "span") && child.props?.children) {
195
+ const filteredChildren = filterChildren(child.props.children);
196
+ const hasContent = React__namespace.Children.toArray(filteredChildren).some(
197
+ (c) => c !== null && c !== void 0
198
+ );
199
+ if (!hasContent) {
200
+ return null;
201
+ }
202
+ return React__namespace.cloneElement(child, {}, filteredChildren);
203
+ }
204
+ return child;
205
+ });
206
+ };
207
+ const renderChildren = () => {
208
+ if (!loading) return children;
209
+ return filterChildren(children);
210
+ };
211
+ const finalRounded = size === "icon" && rounded === void 0 ? "full" : rounded;
212
+ return /* @__PURE__ */ jsxRuntime.jsxs(
213
+ Comp,
214
+ {
215
+ className: utils.cn(buttonVariants({ variant, size, rounded: finalRounded, className })),
216
+ ref,
217
+ onClick: onClickFn,
218
+ disabled: disabled && !loading,
219
+ "data-loading": loading,
220
+ ...props,
221
+ children: [
222
+ loading && /* @__PURE__ */ jsxRuntime.jsx(spinner.Spinner, { size: "sm", variant: spinnerVariant }),
223
+ renderChildren()
224
+ ]
225
+ }
226
+ );
227
+ }
228
+ );
229
+ Button.displayName = "Button";
230
+ const buttonGroupVariants = classVarianceAuthority.cva("flex", {
231
+ variants: {
232
+ direction: {
233
+ horizontal: "space-x-3",
234
+ vertical: "space-y-2"
235
+ }
236
+ }
237
+ });
238
+ const ButtonGroup = React__namespace.forwardRef(
239
+ ({ asChild, className, direction = "horizontal", ...props }, ref) => {
240
+ const Comp = asChild ? reactSlot.Slot : "div";
241
+ return /* @__PURE__ */ jsxRuntime.jsx(Comp, { ref, className: utils.cn(buttonGroupVariants({ direction, className })), ...props });
242
+ }
243
+ );
244
+ ButtonGroup.displayName = "ButtonGroup";
245
+
246
+ exports.Button = Button;
247
+ exports.ButtonGroup = ButtonGroup;
248
+ exports.buttonVariants = buttonVariants;
249
+ //# sourceMappingURL=button.js.map
250
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/button.tsx"],"names":["cva","React","Slot","useUISystemContext","TRACKING_TYPE","className","children","jsxs","cn","jsx","Spinner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,cAAA,GAAiBA,0BAAA;AAAA,EACrB,sZAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gFAAA;AAAA,QACT,WAAA,EACE,gGAAA;AAAA,QACF,OAAA,EAAS,uEAAA;AAAA,QACT,SAAA,EACE,4HAAA;AAAA,QACF,KAAA,EAAO,2EAAA;AAAA,QACP,IAAA,EAAM,8DAAA;AAAA,QACN,KAAA,EAAO,6DAAA;AAAA,QACP,aAAA,EAAe,gDAAA;AAAA,QACf,IAAA,EAAM,gHAAA;AAAA;AAAA,QAEN,iBAAA,EACE,2EAAA;AAAA,QACF,iBAAA,EACE,8EAAA;AAAA,QACF,cAAA,EAAgB,uEAAA;AAAA,QAChB,eAAA,EAAiB,qEAAA;AAAA;AAAA,QAEjB,cAAA,EACE,0GAAA;AAAA,QACF,cAAA,EACE,gHAAA;AAAA,QACF,WAAA,EACE,kGAAA;AAAA,QACF,YAAA,EACE,8FAAA;AAAA;AAAA,QAGF,eAAA,EACE,2EAAA;AAAA,QACF,eAAA,EACE,8EAAA;AAAA,QACF,YAAA,EAAc,uEAAA;AAAA,QACd,aAAA,EAAe,qEAAA;AAAA;AAAA,QAEf,eAAA,EACE,0GAAA;AAAA,QACF,eAAA,EACE,gHAAA;AAAA,QACF,YAAA,EACE,kGAAA;AAAA,QACF,aAAA,EACE,8FAAA;AAAA;AAAA,QAGF,iBAAA,EACE,4GAAA;AAAA,QACF,iBAAA,EACE,iHAAA;AAAA,QACF,cAAA,EACE,qGAAA;AAAA,QACF,eAAA,EACE;AAAA,OACJ;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,cAAA;AAAA,QACN,EAAA,EAAI,YAAA;AAAA,QACJ,EAAA,EAAI,YAAA;AAAA,QACJ,EAAA,EAAI,YAAA;AAAA,QACJ,EAAA,EAAI,YAAA;AAAA,QACJ,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,+BAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX;AAEJ;AAkBA,MAAM,SAASC,gBAAA,CAAM,UAAA;AAAA,EACnB,CACE;AAAA,IACE,SAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,OAAA,GAAU,KAAA;AAAA,IACV,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAG9B,IAAA,MAAM,oBAAoB,MAMX;AAEb,MAAA,IACE,OAAA,KAAY,aACZ,OAAA,KAAY,iBAAA,IACZ,YAAY,iBAAA,IACZ,OAAA,KAAY,cAAA,IACZ,OAAA,KAAY,eAAA,EACZ;AACA,QAAA,OAAO,OAAA;AAAA,MACT;AAGA,MAAA,IAAI,OAAA,KAAY,gBAAgB,OAAO,SAAA;AACvC,MAAA,IAAI,OAAA,KAAY,gBAAgB,OAAO,SAAA;AACvC,MAAA,IAAI,OAAA,KAAY,aAAa,OAAO,MAAA;AACpC,MAAA,IAAI,OAAA,KAAY,cAAc,OAAO,OAAA;AAGrC,MAAA,IAAI,OAAA,KAAY,mBAAmB,OAAO,SAAA;AAC1C,MAAA,IAAI,OAAA,KAAY,mBAAmB,OAAO,SAAA;AAC1C,MAAA,IAAI,OAAA,KAAY,gBAAgB,OAAO,MAAA;AACvC,MAAA,IAAI,OAAA,KAAY,iBAAiB,OAAO,OAAA;AAGxC,MAAA,IAAI,OAAA,KAAY,eAAe,OAAO,OAAA;AAGtC,MAAA,OAAO,SAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,iBAAiB,iBAAA,EAAkB;AAEzC,IAAA,MAAM,EAAE,SAAA,EAAU,GAAIC,mCAAA,MAAwB,EAAC;AAE/C,IAAA,MAAM,SAAA,GAA0C,CAAC,CAAA,KAAM;AACrD,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA;AAAA,MACF;AACA,MAAA,OAAA,GAAU,CAAC,CAAA;AAGX,MAAA,IAAI,CAAC,aAAa,iBAAA,EAAmB;AAErC,MAAA,MAAM,YAAY,CAAA,CAAE,MAAA;AACpB,MAAA,MAAM,UAAA,GAAa,SAAA,CAAU,SAAA,IAAa,SAAA,CAAU,WAAA,IAAe,EAAA;AAGnE,MAAA,MAAM,iBAAA,GAAoB,YAAA,IAAgB,CAAA,UAAA,EAAa,YAAA,EAAc,QAAQ,CAAA,CAAA;AAG7E,MAAA,MAAM,YAAiC,EAAC;AACxC,MAAA,IAAI,aAAA,KAAkB,MAAA,IAAa,aAAA,KAAkB,IAAA,EAAM;AACzD,QAAA,SAAA,CAAU,KAAA,GAAQ,aAAA;AAAA,MACpB;AAGA,MAAA,MAAM,kBAAA,GAAqB,EAAE,GAAG,YAAA,EAAa;AAC7C,MAAA,IAAI,CAAC,kBAAA,CAAmB,WAAA,IAAe,UAAA,EAAY;AACjD,QAAA,kBAAA,CAAmB,WAAA,GAAc,WAAW,IAAA,EAAK;AAAA,MACnD;AAGA,MAAA,SAAA,CAAU,iBAAA,EAAmBC,oBAAc,KAAA,EAAO;AAAA,QAChD,GAAG,SAAA;AAAA,QACH,GAAG;AAAA,OACJ,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAAyC;AAE9D,MAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAsB;AAC9C,QAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAGlB,QAAA,IAAI,IAAA,CAAK,WAAA,EAAa,OAAO,IAAA,CAAK,WAAA;AAClC,QAAA,IAAI,IAAA,CAAK,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA;AAG3B,QAAA,IAAI,KAAK,QAAA,qBAAa,MAAA,CAAO,IAAI,YAAY,CAAA,IAAK,KAAK,IAAA,EAAM;AAC3D,UAAA,OAAO,gBAAA,CAAiB,KAAK,IAAI,CAAA;AAAA,QACnC;AAGA,QAAA,IAAI,KAAK,QAAA,qBAAa,MAAA,CAAO,IAAI,mBAAmB,CAAA,IAAK,KAAK,MAAA,EAAQ;AACpE,UAAA,OAAO,gBAAA,CAAiB,KAAK,MAAM,CAAA;AAAA,QACrC;AAEA,QAAA,OAAO,EAAA;AAAA,MACT,CAAA;AAGA,MAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,QAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,OAAA,CAAQ,IAAI,CAAA;AACnD,QAAA,MAAM,SAAA,GAAY,cAAc,WAAA,EAAY;AAG5C,QAAA,IACE,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,IACzB,SAAA,CAAU,SAAS,KAAK,CAAA,IACxB,aAAA,CAAc,KAAA,CAAM,UAAU,CAAA;AAAA,QAC9B,aAAA,CAAc,KAAA,CAAM,qBAAqB,CAAA,EACzC;AACA,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAGA,MAAA,IAAI,QAAQ,KAAA,EAAO,SAAA,IAAa,OAAO,OAAA,CAAQ,KAAA,CAAM,cAAc,QAAA,EAAU;AAC3E,QAAA,MAAMC,UAAAA,GAAY,QAAQ,KAAA,CAAM,SAAA;AAChC,QAAA,IAAIA,WAAU,QAAA,CAAS,KAAK,KAAKA,UAAAA,CAAU,QAAA,CAAS,OAAO,CAAA,EAAG;AAC5D,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAGA,MAAA,IAAI,QAAQ,KAAA,EAAO,OAAA,IAAW,OAAA,CAAQ,KAAA,EAAO,UAAU,4BAAA,EAA8B;AACnF,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAACC,SAAAA,KAA+C;AACrE,MAAA,OAAOL,gBAAA,CAAM,QAAA,CAAS,GAAA,CAAIK,SAAAA,EAAU,CAAC,KAAA,KAAU;AAC7C,QAAA,IAAI,CAACL,gBAAA,CAAM,cAAA,CAAe,KAAK,CAAA,EAAG;AAChC,UAAA,OAAO,KAAA;AAAA,QACT;AAGA,QAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,IAAA,CAAK,KAAA,CAAM,SAAS,KAAA,IAAS,KAAA,CAAM,SAAS,MAAA,KAAW,KAAA,CAAM,OAAO,QAAA,EAAU;AAC5E,UAAA,MAAM,gBAAA,GAAmB,cAAA,CAAe,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA;AAG5D,UAAA,MAAM,UAAA,GAAaA,gBAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,gBAAgB,CAAA,CAAE,IAAA;AAAA,YAC1D,CAAC,CAAA,KAAM,CAAA,KAAM,IAAA,IAAQ,CAAA,KAAM;AAAA,WAC7B;AAEA,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,OAAO,IAAA;AAAA,UACT;AAEA,UAAA,OAAOA,gBAAA,CAAM,YAAA,CAAa,KAAA,EAAO,IAAI,gBAAgB,CAAA;AAAA,QACvD;AAEA,QAAA,OAAO,KAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,IAAI,CAAC,SAAS,OAAO,QAAA;AAGrB,MAAA,OAAO,eAAe,QAAQ,CAAA;AAAA,IAChC,CAAA;AAGA,IAAA,MAAM,YAAA,GAAe,IAAA,KAAS,MAAA,IAAU,OAAA,KAAY,SAAY,MAAA,GAAS,OAAA;AAEzE,IAAA,uBACEM,eAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWC,QAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,MAAM,OAAA,EAAS,YAAA,EAAc,SAAA,EAAW,CAAC,CAAA;AAAA,QACjF,GAAA;AAAA,QACA,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU,YAAY,CAAC,OAAA;AAAA,QACvB,cAAA,EAAc,OAAA;AAAA,QACb,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAWC,cAAA,CAACC,eAAA,EAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,SAAS,cAAA,EAAgB,CAAA;AAAA,UACvD,cAAA;AAAe;AAAA;AAAA,KAClB;AAAA,EAEJ;AACF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AAErB,MAAM,mBAAA,GAAsBV,2BAAI,MAAA,EAAQ;AAAA,EACtC,QAAA,EAAU;AAAA,IACR,SAAA,EAAW;AAAA,MACT,UAAA,EAAY,WAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ;AAEJ,CAAC,CAAA;AAOD,MAAM,cAAcC,gBAAA,CAAM,UAAA;AAAA,EACxB,CAAC,EAAE,OAAA,EAAS,SAAA,EAAW,YAAY,YAAA,EAAc,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACnE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,KAAA;AAE9B,IAAA,uBACEO,cAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAU,SAAA,EAAWD,QAAA,CAAG,mBAAA,CAAoB,EAAE,SAAA,EAAW,SAAA,EAAW,CAAC,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAAA,EAE7F;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"button.js","sourcesContent":["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"]}
@@ -0,0 +1,226 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { cva } from 'class-variance-authority';
4
+ import * as React from 'react';
5
+ import { TRACKING_TYPE } from '@/lib/types';
6
+ import { cn } from '@/lib/utils';
7
+ import { useUISystemContext } from '@/providers/UISystemProvider';
8
+ import { Spinner } from './spinner';
9
+
10
+ const buttonVariants = cva(
11
+ "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",
12
+ {
13
+ variants: {
14
+ variant: {
15
+ default: "bg-primary text-primary-foreground icon-primary-foreground hover:bg-primary/90",
16
+ destructive: "bg-destructive text-destructive-foreground icon-destructive-foreground hover:bg-destructive/90",
17
+ outline: "border border-input bg-background hover:bg-accent hover:border-accent",
18
+ secondary: "bg-secondary border border-primary text-secondary-foreground icon-secondary-foreground hover:bg-accent active:bg-accent/80",
19
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:icon-accent-foreground",
20
+ link: "text-primary icon-primary underline-offset-4 hover:underline",
21
+ plain: "text-primary icon-primary hover:text-primary/80 w-max h-max",
22
+ "plain-error": "text-red-500 hover:text-red-500/80 w-max h-max",
23
+ icon: "bg-card text-foreground icon-foreground hover:bg-muted border border-border rounded-full shadow [&_svg]:size-6",
24
+ // Primary variants with solid colors
25
+ "primary-success": "bg-green-500 text-white icon-white hover:bg-green-600 active:bg-green-700",
26
+ "primary-warning": "bg-yellow-500 text-white icon-white hover:bg-yellow-600 active:bg-yellow-700",
27
+ "primary-info": "bg-blue-500 text-white icon-white hover:bg-primary active:bg-blue-700",
28
+ "primary-error": "bg-red-500 text-white icon-white hover:bg-red-600 active:bg-red-700",
29
+ // Soft variants with lighter backgrounds
30
+ "soft-success": "bg-green-50 text-green-600 icon-green-600 hover:bg-green-100 active:bg-green-200 border border-green-200",
31
+ "soft-warning": "bg-yellow-50 text-yellow-600 icon-yellow-600 hover:bg-yellow-100 active:bg-yellow-200 border border-yellow-200",
32
+ "soft-info": "bg-blue-50 text-primary icon-primary hover:bg-blue-100 active:bg-blue-200 border border-blue-200",
33
+ "soft-error": "bg-red-50 text-red-600 icon-red-600 hover:bg-red-100 active:bg-red-200 border border-red-200",
34
+ // Primary variants with solid colors
35
+ "heavy-success": "bg-green-500 text-white icon-white hover:bg-green-600 active:bg-green-700",
36
+ "heavy-warning": "bg-yellow-500 text-white icon-white hover:bg-yellow-600 active:bg-yellow-700",
37
+ "heavy-info": "bg-blue-500 text-white icon-white hover:bg-primary active:bg-blue-700",
38
+ "heavy-error": "bg-red-500 text-white icon-white hover:bg-red-600 active:bg-red-700",
39
+ // Soft variants with lighter backgrounds
40
+ "light-success": "bg-green-50 text-green-600 icon-green-600 hover:bg-green-100 active:bg-green-200 border border-green-200",
41
+ "light-warning": "bg-yellow-50 text-yellow-600 icon-yellow-600 hover:bg-yellow-100 active:bg-yellow-200 border border-yellow-200",
42
+ "light-info": "bg-blue-50 text-primary icon-primary hover:bg-blue-100 active:bg-blue-200 border border-blue-200",
43
+ "light-error": "bg-red-50 text-red-600 icon-red-600 hover:bg-red-100 active:bg-red-200 border border-red-200",
44
+ // Outline variants with borders
45
+ "outline-success": "border border-green-500 bg-transparent text-green-600 icon-green-600 hover:bg-green-50 active:bg-green-100",
46
+ "outline-warning": "border border-yellow-600 bg-transparent text-yellow-600 icon-yellow-600 hover:bg-yellow-50 active:bg-yellow-100",
47
+ "outline-info": "border border-blue-500 bg-transparent text-primary icon-primary hover:bg-blue-50 active:bg-blue-100",
48
+ "outline-error": "border border-red-500 bg-transparent text-red-600 icon-red-600 hover:bg-red-50 active:bg-red-100"
49
+ },
50
+ rounded: {
51
+ none: "rounded-none",
52
+ sm: "rounded-sm",
53
+ md: "rounded-md",
54
+ lg: "rounded-lg",
55
+ xl: "rounded-xl",
56
+ full: "rounded-full"
57
+ },
58
+ size: {
59
+ default: "h-12 px-3 py-2",
60
+ sm: "h-10 px-3 py-2 [&_svg]:size-4",
61
+ lg: "h-14 px-3 py-2",
62
+ icon: "h-10 w-10"
63
+ }
64
+ },
65
+ defaultVariants: {
66
+ variant: "default",
67
+ size: "default",
68
+ rounded: "md"
69
+ }
70
+ }
71
+ );
72
+ const Button = React.forwardRef(
73
+ ({
74
+ className,
75
+ trackingData,
76
+ trackingIndex,
77
+ trackingName,
78
+ blockSendTracking,
79
+ variant,
80
+ size,
81
+ rounded,
82
+ asChild = false,
83
+ loading = false,
84
+ children,
85
+ onClick,
86
+ disabled,
87
+ ...props
88
+ }, ref) => {
89
+ const Comp = asChild ? Slot : "button";
90
+ const getSpinnerVariant = () => {
91
+ if (variant === "default" || variant === "primary-success" || variant === "primary-warning" || variant === "primary-info" || variant === "primary-error") {
92
+ return "white";
93
+ }
94
+ if (variant === "soft-success") return "success";
95
+ if (variant === "soft-warning") return "warning";
96
+ if (variant === "soft-info") return "info";
97
+ if (variant === "soft-error") return "error";
98
+ if (variant === "outline-success") return "success";
99
+ if (variant === "outline-warning") return "warning";
100
+ if (variant === "outline-info") return "info";
101
+ if (variant === "outline-error") return "error";
102
+ if (variant === "destructive") return "white";
103
+ return "primary";
104
+ };
105
+ const spinnerVariant = getSpinnerVariant();
106
+ const { sendTrack } = useUISystemContext() || {};
107
+ const onClickFn = (e) => {
108
+ if (disabled || loading) {
109
+ return;
110
+ }
111
+ onClick?.(e);
112
+ if (!sendTrack || blockSendTracking) return;
113
+ const targetElm = e.target;
114
+ const buttonText = targetElm.innerText || targetElm.textContent || "";
115
+ const finalTrackingName = trackingName || `click_btn_${trackingData?.identity}`;
116
+ const otherData = {};
117
+ if (trackingIndex !== void 0 && trackingIndex !== null) {
118
+ otherData.index = trackingIndex;
119
+ }
120
+ const mergedTrackingData = { ...trackingData };
121
+ if (!mergedTrackingData.object_name && buttonText) {
122
+ mergedTrackingData.object_name = buttonText.trim();
123
+ }
124
+ sendTrack(finalTrackingName, TRACKING_TYPE.click, {
125
+ ...otherData,
126
+ ...mergedTrackingData
127
+ });
128
+ };
129
+ const isIconElement = (element) => {
130
+ if (element.type === "svg") {
131
+ return true;
132
+ }
133
+ const getComponentName = (type) => {
134
+ if (!type) return "";
135
+ if (type.displayName) return type.displayName;
136
+ if (type.name) return type.name;
137
+ if (type.$$typeof === /* @__PURE__ */ Symbol.for("react.memo") && type.type) {
138
+ return getComponentName(type.type);
139
+ }
140
+ if (type.$$typeof === /* @__PURE__ */ Symbol.for("react.forward_ref") && type.render) {
141
+ return getComponentName(type.render);
142
+ }
143
+ return "";
144
+ };
145
+ if (element.type) {
146
+ const componentName = getComponentName(element.type);
147
+ const lowerName = componentName.toLowerCase();
148
+ if (lowerName.includes("icon") || lowerName.includes("svg") || componentName.match(/Icon\d+$/) || // Matches Icon16, Icon24, etc.
149
+ componentName.match(/^[A-Z][a-zA-Z]*Icon/)) {
150
+ return true;
151
+ }
152
+ }
153
+ if (element.props?.className && typeof element.props.className === "string") {
154
+ const className2 = element.props.className;
155
+ if (className2.includes("ic-") || className2.includes("icon-")) {
156
+ return true;
157
+ }
158
+ }
159
+ if (element.props?.viewBox || element.props?.xmlns === "http://www.w3.org/2000/svg") {
160
+ return true;
161
+ }
162
+ return false;
163
+ };
164
+ const filterChildren = (children2) => {
165
+ return React.Children.map(children2, (child) => {
166
+ if (!React.isValidElement(child)) {
167
+ return child;
168
+ }
169
+ if (isIconElement(child)) {
170
+ return null;
171
+ }
172
+ if ((child.type === "div" || child.type === "span") && child.props?.children) {
173
+ const filteredChildren = filterChildren(child.props.children);
174
+ const hasContent = React.Children.toArray(filteredChildren).some(
175
+ (c) => c !== null && c !== void 0
176
+ );
177
+ if (!hasContent) {
178
+ return null;
179
+ }
180
+ return React.cloneElement(child, {}, filteredChildren);
181
+ }
182
+ return child;
183
+ });
184
+ };
185
+ const renderChildren = () => {
186
+ if (!loading) return children;
187
+ return filterChildren(children);
188
+ };
189
+ const finalRounded = size === "icon" && rounded === void 0 ? "full" : rounded;
190
+ return /* @__PURE__ */ jsxs(
191
+ Comp,
192
+ {
193
+ className: cn(buttonVariants({ variant, size, rounded: finalRounded, className })),
194
+ ref,
195
+ onClick: onClickFn,
196
+ disabled: disabled && !loading,
197
+ "data-loading": loading,
198
+ ...props,
199
+ children: [
200
+ loading && /* @__PURE__ */ jsx(Spinner, { size: "sm", variant: spinnerVariant }),
201
+ renderChildren()
202
+ ]
203
+ }
204
+ );
205
+ }
206
+ );
207
+ Button.displayName = "Button";
208
+ const buttonGroupVariants = cva("flex", {
209
+ variants: {
210
+ direction: {
211
+ horizontal: "space-x-3",
212
+ vertical: "space-y-2"
213
+ }
214
+ }
215
+ });
216
+ const ButtonGroup = React.forwardRef(
217
+ ({ asChild, className, direction = "horizontal", ...props }, ref) => {
218
+ const Comp = asChild ? Slot : "div";
219
+ return /* @__PURE__ */ jsx(Comp, { ref, className: cn(buttonGroupVariants({ direction, className })), ...props });
220
+ }
221
+ );
222
+ ButtonGroup.displayName = "ButtonGroup";
223
+
224
+ export { Button, ButtonGroup, buttonVariants };
225
+ //# sourceMappingURL=button.mjs.map
226
+ //# sourceMappingURL=button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/button.tsx"],"names":["className","children"],"mappings":"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","file":"button.mjs","sourcesContent":["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"]}