shad-m 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/dist/common/interactive/list.d.ts +1 -1
  2. package/dist/common/interactive/select/variants.d.ts +1 -1
  3. package/dist/components/alert-dialog.d.ts +2 -2
  4. package/dist/components/badge.d.ts +3 -3
  5. package/dist/components/button.d.ts +4 -4
  6. package/dist/components/chip.d.ts +2 -2
  7. package/dist/components/command.d.ts +7 -7
  8. package/dist/components/dialog.d.ts +2 -2
  9. package/dist/components/input-otp.d.ts +2 -2
  10. package/dist/components/resizable.d.ts +1 -1
  11. package/dist/components/sidebar.d.ts +1 -1
  12. package/dist/components/spinner.d.ts +2 -2
  13. package/dist/components/stepper.d.ts +3 -3
  14. package/dist/components/toggle-group.d.ts +2 -2
  15. package/dist/components/toggle.d.ts +2 -2
  16. package/dist/index.css +43 -0
  17. package/dist/index.css.map +1 -0
  18. package/dist/index.d.ts +59 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +8189 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/index.mjs +7846 -0
  23. package/dist/index.mjs.map +1 -0
  24. package/package.json +34 -2
  25. package/dist/assets/Animation/index.js +0 -180
  26. package/dist/assets/Animation/index.js.map +0 -1
  27. package/dist/assets/Animation/index.mjs +0 -79
  28. package/dist/assets/Animation/index.mjs.map +0 -1
  29. package/dist/assets/Icon/index.js +0 -2102
  30. package/dist/assets/Icon/index.js.map +0 -1
  31. package/dist/assets/Icon/index.mjs +0 -421
  32. package/dist/assets/Icon/index.mjs.map +0 -1
  33. package/dist/assets/Image/index.js +0 -755
  34. package/dist/assets/Image/index.js.map +0 -1
  35. package/dist/assets/Image/index.mjs +0 -150
  36. package/dist/assets/Image/index.mjs.map +0 -1
  37. package/dist/common/display/countdown.js +0 -68
  38. package/dist/common/display/countdown.js.map +0 -1
  39. package/dist/common/display/countdown.mjs +0 -46
  40. package/dist/common/display/countdown.mjs.map +0 -1
  41. package/dist/common/display/display-field-group.js +0 -91
  42. package/dist/common/display/display-field-group.js.map +0 -1
  43. package/dist/common/display/display-field-group.mjs +0 -89
  44. package/dist/common/display/display-field-group.mjs.map +0 -1
  45. package/dist/common/display/display-field.js +0 -46
  46. package/dist/common/display/display-field.js.map +0 -1
  47. package/dist/common/display/display-field.mjs +0 -40
  48. package/dist/common/display/display-field.mjs.map +0 -1
  49. package/dist/common/display/display-html-string.js +0 -52
  50. package/dist/common/display/display-html-string.js.map +0 -1
  51. package/dist/common/display/display-html-string.mjs +0 -30
  52. package/dist/common/display/display-html-string.mjs.map +0 -1
  53. package/dist/common/display/index.js +0 -59
  54. package/dist/common/display/index.js.map +0 -1
  55. package/dist/common/display/index.mjs +0 -10
  56. package/dist/common/display/index.mjs.map +0 -1
  57. package/dist/common/display/page-breadcrumb.js +0 -43
  58. package/dist/common/display/page-breadcrumb.js.map +0 -1
  59. package/dist/common/display/page-breadcrumb.mjs +0 -37
  60. package/dist/common/display/page-breadcrumb.mjs.map +0 -1
  61. package/dist/common/display/page-v2.js +0 -58
  62. package/dist/common/display/page-v2.js.map +0 -1
  63. package/dist/common/display/page-v2.mjs +0 -20
  64. package/dist/common/display/page-v2.mjs.map +0 -1
  65. package/dist/common/display/page.js +0 -155
  66. package/dist/common/display/page.js.map +0 -1
  67. package/dist/common/display/page.mjs +0 -138
  68. package/dist/common/display/page.mjs.map +0 -1
  69. package/dist/common/display/score-meter.js +0 -161
  70. package/dist/common/display/score-meter.js.map +0 -1
  71. package/dist/common/display/score-meter.mjs +0 -140
  72. package/dist/common/display/score-meter.mjs.map +0 -1
  73. package/dist/common/display/sidebar/app-sidebar.js +0 -114
  74. package/dist/common/display/sidebar/app-sidebar.js.map +0 -1
  75. package/dist/common/display/sidebar/app-sidebar.mjs +0 -92
  76. package/dist/common/display/sidebar/app-sidebar.mjs.map +0 -1
  77. package/dist/common/display/sidebar/index.js +0 -89
  78. package/dist/common/display/sidebar/index.js.map +0 -1
  79. package/dist/common/display/sidebar/index.mjs +0 -81
  80. package/dist/common/display/sidebar/index.mjs.map +0 -1
  81. package/dist/common/display/sidebar/nav-main.js +0 -406
  82. package/dist/common/display/sidebar/nav-main.js.map +0 -1
  83. package/dist/common/display/sidebar/nav-main.mjs +0 -400
  84. package/dist/common/display/sidebar/nav-main.mjs.map +0 -1
  85. package/dist/common/display/sidebar/sidebar-sheet.js +0 -140
  86. package/dist/common/display/sidebar/sidebar-sheet.js.map +0 -1
  87. package/dist/common/display/sidebar/sidebar-sheet.mjs +0 -118
  88. package/dist/common/display/sidebar/sidebar-sheet.mjs.map +0 -1
  89. package/dist/common/display/sidebar/types.js +0 -4
  90. package/dist/common/display/sidebar/types.js.map +0 -1
  91. package/dist/common/display/sidebar/types.mjs +0 -3
  92. package/dist/common/display/sidebar/types.mjs.map +0 -1
  93. package/dist/common/display/status-state.js +0 -97
  94. package/dist/common/display/status-state.js.map +0 -1
  95. package/dist/common/display/status-state.mjs +0 -88
  96. package/dist/common/display/status-state.mjs.map +0 -1
  97. package/dist/common/forms/auto-form.js +0 -101
  98. package/dist/common/forms/auto-form.js.map +0 -1
  99. package/dist/common/forms/auto-form.mjs +0 -78
  100. package/dist/common/forms/auto-form.mjs.map +0 -1
  101. package/dist/common/forms/form-field.js +0 -58
  102. package/dist/common/forms/form-field.js.map +0 -1
  103. package/dist/common/forms/form-field.mjs +0 -56
  104. package/dist/common/forms/form-field.mjs.map +0 -1
  105. package/dist/common/forms/form-input-field.js +0 -64
  106. package/dist/common/forms/form-input-field.js.map +0 -1
  107. package/dist/common/forms/form-input-field.mjs +0 -62
  108. package/dist/common/forms/form-input-field.mjs.map +0 -1
  109. package/dist/common/forms/index.js +0 -22
  110. package/dist/common/forms/index.js.map +0 -1
  111. package/dist/common/forms/index.mjs +0 -5
  112. package/dist/common/forms/index.mjs.map +0 -1
  113. package/dist/common/forms/switch-field.js +0 -106
  114. package/dist/common/forms/switch-field.js.map +0 -1
  115. package/dist/common/forms/switch-field.mjs +0 -104
  116. package/dist/common/forms/switch-field.mjs.map +0 -1
  117. package/dist/common/interactive/alert-dialog-wrapper.js +0 -141
  118. package/dist/common/interactive/alert-dialog-wrapper.js.map +0 -1
  119. package/dist/common/interactive/alert-dialog-wrapper.mjs +0 -119
  120. package/dist/common/interactive/alert-dialog-wrapper.mjs.map +0 -1
  121. package/dist/common/interactive/autocomplete.js +0 -178
  122. package/dist/common/interactive/autocomplete.js.map +0 -1
  123. package/dist/common/interactive/autocomplete.mjs +0 -157
  124. package/dist/common/interactive/autocomplete.mjs.map +0 -1
  125. package/dist/common/interactive/copy-tooltip.js +0 -152
  126. package/dist/common/interactive/copy-tooltip.js.map +0 -1
  127. package/dist/common/interactive/copy-tooltip.mjs +0 -143
  128. package/dist/common/interactive/copy-tooltip.mjs.map +0 -1
  129. package/dist/common/interactive/date-field.js +0 -303
  130. package/dist/common/interactive/date-field.js.map +0 -1
  131. package/dist/common/interactive/date-field.mjs +0 -281
  132. package/dist/common/interactive/date-field.mjs.map +0 -1
  133. package/dist/common/interactive/date-input/date-input.js +0 -68
  134. package/dist/common/interactive/date-input/date-input.js.map +0 -1
  135. package/dist/common/interactive/date-input/date-input.mjs +0 -62
  136. package/dist/common/interactive/date-input/date-input.mjs.map +0 -1
  137. package/dist/common/interactive/date-input/index.js +0 -17
  138. package/dist/common/interactive/date-input/index.js.map +0 -1
  139. package/dist/common/interactive/date-input/index.mjs +0 -4
  140. package/dist/common/interactive/date-input/index.mjs.map +0 -1
  141. package/dist/common/interactive/date-input/types.js +0 -4
  142. package/dist/common/interactive/date-input/types.js.map +0 -1
  143. package/dist/common/interactive/date-input/types.mjs +0 -3
  144. package/dist/common/interactive/date-input/types.mjs.map +0 -1
  145. package/dist/common/interactive/date-input/use-typed-date.js +0 -478
  146. package/dist/common/interactive/date-input/use-typed-date.js.map +0 -1
  147. package/dist/common/interactive/date-input/use-typed-date.mjs +0 -476
  148. package/dist/common/interactive/date-input/use-typed-date.mjs.map +0 -1
  149. package/dist/common/interactive/date-input/utils.js +0 -34
  150. package/dist/common/interactive/date-input/utils.js.map +0 -1
  151. package/dist/common/interactive/date-input/utils.mjs +0 -29
  152. package/dist/common/interactive/date-input/utils.mjs.map +0 -1
  153. package/dist/common/interactive/date-picker.js +0 -616
  154. package/dist/common/interactive/date-picker.js.map +0 -1
  155. package/dist/common/interactive/date-picker.mjs +0 -594
  156. package/dist/common/interactive/date-picker.mjs.map +0 -1
  157. package/dist/common/interactive/date-range-input/date-range-input.js +0 -82
  158. package/dist/common/interactive/date-range-input/date-range-input.js.map +0 -1
  159. package/dist/common/interactive/date-range-input/date-range-input.mjs +0 -76
  160. package/dist/common/interactive/date-range-input/date-range-input.mjs.map +0 -1
  161. package/dist/common/interactive/date-range-input/index.js +0 -12
  162. package/dist/common/interactive/date-range-input/index.js.map +0 -1
  163. package/dist/common/interactive/date-range-input/index.mjs +0 -3
  164. package/dist/common/interactive/date-range-input/index.mjs.map +0 -1
  165. package/dist/common/interactive/date-range-input/types.js +0 -4
  166. package/dist/common/interactive/date-range-input/types.js.map +0 -1
  167. package/dist/common/interactive/date-range-input/types.mjs +0 -3
  168. package/dist/common/interactive/date-range-input/types.mjs.map +0 -1
  169. package/dist/common/interactive/date-range-input/use-typed-date-range.js +0 -602
  170. package/dist/common/interactive/date-range-input/use-typed-date-range.js.map +0 -1
  171. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs +0 -600
  172. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs.map +0 -1
  173. package/dist/common/interactive/date-time-picker.js +0 -215
  174. package/dist/common/interactive/date-time-picker.js.map +0 -1
  175. package/dist/common/interactive/date-time-picker.mjs +0 -213
  176. package/dist/common/interactive/date-time-picker.mjs.map +0 -1
  177. package/dist/common/interactive/dialog-wrapper.js +0 -124
  178. package/dist/common/interactive/dialog-wrapper.js.map +0 -1
  179. package/dist/common/interactive/dialog-wrapper.mjs +0 -102
  180. package/dist/common/interactive/dialog-wrapper.mjs.map +0 -1
  181. package/dist/common/interactive/filter.js +0 -287
  182. package/dist/common/interactive/filter.js.map +0 -1
  183. package/dist/common/interactive/filter.mjs +0 -280
  184. package/dist/common/interactive/filter.mjs.map +0 -1
  185. package/dist/common/interactive/index.js +0 -235
  186. package/dist/common/interactive/index.js.map +0 -1
  187. package/dist/common/interactive/index.mjs +0 -24
  188. package/dist/common/interactive/index.mjs.map +0 -1
  189. package/dist/common/interactive/list.js +0 -160
  190. package/dist/common/interactive/list.js.map +0 -1
  191. package/dist/common/interactive/list.mjs +0 -134
  192. package/dist/common/interactive/list.mjs.map +0 -1
  193. package/dist/common/interactive/otp-dialog/index.js +0 -35
  194. package/dist/common/interactive/otp-dialog/index.js.map +0 -1
  195. package/dist/common/interactive/otp-dialog/index.mjs +0 -6
  196. package/dist/common/interactive/otp-dialog/index.mjs.map +0 -1
  197. package/dist/common/interactive/otp-dialog/otp-dialog.js +0 -325
  198. package/dist/common/interactive/otp-dialog/otp-dialog.js.map +0 -1
  199. package/dist/common/interactive/otp-dialog/otp-dialog.mjs +0 -303
  200. package/dist/common/interactive/otp-dialog/otp-dialog.mjs.map +0 -1
  201. package/dist/common/interactive/otp-dialog/reducer.js +0 -40
  202. package/dist/common/interactive/otp-dialog/reducer.js.map +0 -1
  203. package/dist/common/interactive/otp-dialog/reducer.mjs +0 -37
  204. package/dist/common/interactive/otp-dialog/reducer.mjs.map +0 -1
  205. package/dist/common/interactive/otp-dialog/types.js +0 -15
  206. package/dist/common/interactive/otp-dialog/types.js.map +0 -1
  207. package/dist/common/interactive/otp-dialog/types.mjs +0 -13
  208. package/dist/common/interactive/otp-dialog/types.mjs.map +0 -1
  209. package/dist/common/interactive/otp-dialog/utils.js +0 -24
  210. package/dist/common/interactive/otp-dialog/utils.js.map +0 -1
  211. package/dist/common/interactive/otp-dialog/utils.mjs +0 -21
  212. package/dist/common/interactive/otp-dialog/utils.mjs.map +0 -1
  213. package/dist/common/interactive/pagination/PaginationSkeleton.js +0 -51
  214. package/dist/common/interactive/pagination/PaginationSkeleton.js.map +0 -1
  215. package/dist/common/interactive/pagination/PaginationSkeleton.mjs +0 -49
  216. package/dist/common/interactive/pagination/PaginationSkeleton.mjs.map +0 -1
  217. package/dist/common/interactive/pagination/index.js +0 -235
  218. package/dist/common/interactive/pagination/index.js.map +0 -1
  219. package/dist/common/interactive/pagination/index.mjs +0 -223
  220. package/dist/common/interactive/pagination/index.mjs.map +0 -1
  221. package/dist/common/interactive/pagination/usePagination.js +0 -28
  222. package/dist/common/interactive/pagination/usePagination.js.map +0 -1
  223. package/dist/common/interactive/pagination/usePagination.mjs +0 -25
  224. package/dist/common/interactive/pagination/usePagination.mjs.map +0 -1
  225. package/dist/common/interactive/popover-wrapper.js +0 -138
  226. package/dist/common/interactive/popover-wrapper.js.map +0 -1
  227. package/dist/common/interactive/popover-wrapper.mjs +0 -116
  228. package/dist/common/interactive/popover-wrapper.mjs.map +0 -1
  229. package/dist/common/interactive/pressable.js +0 -84
  230. package/dist/common/interactive/pressable.js.map +0 -1
  231. package/dist/common/interactive/pressable.mjs +0 -62
  232. package/dist/common/interactive/pressable.mjs.map +0 -1
  233. package/dist/common/interactive/select/context.js +0 -38
  234. package/dist/common/interactive/select/context.js.map +0 -1
  235. package/dist/common/interactive/select/context.mjs +0 -14
  236. package/dist/common/interactive/select/context.mjs.map +0 -1
  237. package/dist/common/interactive/select/index.js +0 -123
  238. package/dist/common/interactive/select/index.js.map +0 -1
  239. package/dist/common/interactive/select/index.mjs +0 -18
  240. package/dist/common/interactive/select/index.mjs.map +0 -1
  241. package/dist/common/interactive/select/select-body.js +0 -89
  242. package/dist/common/interactive/select/select-body.js.map +0 -1
  243. package/dist/common/interactive/select/select-body.mjs +0 -67
  244. package/dist/common/interactive/select/select-body.mjs.map +0 -1
  245. package/dist/common/interactive/select/select-close.js +0 -38
  246. package/dist/common/interactive/select/select-close.js.map +0 -1
  247. package/dist/common/interactive/select/select-close.mjs +0 -16
  248. package/dist/common/interactive/select/select-close.mjs.map +0 -1
  249. package/dist/common/interactive/select/select-content-auto-layout.js +0 -221
  250. package/dist/common/interactive/select/select-content-auto-layout.js.map +0 -1
  251. package/dist/common/interactive/select/select-content-auto-layout.mjs +0 -199
  252. package/dist/common/interactive/select/select-content-auto-layout.mjs.map +0 -1
  253. package/dist/common/interactive/select/select-content-group-auto-layout.js +0 -411
  254. package/dist/common/interactive/select/select-content-group-auto-layout.js.map +0 -1
  255. package/dist/common/interactive/select/select-content-group-auto-layout.mjs +0 -389
  256. package/dist/common/interactive/select/select-content-group-auto-layout.mjs.map +0 -1
  257. package/dist/common/interactive/select/select-content.js +0 -187
  258. package/dist/common/interactive/select/select-content.js.map +0 -1
  259. package/dist/common/interactive/select/select-content.mjs +0 -165
  260. package/dist/common/interactive/select/select-content.mjs.map +0 -1
  261. package/dist/common/interactive/select/select-footer.js +0 -82
  262. package/dist/common/interactive/select/select-footer.js.map +0 -1
  263. package/dist/common/interactive/select/select-footer.mjs +0 -60
  264. package/dist/common/interactive/select/select-footer.mjs.map +0 -1
  265. package/dist/common/interactive/select/select-item.js +0 -214
  266. package/dist/common/interactive/select/select-item.js.map +0 -1
  267. package/dist/common/interactive/select/select-item.mjs +0 -191
  268. package/dist/common/interactive/select/select-item.mjs.map +0 -1
  269. package/dist/common/interactive/select/select-layout.js +0 -66
  270. package/dist/common/interactive/select/select-layout.js.map +0 -1
  271. package/dist/common/interactive/select/select-layout.mjs +0 -41
  272. package/dist/common/interactive/select/select-layout.mjs.map +0 -1
  273. package/dist/common/interactive/select/select-search.js +0 -55
  274. package/dist/common/interactive/select/select-search.js.map +0 -1
  275. package/dist/common/interactive/select/select-search.mjs +0 -33
  276. package/dist/common/interactive/select/select-search.mjs.map +0 -1
  277. package/dist/common/interactive/select/select-states.js +0 -57
  278. package/dist/common/interactive/select/select-states.js.map +0 -1
  279. package/dist/common/interactive/select/select-states.mjs +0 -34
  280. package/dist/common/interactive/select/select-states.mjs.map +0 -1
  281. package/dist/common/interactive/select/select-trigger.js +0 -310
  282. package/dist/common/interactive/select/select-trigger.js.map +0 -1
  283. package/dist/common/interactive/select/select-trigger.mjs +0 -286
  284. package/dist/common/interactive/select/select-trigger.mjs.map +0 -1
  285. package/dist/common/interactive/select/select-value.js +0 -52
  286. package/dist/common/interactive/select/select-value.js.map +0 -1
  287. package/dist/common/interactive/select/select-value.mjs +0 -30
  288. package/dist/common/interactive/select/select-value.mjs.map +0 -1
  289. package/dist/common/interactive/select/select.js +0 -184
  290. package/dist/common/interactive/select/select.js.map +0 -1
  291. package/dist/common/interactive/select/select.mjs +0 -162
  292. package/dist/common/interactive/select/select.mjs.map +0 -1
  293. package/dist/common/interactive/select/types.js +0 -4
  294. package/dist/common/interactive/select/types.js.map +0 -1
  295. package/dist/common/interactive/select/types.mjs +0 -3
  296. package/dist/common/interactive/select/types.mjs.map +0 -1
  297. package/dist/common/interactive/select/utils.js +0 -31
  298. package/dist/common/interactive/select/utils.js.map +0 -1
  299. package/dist/common/interactive/select/utils.mjs +0 -28
  300. package/dist/common/interactive/select/utils.mjs.map +0 -1
  301. package/dist/common/interactive/select/variants.js +0 -27
  302. package/dist/common/interactive/select/variants.js.map +0 -1
  303. package/dist/common/interactive/select/variants.mjs +0 -25
  304. package/dist/common/interactive/select/variants.mjs.map +0 -1
  305. package/dist/common/interactive/select-chip.js +0 -76
  306. package/dist/common/interactive/select-chip.js.map +0 -1
  307. package/dist/common/interactive/select-chip.mjs +0 -74
  308. package/dist/common/interactive/select-chip.mjs.map +0 -1
  309. package/dist/common/interactive/select-level.js +0 -236
  310. package/dist/common/interactive/select-level.js.map +0 -1
  311. package/dist/common/interactive/select-level.mjs +0 -230
  312. package/dist/common/interactive/select-level.mjs.map +0 -1
  313. package/dist/common/interactive/select-range.js +0 -211
  314. package/dist/common/interactive/select-range.js.map +0 -1
  315. package/dist/common/interactive/select-range.mjs +0 -209
  316. package/dist/common/interactive/select-range.mjs.map +0 -1
  317. package/dist/common/interactive/select-with-api.js +0 -767
  318. package/dist/common/interactive/select-with-api.js.map +0 -1
  319. package/dist/common/interactive/select-with-api.mjs +0 -758
  320. package/dist/common/interactive/select-with-api.mjs.map +0 -1
  321. package/dist/common/interactive/select.js +0 -15
  322. package/dist/common/interactive/select.js.map +0 -1
  323. package/dist/common/interactive/select.mjs +0 -4
  324. package/dist/common/interactive/select.mjs.map +0 -1
  325. package/dist/common/interactive/sheet-wrapper.js +0 -105
  326. package/dist/common/interactive/sheet-wrapper.js.map +0 -1
  327. package/dist/common/interactive/sheet-wrapper.mjs +0 -83
  328. package/dist/common/interactive/sheet-wrapper.mjs.map +0 -1
  329. package/dist/common/interactive/table/enhanced-table.js +0 -390
  330. package/dist/common/interactive/table/enhanced-table.js.map +0 -1
  331. package/dist/common/interactive/table/enhanced-table.mjs +0 -388
  332. package/dist/common/interactive/table/enhanced-table.mjs.map +0 -1
  333. package/dist/common/interactive/table/index.js +0 -83
  334. package/dist/common/interactive/table/index.js.map +0 -1
  335. package/dist/common/interactive/table/index.mjs +0 -68
  336. package/dist/common/interactive/table/index.mjs.map +0 -1
  337. package/dist/common/interactive/table/table-pagination.js +0 -12
  338. package/dist/common/interactive/table/table-pagination.js.map +0 -1
  339. package/dist/common/interactive/table/table-pagination.mjs +0 -10
  340. package/dist/common/interactive/table/table-pagination.mjs.map +0 -1
  341. package/dist/common/interactive/table/types.js +0 -4
  342. package/dist/common/interactive/table/types.js.map +0 -1
  343. package/dist/common/interactive/table/types.mjs +0 -3
  344. package/dist/common/interactive/table/types.mjs.map +0 -1
  345. package/dist/common/interactive/time-picker.js +0 -313
  346. package/dist/common/interactive/time-picker.js.map +0 -1
  347. package/dist/common/interactive/time-picker.mjs +0 -307
  348. package/dist/common/interactive/time-picker.mjs.map +0 -1
  349. package/dist/common/interactive/types.js +0 -4
  350. package/dist/common/interactive/types.js.map +0 -1
  351. package/dist/common/interactive/types.mjs +0 -3
  352. package/dist/common/interactive/types.mjs.map +0 -1
  353. package/dist/common/pages/page-404.js +0 -16
  354. package/dist/common/pages/page-404.js.map +0 -1
  355. package/dist/common/pages/page-404.mjs +0 -11
  356. package/dist/common/pages/page-404.mjs.map +0 -1
  357. package/dist/common/pages/page-500.js +0 -30
  358. package/dist/common/pages/page-500.js.map +0 -1
  359. package/dist/common/pages/page-500.mjs +0 -25
  360. package/dist/common/pages/page-500.mjs.map +0 -1
  361. package/dist/components/accordion.js +0 -65
  362. package/dist/components/accordion.js.map +0 -1
  363. package/dist/components/accordion.mjs +0 -39
  364. package/dist/components/accordion.mjs.map +0 -1
  365. package/dist/components/alert-dialog.js +0 -231
  366. package/dist/components/alert-dialog.js.map +0 -1
  367. package/dist/components/alert-dialog.mjs +0 -197
  368. package/dist/components/alert-dialog.mjs.map +0 -1
  369. package/dist/components/alert.js +0 -97
  370. package/dist/components/alert.js.map +0 -1
  371. package/dist/components/alert.mjs +0 -72
  372. package/dist/components/alert.mjs.map +0 -1
  373. package/dist/components/aspect-ratio.js +0 -29
  374. package/dist/components/aspect-ratio.js.map +0 -1
  375. package/dist/components/aspect-ratio.mjs +0 -7
  376. package/dist/components/aspect-ratio.mjs.map +0 -1
  377. package/dist/components/avatar.js +0 -64
  378. package/dist/components/avatar.js.map +0 -1
  379. package/dist/components/avatar.mjs +0 -39
  380. package/dist/components/avatar.mjs.map +0 -1
  381. package/dist/components/badge.js +0 -72
  382. package/dist/components/badge.js.map +0 -1
  383. package/dist/components/badge.mjs +0 -69
  384. package/dist/components/badge.mjs.map +0 -1
  385. package/dist/components/breadcrumb.js +0 -109
  386. package/dist/components/breadcrumb.js.map +0 -1
  387. package/dist/components/breadcrumb.mjs +0 -81
  388. package/dist/components/breadcrumb.mjs.map +0 -1
  389. package/dist/components/button.js +0 -250
  390. package/dist/components/button.js.map +0 -1
  391. package/dist/components/button.mjs +0 -226
  392. package/dist/components/button.mjs.map +0 -1
  393. package/dist/components/calendar.js +0 -681
  394. package/dist/components/calendar.js.map +0 -1
  395. package/dist/components/calendar.mjs +0 -659
  396. package/dist/components/calendar.mjs.map +0 -1
  397. package/dist/components/card.js +0 -98
  398. package/dist/components/card.js.map +0 -1
  399. package/dist/components/card.mjs +0 -71
  400. package/dist/components/card.mjs.map +0 -1
  401. package/dist/components/carousel.js +0 -237
  402. package/dist/components/carousel.js.map +0 -1
  403. package/dist/components/carousel.mjs +0 -208
  404. package/dist/components/carousel.mjs.map +0 -1
  405. package/dist/components/chart.js +0 -252
  406. package/dist/components/chart.js.map +0 -1
  407. package/dist/components/chart.mjs +0 -224
  408. package/dist/components/chart.mjs.map +0 -1
  409. package/dist/components/checkbox.js +0 -97
  410. package/dist/components/checkbox.js.map +0 -1
  411. package/dist/components/checkbox.mjs +0 -74
  412. package/dist/components/checkbox.mjs.map +0 -1
  413. package/dist/components/chip.js +0 -88
  414. package/dist/components/chip.js.map +0 -1
  415. package/dist/components/chip.mjs +0 -82
  416. package/dist/components/chip.mjs.map +0 -1
  417. package/dist/components/collapsible.js +0 -33
  418. package/dist/components/collapsible.js.map +0 -1
  419. package/dist/components/collapsible.mjs +0 -9
  420. package/dist/components/collapsible.mjs.map +0 -1
  421. package/dist/components/command.js +0 -125
  422. package/dist/components/command.js.map +0 -1
  423. package/dist/components/command.mjs +0 -95
  424. package/dist/components/command.mjs.map +0 -1
  425. package/dist/components/context-menu.js +0 -168
  426. package/dist/components/context-menu.js.map +0 -1
  427. package/dist/components/context-menu.mjs +0 -131
  428. package/dist/components/context-menu.mjs.map +0 -1
  429. package/dist/components/dialog.js +0 -192
  430. package/dist/components/dialog.js.map +0 -1
  431. package/dist/components/dialog.mjs +0 -159
  432. package/dist/components/dialog.mjs.map +0 -1
  433. package/dist/components/drawer.js +0 -98
  434. package/dist/components/drawer.js.map +0 -1
  435. package/dist/components/drawer.mjs +0 -67
  436. package/dist/components/drawer.mjs.map +0 -1
  437. package/dist/components/dropdown-menu.js +0 -163
  438. package/dist/components/dropdown-menu.js.map +0 -1
  439. package/dist/components/dropdown-menu.mjs +0 -126
  440. package/dist/components/dropdown-menu.mjs.map +0 -1
  441. package/dist/components/form.js +0 -123
  442. package/dist/components/form.js.map +0 -1
  443. package/dist/components/form.mjs +0 -94
  444. package/dist/components/form.mjs.map +0 -1
  445. package/dist/components/hover-card.js +0 -50
  446. package/dist/components/hover-card.js.map +0 -1
  447. package/dist/components/hover-card.mjs +0 -25
  448. package/dist/components/hover-card.mjs.map +0 -1
  449. package/dist/components/input-otp.js +0 -84
  450. package/dist/components/input-otp.js.map +0 -1
  451. package/dist/components/input-otp.mjs +0 -59
  452. package/dist/components/input-otp.mjs.map +0 -1
  453. package/dist/components/input.js +0 -858
  454. package/dist/components/input.js.map +0 -1
  455. package/dist/components/input.mjs +0 -831
  456. package/dist/components/input.mjs.map +0 -1
  457. package/dist/components/label.js +0 -38
  458. package/dist/components/label.js.map +0 -1
  459. package/dist/components/label.mjs +0 -15
  460. package/dist/components/label.mjs.map +0 -1
  461. package/dist/components/lottie.js +0 -59
  462. package/dist/components/lottie.js.map +0 -1
  463. package/dist/components/lottie.mjs +0 -49
  464. package/dist/components/lottie.mjs.map +0 -1
  465. package/dist/components/menubar.js +0 -195
  466. package/dist/components/menubar.js.map +0 -1
  467. package/dist/components/menubar.mjs +0 -157
  468. package/dist/components/menubar.mjs.map +0 -1
  469. package/dist/components/navigation-menu.js +0 -126
  470. package/dist/components/navigation-menu.js.map +0 -1
  471. package/dist/components/navigation-menu.mjs +0 -95
  472. package/dist/components/navigation-menu.mjs.map +0 -1
  473. package/dist/components/pagination.js +0 -112
  474. package/dist/components/pagination.js.map +0 -1
  475. package/dist/components/pagination.mjs +0 -84
  476. package/dist/components/pagination.mjs.map +0 -1
  477. package/dist/components/popover.js +0 -63
  478. package/dist/components/popover.js.map +0 -1
  479. package/dist/components/popover.mjs +0 -38
  480. package/dist/components/popover.mjs.map +0 -1
  481. package/dist/components/progress.js +0 -50
  482. package/dist/components/progress.js.map +0 -1
  483. package/dist/components/progress.mjs +0 -27
  484. package/dist/components/progress.mjs.map +0 -1
  485. package/dist/components/radio-group.js +0 -91
  486. package/dist/components/radio-group.js.map +0 -1
  487. package/dist/components/radio-group.mjs +0 -67
  488. package/dist/components/radio-group.mjs.map +0 -1
  489. package/dist/components/resizable.js +0 -59
  490. package/dist/components/resizable.js.map +0 -1
  491. package/dist/components/resizable.mjs +0 -35
  492. package/dist/components/resizable.mjs.map +0 -1
  493. package/dist/components/responsive-popover.js +0 -74
  494. package/dist/components/responsive-popover.js.map +0 -1
  495. package/dist/components/responsive-popover.mjs +0 -50
  496. package/dist/components/responsive-popover.mjs.map +0 -1
  497. package/dist/components/scroll-area.js +0 -63
  498. package/dist/components/scroll-area.js.map +0 -1
  499. package/dist/components/scroll-area.mjs +0 -39
  500. package/dist/components/scroll-area.mjs.map +0 -1
  501. package/dist/components/separator.js +0 -47
  502. package/dist/components/separator.js.map +0 -1
  503. package/dist/components/separator.mjs +0 -24
  504. package/dist/components/separator.mjs.map +0 -1
  505. package/dist/components/sheet.js +0 -239
  506. package/dist/components/sheet.js.map +0 -1
  507. package/dist/components/sheet.mjs +0 -206
  508. package/dist/components/sheet.mjs.map +0 -1
  509. package/dist/components/sidebar.js +0 -888
  510. package/dist/components/sidebar.js.map +0 -1
  511. package/dist/components/sidebar.mjs +0 -842
  512. package/dist/components/sidebar.mjs.map +0 -1
  513. package/dist/components/skeleton.js +0 -153
  514. package/dist/components/skeleton.js.map +0 -1
  515. package/dist/components/skeleton.mjs +0 -127
  516. package/dist/components/skeleton.mjs.map +0 -1
  517. package/dist/components/slider.js +0 -45
  518. package/dist/components/slider.js.map +0 -1
  519. package/dist/components/slider.mjs +0 -22
  520. package/dist/components/slider.mjs.map +0 -1
  521. package/dist/components/sonner.js +0 -76
  522. package/dist/components/sonner.js.map +0 -1
  523. package/dist/components/sonner.mjs +0 -71
  524. package/dist/components/sonner.mjs.map +0 -1
  525. package/dist/components/spinner.js +0 -59
  526. package/dist/components/spinner.js.map +0 -1
  527. package/dist/components/spinner.mjs +0 -36
  528. package/dist/components/spinner.mjs.map +0 -1
  529. package/dist/components/stepper.js +0 -726
  530. package/dist/components/stepper.js.map +0 -1
  531. package/dist/components/stepper.mjs +0 -702
  532. package/dist/components/stepper.mjs.map +0 -1
  533. package/dist/components/switch.js +0 -85
  534. package/dist/components/switch.js.map +0 -1
  535. package/dist/components/switch.mjs +0 -62
  536. package/dist/components/switch.mjs.map +0 -1
  537. package/dist/components/table.js +0 -91
  538. package/dist/components/table.js.map +0 -1
  539. package/dist/components/table.mjs +0 -62
  540. package/dist/components/table.mjs.map +0 -1
  541. package/dist/components/tabs.js +0 -287
  542. package/dist/components/tabs.js.map +0 -1
  543. package/dist/components/tabs.mjs +0 -261
  544. package/dist/components/tabs.mjs.map +0 -1
  545. package/dist/components/textarea.js +0 -200
  546. package/dist/components/textarea.js.map +0 -1
  547. package/dist/components/textarea.mjs +0 -174
  548. package/dist/components/textarea.mjs.map +0 -1
  549. package/dist/components/toggle-group.js +0 -67
  550. package/dist/components/toggle-group.js.map +0 -1
  551. package/dist/components/toggle-group.mjs +0 -43
  552. package/dist/components/toggle-group.mjs.map +0 -1
  553. package/dist/components/toggle.js +0 -63
  554. package/dist/components/toggle.js.map +0 -1
  555. package/dist/components/toggle.mjs +0 -39
  556. package/dist/components/toggle.mjs.map +0 -1
  557. package/dist/components/tooltip.js +0 -172
  558. package/dist/components/tooltip.js.map +0 -1
  559. package/dist/components/tooltip.mjs +0 -145
  560. package/dist/components/tooltip.mjs.map +0 -1
  561. package/dist/hooks/index.js +0 -27
  562. package/dist/hooks/index.js.map +0 -1
  563. package/dist/hooks/index.mjs +0 -6
  564. package/dist/hooks/index.mjs.map +0 -1
  565. package/dist/hooks/useCopyToClipboard.js +0 -59
  566. package/dist/hooks/useCopyToClipboard.js.map +0 -1
  567. package/dist/hooks/useCopyToClipboard.mjs +0 -57
  568. package/dist/hooks/useCopyToClipboard.mjs.map +0 -1
  569. package/dist/hooks/useDevice.js +0 -20
  570. package/dist/hooks/useDevice.js.map +0 -1
  571. package/dist/hooks/useDevice.mjs +0 -14
  572. package/dist/hooks/useDevice.mjs.map +0 -1
  573. package/dist/hooks/useDialogTracking.js +0 -113
  574. package/dist/hooks/useDialogTracking.js.map +0 -1
  575. package/dist/hooks/useDialogTracking.mjs +0 -91
  576. package/dist/hooks/useDialogTracking.mjs.map +0 -1
  577. package/dist/hooks/useIsMounted.js +0 -15
  578. package/dist/hooks/useIsMounted.js.map +0 -1
  579. package/dist/hooks/useIsMounted.mjs +0 -13
  580. package/dist/hooks/useIsMounted.mjs.map +0 -1
  581. package/dist/hooks/usePathname.js +0 -85
  582. package/dist/hooks/usePathname.js.map +0 -1
  583. package/dist/hooks/usePathname.mjs +0 -83
  584. package/dist/hooks/usePathname.mjs.map +0 -1
  585. package/dist/icons.js +0 -14
  586. package/dist/icons.js.map +0 -1
  587. package/dist/icons.mjs +0 -3
  588. package/dist/icons.mjs.map +0 -1
  589. package/dist/lib/formatCurrency.js +0 -187
  590. package/dist/lib/formatCurrency.js.map +0 -1
  591. package/dist/lib/formatCurrency.mjs +0 -185
  592. package/dist/lib/formatCurrency.mjs.map +0 -1
  593. package/dist/lib/helpers.js +0 -171
  594. package/dist/lib/helpers.js.map +0 -1
  595. package/dist/lib/helpers.mjs +0 -157
  596. package/dist/lib/helpers.mjs.map +0 -1
  597. package/dist/lib/index.js +0 -33
  598. package/dist/lib/index.js.map +0 -1
  599. package/dist/lib/index.mjs +0 -6
  600. package/dist/lib/index.mjs.map +0 -1
  601. package/dist/lib/types.js +0 -11
  602. package/dist/lib/types.js.map +0 -1
  603. package/dist/lib/types.mjs +0 -9
  604. package/dist/lib/types.mjs.map +0 -1
  605. package/dist/lib/utils.js +0 -24
  606. package/dist/lib/utils.js.map +0 -1
  607. package/dist/lib/utils.mjs +0 -19
  608. package/dist/lib/utils.mjs.map +0 -1
  609. package/dist/providers/DeviceSizeWatcher/index.js +0 -72
  610. package/dist/providers/DeviceSizeWatcher/index.js.map +0 -1
  611. package/dist/providers/DeviceSizeWatcher/index.mjs +0 -47
  612. package/dist/providers/DeviceSizeWatcher/index.mjs.map +0 -1
  613. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js +0 -22
  614. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js.map +0 -1
  615. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs +0 -20
  616. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs.map +0 -1
  617. package/dist/providers/UISystemProvider.js +0 -197
  618. package/dist/providers/UISystemProvider.js.map +0 -1
  619. package/dist/providers/UISystemProvider.mjs +0 -188
  620. package/dist/providers/UISystemProvider.mjs.map +0 -1
  621. package/dist/providers/index.js +0 -24
  622. package/dist/providers/index.js.map +0 -1
  623. package/dist/providers/index.mjs +0 -3
  624. package/dist/providers/index.mjs.map +0 -1
  625. package/dist/theme.js +0 -333
  626. package/dist/theme.js.map +0 -1
  627. package/dist/theme.mjs +0 -327
  628. package/dist/theme.mjs.map +0 -1
@@ -1,287 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var TabsPrimitive = require('@radix-ui/react-tabs');
6
- var classVarianceAuthority = require('class-variance-authority');
7
- var react = require('motion/react');
8
- var utils = require('@/lib/utils');
9
- var providers = require('@/providers');
10
- var lib = require('@/lib');
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
- var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
32
-
33
- const Tabs = TabsPrimitive__namespace.Root;
34
- const tabsListVariants = classVarianceAuthority.cva("inline-flex items-center relative scrollbar-hide", {
35
- variants: {
36
- variant: {
37
- normal: "bg-muted text-muted-foreground rounded-md p-1 h-10",
38
- specific: "border-b border-border bg-transparent gap-6 h-auto p-0 overflow-x-auto",
39
- fixed: "bg-transparent border-b border-border h-auto p-0 overflow-x-auto",
40
- full: "bg-transparent border-b border-border h-auto p-0 w-full overflow-x-auto gap-4"
41
- },
42
- scrollable: {
43
- true: "overflow-x-auto justify-start",
44
- false: "justify-center"
45
- }
46
- },
47
- defaultVariants: {
48
- variant: "specific",
49
- scrollable: true
50
- }
51
- });
52
- const tabsTriggerVariants = classVarianceAuthority.cva(
53
- "inline-flex items-center justify-center whitespace-nowrap transition-all duration-200 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
54
- {
55
- variants: {
56
- variant: {
57
- normal: "rounded-sm px-3 py-1.5 font-medium data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
58
- specific: "relative px-0 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary",
59
- fixed: "relative px-4 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary",
60
- full: "relative px-4 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary"
61
- },
62
- scrollable: {
63
- true: "",
64
- false: ""
65
- }
66
- },
67
- compoundVariants: [
68
- {
69
- variant: "full",
70
- scrollable: false,
71
- className: "flex-1"
72
- }
73
- ],
74
- defaultVariants: {
75
- variant: "specific",
76
- scrollable: false
77
- }
78
- }
79
- );
80
- const TabsList = React__namespace.forwardRef(
81
- ({ className, variant, scrollable, showAnimatedUnderline = true, children, ...props }, ref) => {
82
- const listRef = React__namespace.useRef(null);
83
- const [showLeftFade, setShowLeftFade] = React__namespace.useState(false);
84
- const [showRightFade, setShowRightFade] = React__namespace.useState(false);
85
- const [underlineStyle, setUnderlineStyle] = React__namespace.useState({ left: 0, width: 0 });
86
- const tabRefs = React__namespace.useRef([]);
87
- react.useMotionValue(0);
88
- const checkScroll = React__namespace.useCallback(() => {
89
- if (!listRef.current || !scrollable) return;
90
- const { scrollLeft, scrollWidth, clientWidth } = listRef.current;
91
- setShowLeftFade(scrollLeft > 0);
92
- setShowRightFade(scrollLeft < scrollWidth - clientWidth - 1);
93
- }, [scrollable]);
94
- const scrollToActiveTab = React__namespace.useCallback(
95
- (activeTab) => {
96
- if (!scrollable || !listRef.current) return;
97
- const list = listRef.current;
98
- const listRect = list.getBoundingClientRect();
99
- const tabRect = activeTab.getBoundingClientRect();
100
- const tabLeft = tabRect.left - listRect.left + list.scrollLeft;
101
- const tabRight = tabLeft + tabRect.width;
102
- const visibleLeft = list.scrollLeft;
103
- const visibleRight = visibleLeft + list.clientWidth;
104
- const padding = 32;
105
- let shouldScroll = false;
106
- let scrollTarget = 0;
107
- if (tabLeft < visibleLeft + padding) {
108
- shouldScroll = true;
109
- scrollTarget = Math.max(0, tabLeft - padding);
110
- } else if (tabRight > visibleRight - padding) {
111
- shouldScroll = true;
112
- scrollTarget = tabRight - list.clientWidth + padding;
113
- }
114
- if (shouldScroll) {
115
- const startScroll = list.scrollLeft;
116
- const distance = scrollTarget - startScroll;
117
- react.animate(0, 1, {
118
- type: "spring",
119
- stiffness: 300,
120
- damping: 30,
121
- onUpdate: (progress) => {
122
- list.scrollTo({
123
- left: startScroll + distance * progress,
124
- behavior: "auto"
125
- // We're handling the animation ourselves
126
- });
127
- },
128
- onComplete: () => {
129
- list.scrollTo({ left: scrollTarget, behavior: "auto" });
130
- }
131
- });
132
- }
133
- },
134
- [scrollable]
135
- );
136
- React__namespace.useLayoutEffect(() => {
137
- if (variant === "normal") return;
138
- const updateUnderline = () => {
139
- const activeTab = tabRefs.current.find(
140
- (tab) => tab?.getAttribute("data-state") === "active"
141
- );
142
- if (activeTab && listRef.current) {
143
- const listRect = listRef.current.getBoundingClientRect();
144
- const tabRect = activeTab.getBoundingClientRect();
145
- const newLeft = tabRect.left - listRect.left + (listRef.current.scrollLeft || 0);
146
- const newWidth = tabRect.width;
147
- if (showAnimatedUnderline) {
148
- setUnderlineStyle({
149
- left: newLeft,
150
- width: newWidth
151
- });
152
- }
153
- setTimeout(() => {
154
- scrollToActiveTab(activeTab);
155
- }, 50);
156
- }
157
- };
158
- updateUnderline();
159
- const observer = new MutationObserver(() => {
160
- updateUnderline();
161
- });
162
- tabRefs.current.forEach((tab) => {
163
- if (tab) {
164
- observer.observe(tab, { attributes: true, attributeFilter: ["data-state"] });
165
- }
166
- });
167
- return () => observer.disconnect();
168
- }, [showAnimatedUnderline, variant, children, scrollToActiveTab]);
169
- React__namespace.useEffect(() => {
170
- checkScroll();
171
- window.addEventListener("resize", checkScroll);
172
- return () => window.removeEventListener("resize", checkScroll);
173
- }, [checkScroll]);
174
- const childrenWithRefs = React__namespace.Children.map(children, (child, index) => {
175
- if (React__namespace.isValidElement(child) && child.type === TabsTrigger) {
176
- return React__namespace.cloneElement(child, {
177
- scrollable,
178
- ref: (el) => {
179
- tabRefs.current[index] = el;
180
- const originalRef = child.ref;
181
- if (typeof originalRef === "function") {
182
- originalRef(el);
183
- } else if (originalRef) {
184
- originalRef.current = el;
185
- }
186
- }
187
- });
188
- }
189
- return child;
190
- });
191
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
192
- showLeftFade && /* @__PURE__ */ jsxRuntime.jsx("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" }),
193
- /* @__PURE__ */ jsxRuntime.jsxs(
194
- TabsPrimitive__namespace.List,
195
- {
196
- ref: (node) => {
197
- if (typeof ref === "function") {
198
- ref(node);
199
- } else if (ref) {
200
- ref.current = node;
201
- }
202
- listRef.current = node;
203
- },
204
- onScroll: checkScroll,
205
- className: utils.cn(tabsListVariants({ variant, scrollable, className })),
206
- ...props,
207
- children: [
208
- childrenWithRefs,
209
- showAnimatedUnderline && variant !== "normal" && /* @__PURE__ */ jsxRuntime.jsx(
210
- react.motion.div,
211
- {
212
- className: "bg-primary absolute bottom-0 h-0.5",
213
- layoutId: "tab-underline",
214
- style: {
215
- left: underlineStyle.left,
216
- width: underlineStyle.width
217
- },
218
- transition: {
219
- type: "spring",
220
- stiffness: 400,
221
- damping: 40
222
- }
223
- }
224
- )
225
- ]
226
- }
227
- ),
228
- showRightFade && /* @__PURE__ */ jsxRuntime.jsx("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" })
229
- ] });
230
- }
231
- );
232
- TabsList.displayName = TabsPrimitive__namespace.List.displayName;
233
- const TabsTrigger = React__namespace.forwardRef(
234
- ({
235
- className,
236
- variant,
237
- scrollable,
238
- onClick,
239
- trackingData,
240
- trackingIndex,
241
- trackingName,
242
- blockSendTracking,
243
- ...props
244
- }, ref) => {
245
- const { sendTrack } = providers.useUISystemContext();
246
- const handleClick = (event) => {
247
- if ((trackingName || trackingData?.identity) && !blockSendTracking) {
248
- sendTrack(
249
- trackingName || `sl_tab_${trackingData?.identity}`,
250
- lib.TRACKING_TYPE.click,
251
- trackingData
252
- );
253
- }
254
- onClick?.(event);
255
- };
256
- return /* @__PURE__ */ jsxRuntime.jsx(
257
- TabsPrimitive__namespace.Trigger,
258
- {
259
- ref,
260
- className: utils.cn(tabsTriggerVariants({ variant, scrollable, className })),
261
- onClick: handleClick,
262
- ...props
263
- }
264
- );
265
- }
266
- );
267
- TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
268
- const TabsContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
269
- TabsPrimitive__namespace.Content,
270
- {
271
- ref,
272
- className: utils.cn(
273
- "animate-in fade-in-0 slide-in-from-bottom-1 mt-2 duration-200",
274
- "focus:outline-none focus-visible:outline-none",
275
- className
276
- ),
277
- ...props
278
- }
279
- ));
280
- TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
281
-
282
- exports.Tabs = Tabs;
283
- exports.TabsContent = TabsContent;
284
- exports.TabsList = TabsList;
285
- exports.TabsTrigger = TabsTrigger;
286
- //# sourceMappingURL=tabs.js.map
287
- //# sourceMappingURL=tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/tabs.tsx"],"names":["TabsPrimitive","cva","React","useMotionValue","animate","jsxs","jsx","cn","motion","useUISystemContext","TRACKING_TYPE"],"mappings":"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","file":"tabs.js","sourcesContent":["'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"]}
@@ -1,261 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as TabsPrimitive from '@radix-ui/react-tabs';
4
- import { cva } from 'class-variance-authority';
5
- import { useMotionValue, animate, motion } from 'motion/react';
6
- import { cn } from '@/lib/utils';
7
- import { useUISystemContext } from '@/providers';
8
- import { TRACKING_TYPE } from '@/lib';
9
-
10
- const Tabs = TabsPrimitive.Root;
11
- const tabsListVariants = cva("inline-flex items-center relative scrollbar-hide", {
12
- variants: {
13
- variant: {
14
- normal: "bg-muted text-muted-foreground rounded-md p-1 h-10",
15
- specific: "border-b border-border bg-transparent gap-6 h-auto p-0 overflow-x-auto",
16
- fixed: "bg-transparent border-b border-border h-auto p-0 overflow-x-auto",
17
- full: "bg-transparent border-b border-border h-auto p-0 w-full overflow-x-auto gap-4"
18
- },
19
- scrollable: {
20
- true: "overflow-x-auto justify-start",
21
- false: "justify-center"
22
- }
23
- },
24
- defaultVariants: {
25
- variant: "specific",
26
- scrollable: true
27
- }
28
- });
29
- const tabsTriggerVariants = cva(
30
- "inline-flex items-center justify-center whitespace-nowrap transition-all duration-200 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
31
- {
32
- variants: {
33
- variant: {
34
- normal: "rounded-sm px-3 py-1.5 font-medium data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
35
- specific: "relative px-0 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary",
36
- fixed: "relative px-4 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary",
37
- full: "relative px-4 py-3 font-medium text-muted-foreground hover:text-foreground data-[state=active]:!text-primary"
38
- },
39
- scrollable: {
40
- true: "",
41
- false: ""
42
- }
43
- },
44
- compoundVariants: [
45
- {
46
- variant: "full",
47
- scrollable: false,
48
- className: "flex-1"
49
- }
50
- ],
51
- defaultVariants: {
52
- variant: "specific",
53
- scrollable: false
54
- }
55
- }
56
- );
57
- const TabsList = React.forwardRef(
58
- ({ className, variant, scrollable, showAnimatedUnderline = true, children, ...props }, ref) => {
59
- const listRef = React.useRef(null);
60
- const [showLeftFade, setShowLeftFade] = React.useState(false);
61
- const [showRightFade, setShowRightFade] = React.useState(false);
62
- const [underlineStyle, setUnderlineStyle] = React.useState({ left: 0, width: 0 });
63
- const tabRefs = React.useRef([]);
64
- useMotionValue(0);
65
- const checkScroll = React.useCallback(() => {
66
- if (!listRef.current || !scrollable) return;
67
- const { scrollLeft, scrollWidth, clientWidth } = listRef.current;
68
- setShowLeftFade(scrollLeft > 0);
69
- setShowRightFade(scrollLeft < scrollWidth - clientWidth - 1);
70
- }, [scrollable]);
71
- const scrollToActiveTab = React.useCallback(
72
- (activeTab) => {
73
- if (!scrollable || !listRef.current) return;
74
- const list = listRef.current;
75
- const listRect = list.getBoundingClientRect();
76
- const tabRect = activeTab.getBoundingClientRect();
77
- const tabLeft = tabRect.left - listRect.left + list.scrollLeft;
78
- const tabRight = tabLeft + tabRect.width;
79
- const visibleLeft = list.scrollLeft;
80
- const visibleRight = visibleLeft + list.clientWidth;
81
- const padding = 32;
82
- let shouldScroll = false;
83
- let scrollTarget = 0;
84
- if (tabLeft < visibleLeft + padding) {
85
- shouldScroll = true;
86
- scrollTarget = Math.max(0, tabLeft - padding);
87
- } else if (tabRight > visibleRight - padding) {
88
- shouldScroll = true;
89
- scrollTarget = tabRight - list.clientWidth + padding;
90
- }
91
- if (shouldScroll) {
92
- const startScroll = list.scrollLeft;
93
- const distance = scrollTarget - startScroll;
94
- animate(0, 1, {
95
- type: "spring",
96
- stiffness: 300,
97
- damping: 30,
98
- onUpdate: (progress) => {
99
- list.scrollTo({
100
- left: startScroll + distance * progress,
101
- behavior: "auto"
102
- // We're handling the animation ourselves
103
- });
104
- },
105
- onComplete: () => {
106
- list.scrollTo({ left: scrollTarget, behavior: "auto" });
107
- }
108
- });
109
- }
110
- },
111
- [scrollable]
112
- );
113
- React.useLayoutEffect(() => {
114
- if (variant === "normal") return;
115
- const updateUnderline = () => {
116
- const activeTab = tabRefs.current.find(
117
- (tab) => tab?.getAttribute("data-state") === "active"
118
- );
119
- if (activeTab && listRef.current) {
120
- const listRect = listRef.current.getBoundingClientRect();
121
- const tabRect = activeTab.getBoundingClientRect();
122
- const newLeft = tabRect.left - listRect.left + (listRef.current.scrollLeft || 0);
123
- const newWidth = tabRect.width;
124
- if (showAnimatedUnderline) {
125
- setUnderlineStyle({
126
- left: newLeft,
127
- width: newWidth
128
- });
129
- }
130
- setTimeout(() => {
131
- scrollToActiveTab(activeTab);
132
- }, 50);
133
- }
134
- };
135
- updateUnderline();
136
- const observer = new MutationObserver(() => {
137
- updateUnderline();
138
- });
139
- tabRefs.current.forEach((tab) => {
140
- if (tab) {
141
- observer.observe(tab, { attributes: true, attributeFilter: ["data-state"] });
142
- }
143
- });
144
- return () => observer.disconnect();
145
- }, [showAnimatedUnderline, variant, children, scrollToActiveTab]);
146
- React.useEffect(() => {
147
- checkScroll();
148
- window.addEventListener("resize", checkScroll);
149
- return () => window.removeEventListener("resize", checkScroll);
150
- }, [checkScroll]);
151
- const childrenWithRefs = React.Children.map(children, (child, index) => {
152
- if (React.isValidElement(child) && child.type === TabsTrigger) {
153
- return React.cloneElement(child, {
154
- scrollable,
155
- ref: (el) => {
156
- tabRefs.current[index] = el;
157
- const originalRef = child.ref;
158
- if (typeof originalRef === "function") {
159
- originalRef(el);
160
- } else if (originalRef) {
161
- originalRef.current = el;
162
- }
163
- }
164
- });
165
- }
166
- return child;
167
- });
168
- return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
169
- showLeftFade && /* @__PURE__ */ jsx("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" }),
170
- /* @__PURE__ */ jsxs(
171
- TabsPrimitive.List,
172
- {
173
- ref: (node) => {
174
- if (typeof ref === "function") {
175
- ref(node);
176
- } else if (ref) {
177
- ref.current = node;
178
- }
179
- listRef.current = node;
180
- },
181
- onScroll: checkScroll,
182
- className: cn(tabsListVariants({ variant, scrollable, className })),
183
- ...props,
184
- children: [
185
- childrenWithRefs,
186
- showAnimatedUnderline && variant !== "normal" && /* @__PURE__ */ jsx(
187
- motion.div,
188
- {
189
- className: "bg-primary absolute bottom-0 h-0.5",
190
- layoutId: "tab-underline",
191
- style: {
192
- left: underlineStyle.left,
193
- width: underlineStyle.width
194
- },
195
- transition: {
196
- type: "spring",
197
- stiffness: 400,
198
- damping: 40
199
- }
200
- }
201
- )
202
- ]
203
- }
204
- ),
205
- showRightFade && /* @__PURE__ */ jsx("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" })
206
- ] });
207
- }
208
- );
209
- TabsList.displayName = TabsPrimitive.List.displayName;
210
- const TabsTrigger = React.forwardRef(
211
- ({
212
- className,
213
- variant,
214
- scrollable,
215
- onClick,
216
- trackingData,
217
- trackingIndex,
218
- trackingName,
219
- blockSendTracking,
220
- ...props
221
- }, ref) => {
222
- const { sendTrack } = useUISystemContext();
223
- const handleClick = (event) => {
224
- if ((trackingName || trackingData?.identity) && !blockSendTracking) {
225
- sendTrack(
226
- trackingName || `sl_tab_${trackingData?.identity}`,
227
- TRACKING_TYPE.click,
228
- trackingData
229
- );
230
- }
231
- onClick?.(event);
232
- };
233
- return /* @__PURE__ */ jsx(
234
- TabsPrimitive.Trigger,
235
- {
236
- ref,
237
- className: cn(tabsTriggerVariants({ variant, scrollable, className })),
238
- onClick: handleClick,
239
- ...props
240
- }
241
- );
242
- }
243
- );
244
- TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
245
- const TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
246
- TabsPrimitive.Content,
247
- {
248
- ref,
249
- className: cn(
250
- "animate-in fade-in-0 slide-in-from-bottom-1 mt-2 duration-200",
251
- "focus:outline-none focus-visible:outline-none",
252
- className
253
- ),
254
- ...props
255
- }
256
- ));
257
- TabsContent.displayName = TabsPrimitive.Content.displayName;
258
-
259
- export { Tabs, TabsContent, TabsList, TabsTrigger };
260
- //# sourceMappingURL=tabs.mjs.map
261
- //# sourceMappingURL=tabs.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"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","file":"tabs.mjs","sourcesContent":["'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"]}