shad-m 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/dist/common/interactive/list.d.ts +1 -1
  2. package/dist/common/interactive/select/variants.d.ts +1 -1
  3. package/dist/components/alert-dialog.d.ts +2 -2
  4. package/dist/components/badge.d.ts +3 -3
  5. package/dist/components/button.d.ts +4 -4
  6. package/dist/components/chip.d.ts +2 -2
  7. package/dist/components/command.d.ts +7 -7
  8. package/dist/components/dialog.d.ts +2 -2
  9. package/dist/components/input-otp.d.ts +2 -2
  10. package/dist/components/resizable.d.ts +1 -1
  11. package/dist/components/sidebar.d.ts +1 -1
  12. package/dist/components/spinner.d.ts +2 -2
  13. package/dist/components/stepper.d.ts +3 -3
  14. package/dist/components/toggle-group.d.ts +2 -2
  15. package/dist/components/toggle.d.ts +2 -2
  16. package/dist/index.css +43 -0
  17. package/dist/index.css.map +1 -0
  18. package/dist/index.d.ts +59 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +8189 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/index.mjs +7846 -0
  23. package/dist/index.mjs.map +1 -0
  24. package/package.json +34 -2
  25. package/dist/assets/Animation/index.js +0 -180
  26. package/dist/assets/Animation/index.js.map +0 -1
  27. package/dist/assets/Animation/index.mjs +0 -79
  28. package/dist/assets/Animation/index.mjs.map +0 -1
  29. package/dist/assets/Icon/index.js +0 -2102
  30. package/dist/assets/Icon/index.js.map +0 -1
  31. package/dist/assets/Icon/index.mjs +0 -421
  32. package/dist/assets/Icon/index.mjs.map +0 -1
  33. package/dist/assets/Image/index.js +0 -755
  34. package/dist/assets/Image/index.js.map +0 -1
  35. package/dist/assets/Image/index.mjs +0 -150
  36. package/dist/assets/Image/index.mjs.map +0 -1
  37. package/dist/common/display/countdown.js +0 -68
  38. package/dist/common/display/countdown.js.map +0 -1
  39. package/dist/common/display/countdown.mjs +0 -46
  40. package/dist/common/display/countdown.mjs.map +0 -1
  41. package/dist/common/display/display-field-group.js +0 -91
  42. package/dist/common/display/display-field-group.js.map +0 -1
  43. package/dist/common/display/display-field-group.mjs +0 -89
  44. package/dist/common/display/display-field-group.mjs.map +0 -1
  45. package/dist/common/display/display-field.js +0 -46
  46. package/dist/common/display/display-field.js.map +0 -1
  47. package/dist/common/display/display-field.mjs +0 -40
  48. package/dist/common/display/display-field.mjs.map +0 -1
  49. package/dist/common/display/display-html-string.js +0 -52
  50. package/dist/common/display/display-html-string.js.map +0 -1
  51. package/dist/common/display/display-html-string.mjs +0 -30
  52. package/dist/common/display/display-html-string.mjs.map +0 -1
  53. package/dist/common/display/index.js +0 -59
  54. package/dist/common/display/index.js.map +0 -1
  55. package/dist/common/display/index.mjs +0 -10
  56. package/dist/common/display/index.mjs.map +0 -1
  57. package/dist/common/display/page-breadcrumb.js +0 -43
  58. package/dist/common/display/page-breadcrumb.js.map +0 -1
  59. package/dist/common/display/page-breadcrumb.mjs +0 -37
  60. package/dist/common/display/page-breadcrumb.mjs.map +0 -1
  61. package/dist/common/display/page-v2.js +0 -58
  62. package/dist/common/display/page-v2.js.map +0 -1
  63. package/dist/common/display/page-v2.mjs +0 -20
  64. package/dist/common/display/page-v2.mjs.map +0 -1
  65. package/dist/common/display/page.js +0 -155
  66. package/dist/common/display/page.js.map +0 -1
  67. package/dist/common/display/page.mjs +0 -138
  68. package/dist/common/display/page.mjs.map +0 -1
  69. package/dist/common/display/score-meter.js +0 -161
  70. package/dist/common/display/score-meter.js.map +0 -1
  71. package/dist/common/display/score-meter.mjs +0 -140
  72. package/dist/common/display/score-meter.mjs.map +0 -1
  73. package/dist/common/display/sidebar/app-sidebar.js +0 -114
  74. package/dist/common/display/sidebar/app-sidebar.js.map +0 -1
  75. package/dist/common/display/sidebar/app-sidebar.mjs +0 -92
  76. package/dist/common/display/sidebar/app-sidebar.mjs.map +0 -1
  77. package/dist/common/display/sidebar/index.js +0 -89
  78. package/dist/common/display/sidebar/index.js.map +0 -1
  79. package/dist/common/display/sidebar/index.mjs +0 -81
  80. package/dist/common/display/sidebar/index.mjs.map +0 -1
  81. package/dist/common/display/sidebar/nav-main.js +0 -406
  82. package/dist/common/display/sidebar/nav-main.js.map +0 -1
  83. package/dist/common/display/sidebar/nav-main.mjs +0 -400
  84. package/dist/common/display/sidebar/nav-main.mjs.map +0 -1
  85. package/dist/common/display/sidebar/sidebar-sheet.js +0 -140
  86. package/dist/common/display/sidebar/sidebar-sheet.js.map +0 -1
  87. package/dist/common/display/sidebar/sidebar-sheet.mjs +0 -118
  88. package/dist/common/display/sidebar/sidebar-sheet.mjs.map +0 -1
  89. package/dist/common/display/sidebar/types.js +0 -4
  90. package/dist/common/display/sidebar/types.js.map +0 -1
  91. package/dist/common/display/sidebar/types.mjs +0 -3
  92. package/dist/common/display/sidebar/types.mjs.map +0 -1
  93. package/dist/common/display/status-state.js +0 -97
  94. package/dist/common/display/status-state.js.map +0 -1
  95. package/dist/common/display/status-state.mjs +0 -88
  96. package/dist/common/display/status-state.mjs.map +0 -1
  97. package/dist/common/forms/auto-form.js +0 -101
  98. package/dist/common/forms/auto-form.js.map +0 -1
  99. package/dist/common/forms/auto-form.mjs +0 -78
  100. package/dist/common/forms/auto-form.mjs.map +0 -1
  101. package/dist/common/forms/form-field.js +0 -58
  102. package/dist/common/forms/form-field.js.map +0 -1
  103. package/dist/common/forms/form-field.mjs +0 -56
  104. package/dist/common/forms/form-field.mjs.map +0 -1
  105. package/dist/common/forms/form-input-field.js +0 -64
  106. package/dist/common/forms/form-input-field.js.map +0 -1
  107. package/dist/common/forms/form-input-field.mjs +0 -62
  108. package/dist/common/forms/form-input-field.mjs.map +0 -1
  109. package/dist/common/forms/index.js +0 -22
  110. package/dist/common/forms/index.js.map +0 -1
  111. package/dist/common/forms/index.mjs +0 -5
  112. package/dist/common/forms/index.mjs.map +0 -1
  113. package/dist/common/forms/switch-field.js +0 -106
  114. package/dist/common/forms/switch-field.js.map +0 -1
  115. package/dist/common/forms/switch-field.mjs +0 -104
  116. package/dist/common/forms/switch-field.mjs.map +0 -1
  117. package/dist/common/interactive/alert-dialog-wrapper.js +0 -141
  118. package/dist/common/interactive/alert-dialog-wrapper.js.map +0 -1
  119. package/dist/common/interactive/alert-dialog-wrapper.mjs +0 -119
  120. package/dist/common/interactive/alert-dialog-wrapper.mjs.map +0 -1
  121. package/dist/common/interactive/autocomplete.js +0 -178
  122. package/dist/common/interactive/autocomplete.js.map +0 -1
  123. package/dist/common/interactive/autocomplete.mjs +0 -157
  124. package/dist/common/interactive/autocomplete.mjs.map +0 -1
  125. package/dist/common/interactive/copy-tooltip.js +0 -152
  126. package/dist/common/interactive/copy-tooltip.js.map +0 -1
  127. package/dist/common/interactive/copy-tooltip.mjs +0 -143
  128. package/dist/common/interactive/copy-tooltip.mjs.map +0 -1
  129. package/dist/common/interactive/date-field.js +0 -303
  130. package/dist/common/interactive/date-field.js.map +0 -1
  131. package/dist/common/interactive/date-field.mjs +0 -281
  132. package/dist/common/interactive/date-field.mjs.map +0 -1
  133. package/dist/common/interactive/date-input/date-input.js +0 -68
  134. package/dist/common/interactive/date-input/date-input.js.map +0 -1
  135. package/dist/common/interactive/date-input/date-input.mjs +0 -62
  136. package/dist/common/interactive/date-input/date-input.mjs.map +0 -1
  137. package/dist/common/interactive/date-input/index.js +0 -17
  138. package/dist/common/interactive/date-input/index.js.map +0 -1
  139. package/dist/common/interactive/date-input/index.mjs +0 -4
  140. package/dist/common/interactive/date-input/index.mjs.map +0 -1
  141. package/dist/common/interactive/date-input/types.js +0 -4
  142. package/dist/common/interactive/date-input/types.js.map +0 -1
  143. package/dist/common/interactive/date-input/types.mjs +0 -3
  144. package/dist/common/interactive/date-input/types.mjs.map +0 -1
  145. package/dist/common/interactive/date-input/use-typed-date.js +0 -478
  146. package/dist/common/interactive/date-input/use-typed-date.js.map +0 -1
  147. package/dist/common/interactive/date-input/use-typed-date.mjs +0 -476
  148. package/dist/common/interactive/date-input/use-typed-date.mjs.map +0 -1
  149. package/dist/common/interactive/date-input/utils.js +0 -34
  150. package/dist/common/interactive/date-input/utils.js.map +0 -1
  151. package/dist/common/interactive/date-input/utils.mjs +0 -29
  152. package/dist/common/interactive/date-input/utils.mjs.map +0 -1
  153. package/dist/common/interactive/date-picker.js +0 -616
  154. package/dist/common/interactive/date-picker.js.map +0 -1
  155. package/dist/common/interactive/date-picker.mjs +0 -594
  156. package/dist/common/interactive/date-picker.mjs.map +0 -1
  157. package/dist/common/interactive/date-range-input/date-range-input.js +0 -82
  158. package/dist/common/interactive/date-range-input/date-range-input.js.map +0 -1
  159. package/dist/common/interactive/date-range-input/date-range-input.mjs +0 -76
  160. package/dist/common/interactive/date-range-input/date-range-input.mjs.map +0 -1
  161. package/dist/common/interactive/date-range-input/index.js +0 -12
  162. package/dist/common/interactive/date-range-input/index.js.map +0 -1
  163. package/dist/common/interactive/date-range-input/index.mjs +0 -3
  164. package/dist/common/interactive/date-range-input/index.mjs.map +0 -1
  165. package/dist/common/interactive/date-range-input/types.js +0 -4
  166. package/dist/common/interactive/date-range-input/types.js.map +0 -1
  167. package/dist/common/interactive/date-range-input/types.mjs +0 -3
  168. package/dist/common/interactive/date-range-input/types.mjs.map +0 -1
  169. package/dist/common/interactive/date-range-input/use-typed-date-range.js +0 -602
  170. package/dist/common/interactive/date-range-input/use-typed-date-range.js.map +0 -1
  171. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs +0 -600
  172. package/dist/common/interactive/date-range-input/use-typed-date-range.mjs.map +0 -1
  173. package/dist/common/interactive/date-time-picker.js +0 -215
  174. package/dist/common/interactive/date-time-picker.js.map +0 -1
  175. package/dist/common/interactive/date-time-picker.mjs +0 -213
  176. package/dist/common/interactive/date-time-picker.mjs.map +0 -1
  177. package/dist/common/interactive/dialog-wrapper.js +0 -124
  178. package/dist/common/interactive/dialog-wrapper.js.map +0 -1
  179. package/dist/common/interactive/dialog-wrapper.mjs +0 -102
  180. package/dist/common/interactive/dialog-wrapper.mjs.map +0 -1
  181. package/dist/common/interactive/filter.js +0 -287
  182. package/dist/common/interactive/filter.js.map +0 -1
  183. package/dist/common/interactive/filter.mjs +0 -280
  184. package/dist/common/interactive/filter.mjs.map +0 -1
  185. package/dist/common/interactive/index.js +0 -235
  186. package/dist/common/interactive/index.js.map +0 -1
  187. package/dist/common/interactive/index.mjs +0 -24
  188. package/dist/common/interactive/index.mjs.map +0 -1
  189. package/dist/common/interactive/list.js +0 -160
  190. package/dist/common/interactive/list.js.map +0 -1
  191. package/dist/common/interactive/list.mjs +0 -134
  192. package/dist/common/interactive/list.mjs.map +0 -1
  193. package/dist/common/interactive/otp-dialog/index.js +0 -35
  194. package/dist/common/interactive/otp-dialog/index.js.map +0 -1
  195. package/dist/common/interactive/otp-dialog/index.mjs +0 -6
  196. package/dist/common/interactive/otp-dialog/index.mjs.map +0 -1
  197. package/dist/common/interactive/otp-dialog/otp-dialog.js +0 -325
  198. package/dist/common/interactive/otp-dialog/otp-dialog.js.map +0 -1
  199. package/dist/common/interactive/otp-dialog/otp-dialog.mjs +0 -303
  200. package/dist/common/interactive/otp-dialog/otp-dialog.mjs.map +0 -1
  201. package/dist/common/interactive/otp-dialog/reducer.js +0 -40
  202. package/dist/common/interactive/otp-dialog/reducer.js.map +0 -1
  203. package/dist/common/interactive/otp-dialog/reducer.mjs +0 -37
  204. package/dist/common/interactive/otp-dialog/reducer.mjs.map +0 -1
  205. package/dist/common/interactive/otp-dialog/types.js +0 -15
  206. package/dist/common/interactive/otp-dialog/types.js.map +0 -1
  207. package/dist/common/interactive/otp-dialog/types.mjs +0 -13
  208. package/dist/common/interactive/otp-dialog/types.mjs.map +0 -1
  209. package/dist/common/interactive/otp-dialog/utils.js +0 -24
  210. package/dist/common/interactive/otp-dialog/utils.js.map +0 -1
  211. package/dist/common/interactive/otp-dialog/utils.mjs +0 -21
  212. package/dist/common/interactive/otp-dialog/utils.mjs.map +0 -1
  213. package/dist/common/interactive/pagination/PaginationSkeleton.js +0 -51
  214. package/dist/common/interactive/pagination/PaginationSkeleton.js.map +0 -1
  215. package/dist/common/interactive/pagination/PaginationSkeleton.mjs +0 -49
  216. package/dist/common/interactive/pagination/PaginationSkeleton.mjs.map +0 -1
  217. package/dist/common/interactive/pagination/index.js +0 -235
  218. package/dist/common/interactive/pagination/index.js.map +0 -1
  219. package/dist/common/interactive/pagination/index.mjs +0 -223
  220. package/dist/common/interactive/pagination/index.mjs.map +0 -1
  221. package/dist/common/interactive/pagination/usePagination.js +0 -28
  222. package/dist/common/interactive/pagination/usePagination.js.map +0 -1
  223. package/dist/common/interactive/pagination/usePagination.mjs +0 -25
  224. package/dist/common/interactive/pagination/usePagination.mjs.map +0 -1
  225. package/dist/common/interactive/popover-wrapper.js +0 -138
  226. package/dist/common/interactive/popover-wrapper.js.map +0 -1
  227. package/dist/common/interactive/popover-wrapper.mjs +0 -116
  228. package/dist/common/interactive/popover-wrapper.mjs.map +0 -1
  229. package/dist/common/interactive/pressable.js +0 -84
  230. package/dist/common/interactive/pressable.js.map +0 -1
  231. package/dist/common/interactive/pressable.mjs +0 -62
  232. package/dist/common/interactive/pressable.mjs.map +0 -1
  233. package/dist/common/interactive/select/context.js +0 -38
  234. package/dist/common/interactive/select/context.js.map +0 -1
  235. package/dist/common/interactive/select/context.mjs +0 -14
  236. package/dist/common/interactive/select/context.mjs.map +0 -1
  237. package/dist/common/interactive/select/index.js +0 -123
  238. package/dist/common/interactive/select/index.js.map +0 -1
  239. package/dist/common/interactive/select/index.mjs +0 -18
  240. package/dist/common/interactive/select/index.mjs.map +0 -1
  241. package/dist/common/interactive/select/select-body.js +0 -89
  242. package/dist/common/interactive/select/select-body.js.map +0 -1
  243. package/dist/common/interactive/select/select-body.mjs +0 -67
  244. package/dist/common/interactive/select/select-body.mjs.map +0 -1
  245. package/dist/common/interactive/select/select-close.js +0 -38
  246. package/dist/common/interactive/select/select-close.js.map +0 -1
  247. package/dist/common/interactive/select/select-close.mjs +0 -16
  248. package/dist/common/interactive/select/select-close.mjs.map +0 -1
  249. package/dist/common/interactive/select/select-content-auto-layout.js +0 -221
  250. package/dist/common/interactive/select/select-content-auto-layout.js.map +0 -1
  251. package/dist/common/interactive/select/select-content-auto-layout.mjs +0 -199
  252. package/dist/common/interactive/select/select-content-auto-layout.mjs.map +0 -1
  253. package/dist/common/interactive/select/select-content-group-auto-layout.js +0 -411
  254. package/dist/common/interactive/select/select-content-group-auto-layout.js.map +0 -1
  255. package/dist/common/interactive/select/select-content-group-auto-layout.mjs +0 -389
  256. package/dist/common/interactive/select/select-content-group-auto-layout.mjs.map +0 -1
  257. package/dist/common/interactive/select/select-content.js +0 -187
  258. package/dist/common/interactive/select/select-content.js.map +0 -1
  259. package/dist/common/interactive/select/select-content.mjs +0 -165
  260. package/dist/common/interactive/select/select-content.mjs.map +0 -1
  261. package/dist/common/interactive/select/select-footer.js +0 -82
  262. package/dist/common/interactive/select/select-footer.js.map +0 -1
  263. package/dist/common/interactive/select/select-footer.mjs +0 -60
  264. package/dist/common/interactive/select/select-footer.mjs.map +0 -1
  265. package/dist/common/interactive/select/select-item.js +0 -214
  266. package/dist/common/interactive/select/select-item.js.map +0 -1
  267. package/dist/common/interactive/select/select-item.mjs +0 -191
  268. package/dist/common/interactive/select/select-item.mjs.map +0 -1
  269. package/dist/common/interactive/select/select-layout.js +0 -66
  270. package/dist/common/interactive/select/select-layout.js.map +0 -1
  271. package/dist/common/interactive/select/select-layout.mjs +0 -41
  272. package/dist/common/interactive/select/select-layout.mjs.map +0 -1
  273. package/dist/common/interactive/select/select-search.js +0 -55
  274. package/dist/common/interactive/select/select-search.js.map +0 -1
  275. package/dist/common/interactive/select/select-search.mjs +0 -33
  276. package/dist/common/interactive/select/select-search.mjs.map +0 -1
  277. package/dist/common/interactive/select/select-states.js +0 -57
  278. package/dist/common/interactive/select/select-states.js.map +0 -1
  279. package/dist/common/interactive/select/select-states.mjs +0 -34
  280. package/dist/common/interactive/select/select-states.mjs.map +0 -1
  281. package/dist/common/interactive/select/select-trigger.js +0 -310
  282. package/dist/common/interactive/select/select-trigger.js.map +0 -1
  283. package/dist/common/interactive/select/select-trigger.mjs +0 -286
  284. package/dist/common/interactive/select/select-trigger.mjs.map +0 -1
  285. package/dist/common/interactive/select/select-value.js +0 -52
  286. package/dist/common/interactive/select/select-value.js.map +0 -1
  287. package/dist/common/interactive/select/select-value.mjs +0 -30
  288. package/dist/common/interactive/select/select-value.mjs.map +0 -1
  289. package/dist/common/interactive/select/select.js +0 -184
  290. package/dist/common/interactive/select/select.js.map +0 -1
  291. package/dist/common/interactive/select/select.mjs +0 -162
  292. package/dist/common/interactive/select/select.mjs.map +0 -1
  293. package/dist/common/interactive/select/types.js +0 -4
  294. package/dist/common/interactive/select/types.js.map +0 -1
  295. package/dist/common/interactive/select/types.mjs +0 -3
  296. package/dist/common/interactive/select/types.mjs.map +0 -1
  297. package/dist/common/interactive/select/utils.js +0 -31
  298. package/dist/common/interactive/select/utils.js.map +0 -1
  299. package/dist/common/interactive/select/utils.mjs +0 -28
  300. package/dist/common/interactive/select/utils.mjs.map +0 -1
  301. package/dist/common/interactive/select/variants.js +0 -27
  302. package/dist/common/interactive/select/variants.js.map +0 -1
  303. package/dist/common/interactive/select/variants.mjs +0 -25
  304. package/dist/common/interactive/select/variants.mjs.map +0 -1
  305. package/dist/common/interactive/select-chip.js +0 -76
  306. package/dist/common/interactive/select-chip.js.map +0 -1
  307. package/dist/common/interactive/select-chip.mjs +0 -74
  308. package/dist/common/interactive/select-chip.mjs.map +0 -1
  309. package/dist/common/interactive/select-level.js +0 -236
  310. package/dist/common/interactive/select-level.js.map +0 -1
  311. package/dist/common/interactive/select-level.mjs +0 -230
  312. package/dist/common/interactive/select-level.mjs.map +0 -1
  313. package/dist/common/interactive/select-range.js +0 -211
  314. package/dist/common/interactive/select-range.js.map +0 -1
  315. package/dist/common/interactive/select-range.mjs +0 -209
  316. package/dist/common/interactive/select-range.mjs.map +0 -1
  317. package/dist/common/interactive/select-with-api.js +0 -767
  318. package/dist/common/interactive/select-with-api.js.map +0 -1
  319. package/dist/common/interactive/select-with-api.mjs +0 -758
  320. package/dist/common/interactive/select-with-api.mjs.map +0 -1
  321. package/dist/common/interactive/select.js +0 -15
  322. package/dist/common/interactive/select.js.map +0 -1
  323. package/dist/common/interactive/select.mjs +0 -4
  324. package/dist/common/interactive/select.mjs.map +0 -1
  325. package/dist/common/interactive/sheet-wrapper.js +0 -105
  326. package/dist/common/interactive/sheet-wrapper.js.map +0 -1
  327. package/dist/common/interactive/sheet-wrapper.mjs +0 -83
  328. package/dist/common/interactive/sheet-wrapper.mjs.map +0 -1
  329. package/dist/common/interactive/table/enhanced-table.js +0 -390
  330. package/dist/common/interactive/table/enhanced-table.js.map +0 -1
  331. package/dist/common/interactive/table/enhanced-table.mjs +0 -388
  332. package/dist/common/interactive/table/enhanced-table.mjs.map +0 -1
  333. package/dist/common/interactive/table/index.js +0 -83
  334. package/dist/common/interactive/table/index.js.map +0 -1
  335. package/dist/common/interactive/table/index.mjs +0 -68
  336. package/dist/common/interactive/table/index.mjs.map +0 -1
  337. package/dist/common/interactive/table/table-pagination.js +0 -12
  338. package/dist/common/interactive/table/table-pagination.js.map +0 -1
  339. package/dist/common/interactive/table/table-pagination.mjs +0 -10
  340. package/dist/common/interactive/table/table-pagination.mjs.map +0 -1
  341. package/dist/common/interactive/table/types.js +0 -4
  342. package/dist/common/interactive/table/types.js.map +0 -1
  343. package/dist/common/interactive/table/types.mjs +0 -3
  344. package/dist/common/interactive/table/types.mjs.map +0 -1
  345. package/dist/common/interactive/time-picker.js +0 -313
  346. package/dist/common/interactive/time-picker.js.map +0 -1
  347. package/dist/common/interactive/time-picker.mjs +0 -307
  348. package/dist/common/interactive/time-picker.mjs.map +0 -1
  349. package/dist/common/interactive/types.js +0 -4
  350. package/dist/common/interactive/types.js.map +0 -1
  351. package/dist/common/interactive/types.mjs +0 -3
  352. package/dist/common/interactive/types.mjs.map +0 -1
  353. package/dist/common/pages/page-404.js +0 -16
  354. package/dist/common/pages/page-404.js.map +0 -1
  355. package/dist/common/pages/page-404.mjs +0 -11
  356. package/dist/common/pages/page-404.mjs.map +0 -1
  357. package/dist/common/pages/page-500.js +0 -30
  358. package/dist/common/pages/page-500.js.map +0 -1
  359. package/dist/common/pages/page-500.mjs +0 -25
  360. package/dist/common/pages/page-500.mjs.map +0 -1
  361. package/dist/components/accordion.js +0 -65
  362. package/dist/components/accordion.js.map +0 -1
  363. package/dist/components/accordion.mjs +0 -39
  364. package/dist/components/accordion.mjs.map +0 -1
  365. package/dist/components/alert-dialog.js +0 -231
  366. package/dist/components/alert-dialog.js.map +0 -1
  367. package/dist/components/alert-dialog.mjs +0 -197
  368. package/dist/components/alert-dialog.mjs.map +0 -1
  369. package/dist/components/alert.js +0 -97
  370. package/dist/components/alert.js.map +0 -1
  371. package/dist/components/alert.mjs +0 -72
  372. package/dist/components/alert.mjs.map +0 -1
  373. package/dist/components/aspect-ratio.js +0 -29
  374. package/dist/components/aspect-ratio.js.map +0 -1
  375. package/dist/components/aspect-ratio.mjs +0 -7
  376. package/dist/components/aspect-ratio.mjs.map +0 -1
  377. package/dist/components/avatar.js +0 -64
  378. package/dist/components/avatar.js.map +0 -1
  379. package/dist/components/avatar.mjs +0 -39
  380. package/dist/components/avatar.mjs.map +0 -1
  381. package/dist/components/badge.js +0 -72
  382. package/dist/components/badge.js.map +0 -1
  383. package/dist/components/badge.mjs +0 -69
  384. package/dist/components/badge.mjs.map +0 -1
  385. package/dist/components/breadcrumb.js +0 -109
  386. package/dist/components/breadcrumb.js.map +0 -1
  387. package/dist/components/breadcrumb.mjs +0 -81
  388. package/dist/components/breadcrumb.mjs.map +0 -1
  389. package/dist/components/button.js +0 -250
  390. package/dist/components/button.js.map +0 -1
  391. package/dist/components/button.mjs +0 -226
  392. package/dist/components/button.mjs.map +0 -1
  393. package/dist/components/calendar.js +0 -681
  394. package/dist/components/calendar.js.map +0 -1
  395. package/dist/components/calendar.mjs +0 -659
  396. package/dist/components/calendar.mjs.map +0 -1
  397. package/dist/components/card.js +0 -98
  398. package/dist/components/card.js.map +0 -1
  399. package/dist/components/card.mjs +0 -71
  400. package/dist/components/card.mjs.map +0 -1
  401. package/dist/components/carousel.js +0 -237
  402. package/dist/components/carousel.js.map +0 -1
  403. package/dist/components/carousel.mjs +0 -208
  404. package/dist/components/carousel.mjs.map +0 -1
  405. package/dist/components/chart.js +0 -252
  406. package/dist/components/chart.js.map +0 -1
  407. package/dist/components/chart.mjs +0 -224
  408. package/dist/components/chart.mjs.map +0 -1
  409. package/dist/components/checkbox.js +0 -97
  410. package/dist/components/checkbox.js.map +0 -1
  411. package/dist/components/checkbox.mjs +0 -74
  412. package/dist/components/checkbox.mjs.map +0 -1
  413. package/dist/components/chip.js +0 -88
  414. package/dist/components/chip.js.map +0 -1
  415. package/dist/components/chip.mjs +0 -82
  416. package/dist/components/chip.mjs.map +0 -1
  417. package/dist/components/collapsible.js +0 -33
  418. package/dist/components/collapsible.js.map +0 -1
  419. package/dist/components/collapsible.mjs +0 -9
  420. package/dist/components/collapsible.mjs.map +0 -1
  421. package/dist/components/command.js +0 -125
  422. package/dist/components/command.js.map +0 -1
  423. package/dist/components/command.mjs +0 -95
  424. package/dist/components/command.mjs.map +0 -1
  425. package/dist/components/context-menu.js +0 -168
  426. package/dist/components/context-menu.js.map +0 -1
  427. package/dist/components/context-menu.mjs +0 -131
  428. package/dist/components/context-menu.mjs.map +0 -1
  429. package/dist/components/dialog.js +0 -192
  430. package/dist/components/dialog.js.map +0 -1
  431. package/dist/components/dialog.mjs +0 -159
  432. package/dist/components/dialog.mjs.map +0 -1
  433. package/dist/components/drawer.js +0 -98
  434. package/dist/components/drawer.js.map +0 -1
  435. package/dist/components/drawer.mjs +0 -67
  436. package/dist/components/drawer.mjs.map +0 -1
  437. package/dist/components/dropdown-menu.js +0 -163
  438. package/dist/components/dropdown-menu.js.map +0 -1
  439. package/dist/components/dropdown-menu.mjs +0 -126
  440. package/dist/components/dropdown-menu.mjs.map +0 -1
  441. package/dist/components/form.js +0 -123
  442. package/dist/components/form.js.map +0 -1
  443. package/dist/components/form.mjs +0 -94
  444. package/dist/components/form.mjs.map +0 -1
  445. package/dist/components/hover-card.js +0 -50
  446. package/dist/components/hover-card.js.map +0 -1
  447. package/dist/components/hover-card.mjs +0 -25
  448. package/dist/components/hover-card.mjs.map +0 -1
  449. package/dist/components/input-otp.js +0 -84
  450. package/dist/components/input-otp.js.map +0 -1
  451. package/dist/components/input-otp.mjs +0 -59
  452. package/dist/components/input-otp.mjs.map +0 -1
  453. package/dist/components/input.js +0 -858
  454. package/dist/components/input.js.map +0 -1
  455. package/dist/components/input.mjs +0 -831
  456. package/dist/components/input.mjs.map +0 -1
  457. package/dist/components/label.js +0 -38
  458. package/dist/components/label.js.map +0 -1
  459. package/dist/components/label.mjs +0 -15
  460. package/dist/components/label.mjs.map +0 -1
  461. package/dist/components/lottie.js +0 -59
  462. package/dist/components/lottie.js.map +0 -1
  463. package/dist/components/lottie.mjs +0 -49
  464. package/dist/components/lottie.mjs.map +0 -1
  465. package/dist/components/menubar.js +0 -195
  466. package/dist/components/menubar.js.map +0 -1
  467. package/dist/components/menubar.mjs +0 -157
  468. package/dist/components/menubar.mjs.map +0 -1
  469. package/dist/components/navigation-menu.js +0 -126
  470. package/dist/components/navigation-menu.js.map +0 -1
  471. package/dist/components/navigation-menu.mjs +0 -95
  472. package/dist/components/navigation-menu.mjs.map +0 -1
  473. package/dist/components/pagination.js +0 -112
  474. package/dist/components/pagination.js.map +0 -1
  475. package/dist/components/pagination.mjs +0 -84
  476. package/dist/components/pagination.mjs.map +0 -1
  477. package/dist/components/popover.js +0 -63
  478. package/dist/components/popover.js.map +0 -1
  479. package/dist/components/popover.mjs +0 -38
  480. package/dist/components/popover.mjs.map +0 -1
  481. package/dist/components/progress.js +0 -50
  482. package/dist/components/progress.js.map +0 -1
  483. package/dist/components/progress.mjs +0 -27
  484. package/dist/components/progress.mjs.map +0 -1
  485. package/dist/components/radio-group.js +0 -91
  486. package/dist/components/radio-group.js.map +0 -1
  487. package/dist/components/radio-group.mjs +0 -67
  488. package/dist/components/radio-group.mjs.map +0 -1
  489. package/dist/components/resizable.js +0 -59
  490. package/dist/components/resizable.js.map +0 -1
  491. package/dist/components/resizable.mjs +0 -35
  492. package/dist/components/resizable.mjs.map +0 -1
  493. package/dist/components/responsive-popover.js +0 -74
  494. package/dist/components/responsive-popover.js.map +0 -1
  495. package/dist/components/responsive-popover.mjs +0 -50
  496. package/dist/components/responsive-popover.mjs.map +0 -1
  497. package/dist/components/scroll-area.js +0 -63
  498. package/dist/components/scroll-area.js.map +0 -1
  499. package/dist/components/scroll-area.mjs +0 -39
  500. package/dist/components/scroll-area.mjs.map +0 -1
  501. package/dist/components/separator.js +0 -47
  502. package/dist/components/separator.js.map +0 -1
  503. package/dist/components/separator.mjs +0 -24
  504. package/dist/components/separator.mjs.map +0 -1
  505. package/dist/components/sheet.js +0 -239
  506. package/dist/components/sheet.js.map +0 -1
  507. package/dist/components/sheet.mjs +0 -206
  508. package/dist/components/sheet.mjs.map +0 -1
  509. package/dist/components/sidebar.js +0 -888
  510. package/dist/components/sidebar.js.map +0 -1
  511. package/dist/components/sidebar.mjs +0 -842
  512. package/dist/components/sidebar.mjs.map +0 -1
  513. package/dist/components/skeleton.js +0 -153
  514. package/dist/components/skeleton.js.map +0 -1
  515. package/dist/components/skeleton.mjs +0 -127
  516. package/dist/components/skeleton.mjs.map +0 -1
  517. package/dist/components/slider.js +0 -45
  518. package/dist/components/slider.js.map +0 -1
  519. package/dist/components/slider.mjs +0 -22
  520. package/dist/components/slider.mjs.map +0 -1
  521. package/dist/components/sonner.js +0 -76
  522. package/dist/components/sonner.js.map +0 -1
  523. package/dist/components/sonner.mjs +0 -71
  524. package/dist/components/sonner.mjs.map +0 -1
  525. package/dist/components/spinner.js +0 -59
  526. package/dist/components/spinner.js.map +0 -1
  527. package/dist/components/spinner.mjs +0 -36
  528. package/dist/components/spinner.mjs.map +0 -1
  529. package/dist/components/stepper.js +0 -726
  530. package/dist/components/stepper.js.map +0 -1
  531. package/dist/components/stepper.mjs +0 -702
  532. package/dist/components/stepper.mjs.map +0 -1
  533. package/dist/components/switch.js +0 -85
  534. package/dist/components/switch.js.map +0 -1
  535. package/dist/components/switch.mjs +0 -62
  536. package/dist/components/switch.mjs.map +0 -1
  537. package/dist/components/table.js +0 -91
  538. package/dist/components/table.js.map +0 -1
  539. package/dist/components/table.mjs +0 -62
  540. package/dist/components/table.mjs.map +0 -1
  541. package/dist/components/tabs.js +0 -287
  542. package/dist/components/tabs.js.map +0 -1
  543. package/dist/components/tabs.mjs +0 -261
  544. package/dist/components/tabs.mjs.map +0 -1
  545. package/dist/components/textarea.js +0 -200
  546. package/dist/components/textarea.js.map +0 -1
  547. package/dist/components/textarea.mjs +0 -174
  548. package/dist/components/textarea.mjs.map +0 -1
  549. package/dist/components/toggle-group.js +0 -67
  550. package/dist/components/toggle-group.js.map +0 -1
  551. package/dist/components/toggle-group.mjs +0 -43
  552. package/dist/components/toggle-group.mjs.map +0 -1
  553. package/dist/components/toggle.js +0 -63
  554. package/dist/components/toggle.js.map +0 -1
  555. package/dist/components/toggle.mjs +0 -39
  556. package/dist/components/toggle.mjs.map +0 -1
  557. package/dist/components/tooltip.js +0 -172
  558. package/dist/components/tooltip.js.map +0 -1
  559. package/dist/components/tooltip.mjs +0 -145
  560. package/dist/components/tooltip.mjs.map +0 -1
  561. package/dist/hooks/index.js +0 -27
  562. package/dist/hooks/index.js.map +0 -1
  563. package/dist/hooks/index.mjs +0 -6
  564. package/dist/hooks/index.mjs.map +0 -1
  565. package/dist/hooks/useCopyToClipboard.js +0 -59
  566. package/dist/hooks/useCopyToClipboard.js.map +0 -1
  567. package/dist/hooks/useCopyToClipboard.mjs +0 -57
  568. package/dist/hooks/useCopyToClipboard.mjs.map +0 -1
  569. package/dist/hooks/useDevice.js +0 -20
  570. package/dist/hooks/useDevice.js.map +0 -1
  571. package/dist/hooks/useDevice.mjs +0 -14
  572. package/dist/hooks/useDevice.mjs.map +0 -1
  573. package/dist/hooks/useDialogTracking.js +0 -113
  574. package/dist/hooks/useDialogTracking.js.map +0 -1
  575. package/dist/hooks/useDialogTracking.mjs +0 -91
  576. package/dist/hooks/useDialogTracking.mjs.map +0 -1
  577. package/dist/hooks/useIsMounted.js +0 -15
  578. package/dist/hooks/useIsMounted.js.map +0 -1
  579. package/dist/hooks/useIsMounted.mjs +0 -13
  580. package/dist/hooks/useIsMounted.mjs.map +0 -1
  581. package/dist/hooks/usePathname.js +0 -85
  582. package/dist/hooks/usePathname.js.map +0 -1
  583. package/dist/hooks/usePathname.mjs +0 -83
  584. package/dist/hooks/usePathname.mjs.map +0 -1
  585. package/dist/icons.js +0 -14
  586. package/dist/icons.js.map +0 -1
  587. package/dist/icons.mjs +0 -3
  588. package/dist/icons.mjs.map +0 -1
  589. package/dist/lib/formatCurrency.js +0 -187
  590. package/dist/lib/formatCurrency.js.map +0 -1
  591. package/dist/lib/formatCurrency.mjs +0 -185
  592. package/dist/lib/formatCurrency.mjs.map +0 -1
  593. package/dist/lib/helpers.js +0 -171
  594. package/dist/lib/helpers.js.map +0 -1
  595. package/dist/lib/helpers.mjs +0 -157
  596. package/dist/lib/helpers.mjs.map +0 -1
  597. package/dist/lib/index.js +0 -33
  598. package/dist/lib/index.js.map +0 -1
  599. package/dist/lib/index.mjs +0 -6
  600. package/dist/lib/index.mjs.map +0 -1
  601. package/dist/lib/types.js +0 -11
  602. package/dist/lib/types.js.map +0 -1
  603. package/dist/lib/types.mjs +0 -9
  604. package/dist/lib/types.mjs.map +0 -1
  605. package/dist/lib/utils.js +0 -24
  606. package/dist/lib/utils.js.map +0 -1
  607. package/dist/lib/utils.mjs +0 -19
  608. package/dist/lib/utils.mjs.map +0 -1
  609. package/dist/providers/DeviceSizeWatcher/index.js +0 -72
  610. package/dist/providers/DeviceSizeWatcher/index.js.map +0 -1
  611. package/dist/providers/DeviceSizeWatcher/index.mjs +0 -47
  612. package/dist/providers/DeviceSizeWatcher/index.mjs.map +0 -1
  613. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js +0 -22
  614. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.js.map +0 -1
  615. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs +0 -20
  616. package/dist/providers/DeviceSizeWatcher/useDeviceSizeStore.mjs.map +0 -1
  617. package/dist/providers/UISystemProvider.js +0 -197
  618. package/dist/providers/UISystemProvider.js.map +0 -1
  619. package/dist/providers/UISystemProvider.mjs +0 -188
  620. package/dist/providers/UISystemProvider.mjs.map +0 -1
  621. package/dist/providers/index.js +0 -24
  622. package/dist/providers/index.js.map +0 -1
  623. package/dist/providers/index.mjs +0 -3
  624. package/dist/providers/index.mjs.map +0 -1
  625. package/dist/theme.js +0 -333
  626. package/dist/theme.js.map +0 -1
  627. package/dist/theme.mjs +0 -327
  628. package/dist/theme.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/sidebar.tsx"],"names":["open","e"],"mappings":"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","file":"sidebar.mjs","sourcesContent":["'use client';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { TooltipProvider } from '@/components/tooltip';\nimport { useDevice } from '@/hooks/useDevice';\nimport { ArrowRightIcon } from '@/icons';\nimport { cn } from '@/lib/utils';\n\n// Sidebar configuration\nexport interface SidebarConfig {\n storageKey?: string; // Optional: if not provided, state won't be persisted to localStorage\n width: string;\n widthMobile: string;\n widthIcon: string;\n keyboardShortcut: string;\n paddingX: string; // Horizontal padding for sidebar content\n maxWidth?: string; // Maximum width when resizing (in rem), e.g., '19rem', default is '30rem'\n collapsedSize?: {\n width: string; // Width of menu items when collapsed, default is '2.5rem' (40px = w-10)\n height: string; // Height of menu items when collapsed, default is '2.5rem' (40px = h-10)\n };\n enableHoverExpand?: boolean; // Enable hover to expand collapsed sidebar, default is true\n}\n\n// Default sidebar configuration\nexport const defaultSidebarConfig: SidebarConfig = {\n storageKey: 'sidebar:state',\n width: '18rem',\n widthMobile: '18rem',\n widthIcon: '5rem',\n keyboardShortcut: 'b',\n paddingX: '1rem', // Default 1rem = 16px = px-4\n maxWidth: '30rem', // Default max width 30rem = 480px\n collapsedSize: {\n width: '3rem', // Default 2.5rem = 40px = w-10\n height: '2.5rem', // Default 2.5rem = 40px = h-10\n },\n enableHoverExpand: true, // Default enable hover to expand\n};\n\n// Utility functions for localStorage\nconst getSidebarState = (storageKey?: string): boolean => {\n if (!storageKey || typeof window === 'undefined') return false;\n try {\n const saved = localStorage.getItem(storageKey);\n return saved ? JSON.parse(saved) : false;\n } catch {\n return false;\n }\n};\n\nconst setSidebarState = (storageKey: string | undefined, open: boolean): void => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n localStorage.setItem(storageKey, JSON.stringify(open));\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\nconst getSidebarWidth = (storageKey?: string): number | null => {\n if (!storageKey || typeof window === 'undefined') return null;\n try {\n const saved = localStorage.getItem(`${storageKey}:width`);\n return saved ? parseFloat(saved) : null;\n } catch {\n return null;\n }\n};\n\nconst setSidebarWidth = (storageKey: string | undefined, width: number): void => {\n if (!storageKey || typeof window === 'undefined') return;\n try {\n localStorage.setItem(`${storageKey}:width`, width.toString());\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (_open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (_open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n config: SidebarConfig;\n customWidth: number | null;\n setCustomWidth: (_width: number | null) => void;\n isHovered: boolean;\n setIsHovered: (_hovered: boolean) => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (_open: boolean) => void;\n sidebarConfig?: Partial<SidebarConfig>;\n }\n>(\n (\n {\n defaultOpen = false,\n open: openProp,\n onOpenChange: setOpenProp,\n sidebarConfig: customSidebarConfig,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const { isDesktop } = useDevice();\n\n // Merge custom sidebar config with default\n const sidebarConfig = React.useMemo(\n () => ({\n ...defaultSidebarConfig,\n ...customSidebarConfig,\n }),\n [customSidebarConfig],\n );\n\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // Track if component has mounted to prevent initial animation\n const [hasInitialized, setHasInitialized] = React.useState(false);\n\n // Track hover state for collapsed sidebar expansion\n const [isHovered, setIsHovered] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n // Initialize with saved state from localStorage\n const [_open, _setOpen] = React.useState(() => {\n if (openProp !== undefined) return openProp;\n if (defaultOpen !== undefined) return defaultOpen;\n return getSidebarState(sidebarConfig.storageKey);\n });\n\n // Custom width state for resizable sidebar\n const [customWidth, setCustomWidthState] = React.useState<number | null>(() => {\n return getSidebarWidth(sidebarConfig.storageKey);\n });\n\n const setCustomWidth = React.useCallback(\n (width: number | null) => {\n setCustomWidthState(width);\n if (width !== null) {\n setSidebarWidth(sidebarConfig.storageKey, width);\n }\n },\n [sidebarConfig.storageKey],\n );\n\n // Use a ref to track if we've already synced with localStorage on mount\n const hasSyncedRef = React.useRef(false);\n\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (_value: boolean | ((_value: boolean) => boolean)) => {\n const openState = typeof _value === 'function' ? _value(open) : _value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // Save to localStorage instead of cookie\n setSidebarState(sidebarConfig.storageKey, openState);\n },\n [setOpenProp, open, sidebarConfig.storageKey],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return !isDesktop ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isDesktop, setOpen, setOpenMobile]);\n\n // Sync with localStorage only on mount and when localStorage changes from other tabs\n React.useEffect(() => {\n if (openProp !== undefined) return; // Don't sync if controlled from outside\n if (!sidebarConfig.storageKey) return; // Don't sync if no storageKey\n\n // Only sync once on mount\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true;\n const savedState = getSidebarState(sidebarConfig.storageKey);\n if (savedState !== _open) {\n _setOpen(savedState);\n }\n }\n\n // Listen for localStorage changes from other tabs\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === sidebarConfig.storageKey && e.newValue !== null) {\n try {\n const newState = JSON.parse(e.newValue);\n _setOpen(newState);\n } catch {\n // Ignore invalid JSON\n }\n }\n };\n\n window.addEventListener('storage', handleStorageChange);\n return () => window.removeEventListener('storage', handleStorageChange);\n }, [openProp, sidebarConfig.storageKey]); // Remove _open from dependencies to prevent unnecessary re-runs\n\n // Enable transitions after initial mount to prevent animation on load\n React.useEffect(() => {\n // Small delay to ensure initial render is complete\n const timer = setTimeout(() => {\n setHasInitialized(true);\n }, 100);\n\n return () => clearTimeout(timer);\n }, []);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === sidebarConfig.keyboardShortcut && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar, sidebarConfig.keyboardShortcut]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile: !isDesktop,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n config: sidebarConfig,\n customWidth,\n setCustomWidth,\n isHovered,\n setIsHovered,\n }),\n [\n state,\n open,\n setOpen,\n isDesktop,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n sidebarConfig,\n customWidth,\n setCustomWidth,\n isHovered,\n ],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': customWidth ? `${customWidth}px` : sidebarConfig.width,\n '--sidebar-width-icon': sidebarConfig.widthIcon,\n '--sidebar-padding-x': sidebarConfig.paddingX,\n '--sidebar-collapsed-width': sidebarConfig.collapsedSize?.width,\n '--sidebar-collapsed-height': sidebarConfig.collapsedSize?.height,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full',\n !hasInitialized && 'sidebar-no-transition',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n },\n);\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n mobileSheetClassName?: string;\n }\n>(\n (\n {\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n mobileSheetClassName,\n children,\n ...props\n },\n ref,\n ) => {\n const {\n isMobile,\n state,\n openMobile,\n setOpenMobile,\n config: sidebarConfig,\n isHovered,\n } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'bg-sidebar text-ink-500s flex h-full w-[--sidebar-width] flex-col',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} modal={false} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className={cn(\n 'text-ink-500s p-0',\n // Override sheet default width constraints\n '!w-full !max-w-none',\n mobileSheetClassName,\n )}\n style={\n {\n '--sidebar-width': sidebarConfig.widthMobile,\n '--sidebar-width-icon': sidebarConfig.widthIcon,\n '--sidebar-padding-x': sidebarConfig.paddingX,\n '--sidebar-collapsed-width': sidebarConfig.collapsedSize?.width,\n '--sidebar-collapsed-height': sidebarConfig.collapsedSize?.height,\n } as React.CSSProperties\n }\n side={side}\n showCloseButton={false}\n showOverlay={false}\n disableOutsideClick={true}\n >\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"text-ink-500s group peer hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-hovered={isHovered}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-500 ease-out',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]',\n )}\n />\n <div\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-all duration-500 ease-out md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-4 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n : 'group-data-[side=left]:border-ink-200s group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',\n // Add shadow when hovered and collapsed\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:w-[--sidebar-width] group-data-[collapsible=icon]:group-data-[hovered=true]:shadow-lg',\n // Make it overlay on top when hovered\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:z-50',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n },\n);\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, open, state, isHovered } = useSidebar();\n\n // Show as \"expanded\" icon when open OR when collapsed but hovered\n const showExpandedIcon = open || (state === 'collapsed' && isHovered);\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"icon\"\n size=\"icon\"\n className={cn('h-8 w-8', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <ArrowRightIcon\n className={cn('h-6 w-6 transition-transform duration-200', {\n 'rotate-180': showExpandedIcon,\n })}\n />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n});\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<'button'>>(\n ({ className, ...props }, ref) => {\n const { toggleSidebar, state, config, customWidth, setCustomWidth } = useSidebar();\n const [isResizing, setIsResizing] = React.useState(false);\n\n const handleMouseDown = React.useCallback(\n (e: React.MouseEvent) => {\n // Only allow resize when sidebar is expanded\n if (state === 'collapsed') {\n toggleSidebar();\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n setIsResizing(true);\n\n const startX = e.clientX;\n const startWidth = customWidth || parseFloat(config.width) * 16; // Convert rem to px (assuming 1rem = 16px)\n\n // Parse min width from config.width (default sidebar width, not icon width)\n const minWidth = parseFloat(config.width) * 16;\n // Max width based on config (default 30rem if not specified)\n const maxWidthValue = config.maxWidth ?? '30rem';\n const maxWidth = maxWidthValue.endsWith('rem')\n ? parseFloat(maxWidthValue) * 16\n : parseFloat(maxWidthValue);\n\n const handleMouseMove = (e: MouseEvent) => {\n const delta = e.clientX - startX;\n const newWidth = Math.max(minWidth, Math.min(maxWidth, startWidth + delta));\n setCustomWidth(newWidth);\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [state, toggleSidebar, customWidth, config, setCustomWidth],\n );\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onMouseDown={handleMouseDown}\n title={state === 'collapsed' ? 'Expand Sidebar' : 'Drag to resize'}\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n 'after:absolute after:inset-y-0 after:left-1/2 after:w-[1px] after:bg-gray-300 after:transition-all after:duration-200',\n 'hover:after:w-[3px] hover:after:bg-blue-500',\n '[[data-side=left]_&]:cursor-col-resize [[data-side=right]_&]:cursor-col-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n isResizing && 'after:!w-[3px] after:!bg-blue-500 ',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarRail.displayName = 'SidebarRail';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'bg-background relative flex min-h-svh w-full flex-1 flex-col',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn('bg-background w-full shadow-none focus-visible:h-8 ', className)}\n {...props}\n />\n );\n});\nSidebarInput.displayName = 'SidebarInput';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n 'flex flex-col gap-2 pt-3',\n '[padding-left:var(--sidebar-padding-x)] [padding-right:var(--sidebar-padding-x)]',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n const { state, setIsHovered, config } = useSidebar();\n const hoverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const leaveTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = React.useCallback(() => {\n if (state !== 'collapsed' || !config.enableHoverExpand) return;\n\n // Clear any pending leave timeout\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n // Add delay before expanding (300ms)\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n }, 300);\n }, [state, setIsHovered, config.enableHoverExpand]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (!config.enableHoverExpand) return;\n\n // Clear timeout if mouse leaves before delay completes\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n // Add delay before collapsing (200ms)\n leaveTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, 200);\n }, [setIsHovered, config.enableHoverExpand]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2', '[padding:var(--sidebar-padding-x)]', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n />\n );\n },\n);\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n {...props}\n />\n );\n});\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n const { state, setIsHovered, config } = useSidebar();\n const hoverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const leaveTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = React.useCallback(() => {\n if (state !== 'collapsed' || !config.enableHoverExpand) return;\n\n // Clear any pending leave timeout\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n\n // Add delay before expanding (300ms)\n hoverTimeoutRef.current = setTimeout(() => {\n setIsHovered(true);\n }, 300);\n }, [state, setIsHovered, config.enableHoverExpand]);\n\n const handleMouseLeave = React.useCallback(() => {\n if (!config.enableHoverExpand) return;\n\n // Clear timeout if mouse leaves before delay completes\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n // Add delay before collapsing (200ms)\n leaveTimeoutRef.current = setTimeout(() => {\n setIsHovered(false);\n }, 200);\n }, [setIsHovered, config.enableHoverExpand]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (leaveTimeoutRef.current) {\n clearTimeout(leaveTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-4 overflow-auto',\n // Hide scrollbar when collapsed but keep scrolling functionality\n 'group-data-[collapsible=icon]:scrollbar-hide',\n className,\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n />\n );\n },\n);\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n 'relative flex w-full min-w-0 flex-col',\n '[padding-left:var(--sidebar-padding-x)] [padding-right:var(--sidebar-padding-x)]',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'text-ink-500s flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-none transition-[margin,opacity] duration-300 [&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:mt-0 group-data-[collapsible=icon]:group-data-[hovered=true]:opacity-100',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform [&>svg]:size-6 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarGroupAction.displayName = 'SidebarGroupAction';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn('w-full text-base', className)}\n {...props}\n />\n ),\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-2', className)}\n {...props}\n />\n ),\n);\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n ),\n);\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md px-3 py-2 text-left text-base outline-none transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!h-[--sidebar-collapsed-height] group-data-[collapsible=icon]:!w-[--sidebar-collapsed-width] group-data-[collapsible=icon]:!justify-start group-data-[collapsible=icon]:!items-center group-data-[collapsible=icon]:group-data-[hovered=true]:!w-full group-data-[collapsible=icon]:group-data-[hovered=true]:!h-10 group-data-[collapsible=icon]:group-data-[hovered=true]:!pl-3 group-data-[collapsible=icon]:group-data-[hovered=true]:!pr-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!py-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!justify-start [&>span]:whitespace-nowrap [&>span]:transition-[opacity,transform] [&>span]:duration-500 [&>span]:ease-out [&>span]:group-data-[collapsible=icon]:opacity-0 [&>span]:group-data-[collapsible=icon]:hidden [&>span]:group-data-[collapsible=icon]:group-data-[hovered=true]:opacity-100 [&>span]:group-data-[collapsible=icon]:group-data-[hovered=true]:inline [&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-500',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-10 text-base',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-base group-data-[collapsible=icon]:!p-0 group-data-[collapsible=icon]:group-data-[hovered=true]:!pl-3 group-data-[collapsible=icon]:group-data-[hovered=true]:!pr-2 group-data-[collapsible=icon]:group-data-[hovered=true]:!py-2',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n className,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n },\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-all duration-300 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:flex',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'pointer-events-none flex h-5 min-w-5 select-none items-center justify-center rounded-full bg-red-500 px-1 text-xs font-medium tabular-nums text-white transition-all duration-300',\n 'absolute right-1',\n 'peer-hover/menu-button:bg-red-500 peer-data-[active=true]/menu-button:bg-red-500',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!flex',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!relative',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!right-auto',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:!top-auto',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:ml-auto',\n className,\n )}\n {...props}\n />\n ),\n);\nSidebarMenuBadge.displayName = 'SidebarMenuBadge';\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n showIcon?: boolean;\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n});\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton';\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border ml-5 flex min-w-0 translate-x-px flex-col gap-1 pl-3 pt-2 transition-all duration-300',\n 'group-data-[collapsible=icon]:hidden',\n 'group-data-[collapsible=icon]:group-data-[hovered=true]:flex',\n className,\n )}\n {...props}\n />\n ),\n);\nSidebarMenuSub.displayName = 'SidebarMenuSub';\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ ...props }, ref) => <li ref={ref} {...props} />,\n);\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem';\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n }\n>(({ asChild = false, size = 'sm', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-ink-500s hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-10 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-3 py-2 outline-none transition-all duration-300 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>span:last-child]:transition-opacity [&>span:last-child]:duration-300 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:transition-all [&>svg]:duration-300',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-sm',\n size === 'md' && 'text-base',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n );\n});\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"]}
@@ -1,153 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var utils = require('@/lib/utils');
6
-
7
- function _interopNamespace(e) {
8
- if (e && e.__esModule) return e;
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
-
27
- const skeletonVariants = {
28
- pulse: "animate-pulse",
29
- wave: "animate-wave",
30
- none: ""
31
- };
32
- const shapeVariants = {
33
- rectangle: "rounded-md",
34
- circle: "rounded-full",
35
- text: "rounded-sm"
36
- };
37
- const sizeVariants = {
38
- sm: "h-4",
39
- md: "h-6",
40
- lg: "h-8",
41
- xl: "h-12"
42
- };
43
- const Skeleton = React__namespace.forwardRef(
44
- ({
45
- className,
46
- loading = true,
47
- children,
48
- skeleton,
49
- variant = "pulse",
50
- shape = "rectangle",
51
- size,
52
- ...props
53
- }, ref) => {
54
- if (loading === false && children !== void 0 && children !== null) {
55
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
56
- }
57
- if (skeleton) {
58
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: skeleton });
59
- }
60
- if (loading && children) {
61
- const childElement = React__namespace.isValidElement(children) ? children : null;
62
- const childClasses = childElement?.props?.className || "";
63
- const marginClasses = childClasses.split(" ").filter(
64
- (cls) => cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-")
65
- ).join(" ");
66
- const childrenWithoutMargin = React__namespace.isValidElement(children) ? React__namespace.cloneElement(children, {
67
- ...children.props,
68
- className: childClasses.split(" ").filter(
69
- (cls) => !(cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-"))
70
- ).join(" ")
71
- }) : children;
72
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils.cn("relative", marginClasses), ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
73
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none opacity-0", children: childrenWithoutMargin }),
74
- /* @__PURE__ */ jsxRuntime.jsx(
75
- "div",
76
- {
77
- className: utils.cn(
78
- "bg-muted absolute inset-0",
79
- skeletonVariants[variant],
80
- shapeVariants[shape],
81
- className
82
- )
83
- }
84
- )
85
- ] }) });
86
- }
87
- const skeletonClasses = utils.cn(
88
- "bg-muted",
89
- skeletonVariants[variant],
90
- shapeVariants[shape],
91
- size && sizeVariants[size],
92
- // Default dimensions if no size prop and no explicit dimensions
93
- !size && !className?.includes("h-") && !className?.includes("w-") && "h-4 w-full",
94
- className
95
- );
96
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: skeletonClasses, ...props });
97
- }
98
- );
99
- Skeleton.displayName = "Skeleton";
100
- const SkeletonText = React__namespace.forwardRef(
101
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { ref, shape: "text", className: utils.cn("h-4 w-full", className), ...props })
102
- );
103
- SkeletonText.displayName = "SkeletonText";
104
- const SkeletonAvatar = React__namespace.forwardRef(
105
- ({ className, size = "md", ...props }, ref) => {
106
- const avatarSizes = {
107
- sm: "h-8 w-8",
108
- md: "h-10 w-10",
109
- lg: "h-12 w-12",
110
- xl: "h-16 w-16"
111
- };
112
- return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { ref, shape: "circle", className: utils.cn(avatarSizes[size], className), ...props });
113
- }
114
- );
115
- SkeletonAvatar.displayName = "SkeletonAvatar";
116
- const SkeletonCard = React__namespace.forwardRef(
117
- ({ className, children, loading = true, ...props }, ref) => {
118
- if (!loading && children) {
119
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
120
- }
121
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: utils.cn("space-y-3", className), ...props, children: [
122
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-[125px] w-full rounded-xl" }),
123
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
124
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-full" }),
125
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-4/5" })
126
- ] })
127
- ] });
128
- }
129
- );
130
- SkeletonCard.displayName = "SkeletonCard";
131
- const SkeletonList = React__namespace.forwardRef(
132
- ({ className, children, loading = true, items = 3, ...props }, ref) => {
133
- if (!loading && children) {
134
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
135
- }
136
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils.cn("space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-4", children: [
137
- /* @__PURE__ */ jsxRuntime.jsx(SkeletonAvatar, {}),
138
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-2", children: [
139
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-full" }),
140
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-4/5" })
141
- ] })
142
- ] }, i)) });
143
- }
144
- );
145
- SkeletonList.displayName = "SkeletonList";
146
-
147
- exports.Skeleton = Skeleton;
148
- exports.SkeletonAvatar = SkeletonAvatar;
149
- exports.SkeletonCard = SkeletonCard;
150
- exports.SkeletonList = SkeletonList;
151
- exports.SkeletonText = SkeletonText;
152
- //# sourceMappingURL=skeleton.js.map
153
- //# sourceMappingURL=skeleton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/skeleton.tsx"],"names":["React","jsx","cn","jsxs"],"mappings":"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","file":"skeleton.js","sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * When true, shows skeleton. When false, shows children.\n */\n loading?: boolean;\n /**\n * Content to show when loading is false\n */\n children?: React.ReactNode;\n /**\n * Custom skeleton component to use instead of default\n */\n skeleton?: React.ReactNode;\n /**\n * Animation variant\n */\n variant?: 'pulse' | 'wave' | 'none';\n /**\n * Skeleton shape\n */\n shape?: 'rectangle' | 'circle' | 'text';\n /**\n * Size preset for common use cases\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nconst skeletonVariants = {\n pulse: 'animate-pulse',\n wave: 'animate-wave',\n none: '',\n};\n\nconst shapeVariants = {\n rectangle: 'rounded-md',\n circle: 'rounded-full',\n text: 'rounded-sm',\n};\n\nconst sizeVariants = {\n sm: 'h-4',\n md: 'h-6',\n lg: 'h-8',\n xl: 'h-12',\n};\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n loading = true,\n children,\n skeleton,\n variant = 'pulse',\n shape = 'rectangle',\n size,\n ...props\n },\n ref,\n ) => {\n // If loading is false, render children normally\n if (loading === false && children !== undefined && children !== null) {\n return <>{children}</>;\n }\n\n // If custom skeleton is provided, use it\n if (skeleton) {\n return <>{skeleton}</>;\n }\n\n // If we have children, render invisible children with skeleton overlay\n if (loading && children) {\n // Extract the children element to copy its classes\n const childElement = React.isValidElement(children) ? children : null;\n const childClasses = childElement?.props?.className || '';\n\n // Extract margin classes from children\n const marginClasses = childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-'),\n )\n .join(' ');\n\n // Create children without margin classes for accurate content area measurement\n const childrenWithoutMargin = React.isValidElement(children)\n ? React.cloneElement(children, {\n ...children.props,\n className: childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n !(\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-')\n ),\n )\n .join(' '),\n })\n : children;\n\n return (\n <div ref={ref} className={cn('relative', marginClasses)} {...props}>\n {/* Container for content area only - maintains exact content dimensions */}\n <div className=\"relative\">\n {/* Invisible children to maintain exact layout and dimensions */}\n <div className=\"pointer-events-none opacity-0\">{childrenWithoutMargin}</div>\n {/* Skeleton overlay - only covers content area, not margins */}\n <div\n className={cn(\n 'bg-muted absolute inset-0',\n skeletonVariants[variant],\n shapeVariants[shape],\n className,\n )}\n />\n </div>\n </div>\n );\n }\n\n // Default skeleton classes for when no children are provided\n const skeletonClasses = cn(\n 'bg-muted',\n skeletonVariants[variant],\n shapeVariants[shape],\n size && sizeVariants[size],\n // Default dimensions if no size prop and no explicit dimensions\n !size && !className?.includes('h-') && !className?.includes('w-') && 'h-4 w-full',\n className,\n );\n\n return <div ref={ref} className={skeletonClasses} {...props} />;\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n\n// Skeleton presets for common use cases\nconst SkeletonText = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, ...props }, ref) => (\n <Skeleton ref={ref} shape=\"text\" className={cn('h-4 w-full', className)} {...props} />\n ),\n);\nSkeletonText.displayName = 'SkeletonText';\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, size = 'md', ...props }, ref) => {\n const avatarSizes = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n };\n\n return (\n <Skeleton ref={ref} shape=\"circle\" className={cn(avatarSizes[size], className)} {...props} />\n );\n },\n);\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, children, loading = true, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n <Skeleton className=\"h-[125px] w-full rounded-xl\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n );\n },\n);\nSkeletonCard.displayName = 'SkeletonCard';\n\nconst SkeletonList = React.forwardRef<HTMLDivElement, SkeletonProps & { items?: number }>(\n ({ className, children, loading = true, items = 3, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-4\">\n <SkeletonAvatar />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nSkeletonList.displayName = 'SkeletonList';\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonList };\n"]}
@@ -1,127 +0,0 @@
1
- import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import { cn } from '@/lib/utils';
4
-
5
- const skeletonVariants = {
6
- pulse: "animate-pulse",
7
- wave: "animate-wave",
8
- none: ""
9
- };
10
- const shapeVariants = {
11
- rectangle: "rounded-md",
12
- circle: "rounded-full",
13
- text: "rounded-sm"
14
- };
15
- const sizeVariants = {
16
- sm: "h-4",
17
- md: "h-6",
18
- lg: "h-8",
19
- xl: "h-12"
20
- };
21
- const Skeleton = React.forwardRef(
22
- ({
23
- className,
24
- loading = true,
25
- children,
26
- skeleton,
27
- variant = "pulse",
28
- shape = "rectangle",
29
- size,
30
- ...props
31
- }, ref) => {
32
- if (loading === false && children !== void 0 && children !== null) {
33
- return /* @__PURE__ */ jsx(Fragment, { children });
34
- }
35
- if (skeleton) {
36
- return /* @__PURE__ */ jsx(Fragment, { children: skeleton });
37
- }
38
- if (loading && children) {
39
- const childElement = React.isValidElement(children) ? children : null;
40
- const childClasses = childElement?.props?.className || "";
41
- const marginClasses = childClasses.split(" ").filter(
42
- (cls) => cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-")
43
- ).join(" ");
44
- const childrenWithoutMargin = React.isValidElement(children) ? React.cloneElement(children, {
45
- ...children.props,
46
- className: childClasses.split(" ").filter(
47
- (cls) => !(cls.startsWith("m-") || cls.startsWith("mt-") || cls.startsWith("mb-") || cls.startsWith("ml-") || cls.startsWith("mr-") || cls.startsWith("mx-") || cls.startsWith("my-") || cls.startsWith("margin-"))
48
- ).join(" ")
49
- }) : children;
50
- return /* @__PURE__ */ jsx("div", { ref, className: cn("relative", marginClasses), ...props, children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
51
- /* @__PURE__ */ jsx("div", { className: "pointer-events-none opacity-0", children: childrenWithoutMargin }),
52
- /* @__PURE__ */ jsx(
53
- "div",
54
- {
55
- className: cn(
56
- "bg-muted absolute inset-0",
57
- skeletonVariants[variant],
58
- shapeVariants[shape],
59
- className
60
- )
61
- }
62
- )
63
- ] }) });
64
- }
65
- const skeletonClasses = cn(
66
- "bg-muted",
67
- skeletonVariants[variant],
68
- shapeVariants[shape],
69
- size && sizeVariants[size],
70
- // Default dimensions if no size prop and no explicit dimensions
71
- !size && !className?.includes("h-") && !className?.includes("w-") && "h-4 w-full",
72
- className
73
- );
74
- return /* @__PURE__ */ jsx("div", { ref, className: skeletonClasses, ...props });
75
- }
76
- );
77
- Skeleton.displayName = "Skeleton";
78
- const SkeletonText = React.forwardRef(
79
- ({ className, ...props }, ref) => /* @__PURE__ */ jsx(Skeleton, { ref, shape: "text", className: cn("h-4 w-full", className), ...props })
80
- );
81
- SkeletonText.displayName = "SkeletonText";
82
- const SkeletonAvatar = React.forwardRef(
83
- ({ className, size = "md", ...props }, ref) => {
84
- const avatarSizes = {
85
- sm: "h-8 w-8",
86
- md: "h-10 w-10",
87
- lg: "h-12 w-12",
88
- xl: "h-16 w-16"
89
- };
90
- return /* @__PURE__ */ jsx(Skeleton, { ref, shape: "circle", className: cn(avatarSizes[size], className), ...props });
91
- }
92
- );
93
- SkeletonAvatar.displayName = "SkeletonAvatar";
94
- const SkeletonCard = React.forwardRef(
95
- ({ className, children, loading = true, ...props }, ref) => {
96
- if (!loading && children) {
97
- return /* @__PURE__ */ jsx(Fragment, { children });
98
- }
99
- return /* @__PURE__ */ jsxs("div", { ref, className: cn("space-y-3", className), ...props, children: [
100
- /* @__PURE__ */ jsx(Skeleton, { className: "h-[125px] w-full rounded-xl" }),
101
- /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
102
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
103
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-4/5" })
104
- ] })
105
- ] });
106
- }
107
- );
108
- SkeletonCard.displayName = "SkeletonCard";
109
- const SkeletonList = React.forwardRef(
110
- ({ className, children, loading = true, items = 3, ...props }, ref) => {
111
- if (!loading && children) {
112
- return /* @__PURE__ */ jsx(Fragment, { children });
113
- }
114
- return /* @__PURE__ */ jsx("div", { ref, className: cn("space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-4", children: [
115
- /* @__PURE__ */ jsx(SkeletonAvatar, {}),
116
- /* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-2", children: [
117
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
118
- /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-4/5" })
119
- ] })
120
- ] }, i)) });
121
- }
122
- );
123
- SkeletonList.displayName = "SkeletonList";
124
-
125
- export { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList, SkeletonText };
126
- //# sourceMappingURL=skeleton.mjs.map
127
- //# sourceMappingURL=skeleton.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"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","file":"skeleton.mjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * When true, shows skeleton. When false, shows children.\n */\n loading?: boolean;\n /**\n * Content to show when loading is false\n */\n children?: React.ReactNode;\n /**\n * Custom skeleton component to use instead of default\n */\n skeleton?: React.ReactNode;\n /**\n * Animation variant\n */\n variant?: 'pulse' | 'wave' | 'none';\n /**\n * Skeleton shape\n */\n shape?: 'rectangle' | 'circle' | 'text';\n /**\n * Size preset for common use cases\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nconst skeletonVariants = {\n pulse: 'animate-pulse',\n wave: 'animate-wave',\n none: '',\n};\n\nconst shapeVariants = {\n rectangle: 'rounded-md',\n circle: 'rounded-full',\n text: 'rounded-sm',\n};\n\nconst sizeVariants = {\n sm: 'h-4',\n md: 'h-6',\n lg: 'h-8',\n xl: 'h-12',\n};\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n loading = true,\n children,\n skeleton,\n variant = 'pulse',\n shape = 'rectangle',\n size,\n ...props\n },\n ref,\n ) => {\n // If loading is false, render children normally\n if (loading === false && children !== undefined && children !== null) {\n return <>{children}</>;\n }\n\n // If custom skeleton is provided, use it\n if (skeleton) {\n return <>{skeleton}</>;\n }\n\n // If we have children, render invisible children with skeleton overlay\n if (loading && children) {\n // Extract the children element to copy its classes\n const childElement = React.isValidElement(children) ? children : null;\n const childClasses = childElement?.props?.className || '';\n\n // Extract margin classes from children\n const marginClasses = childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-'),\n )\n .join(' ');\n\n // Create children without margin classes for accurate content area measurement\n const childrenWithoutMargin = React.isValidElement(children)\n ? React.cloneElement(children, {\n ...children.props,\n className: childClasses\n .split(' ')\n .filter(\n (cls: string) =>\n !(\n cls.startsWith('m-') ||\n cls.startsWith('mt-') ||\n cls.startsWith('mb-') ||\n cls.startsWith('ml-') ||\n cls.startsWith('mr-') ||\n cls.startsWith('mx-') ||\n cls.startsWith('my-') ||\n cls.startsWith('margin-')\n ),\n )\n .join(' '),\n })\n : children;\n\n return (\n <div ref={ref} className={cn('relative', marginClasses)} {...props}>\n {/* Container for content area only - maintains exact content dimensions */}\n <div className=\"relative\">\n {/* Invisible children to maintain exact layout and dimensions */}\n <div className=\"pointer-events-none opacity-0\">{childrenWithoutMargin}</div>\n {/* Skeleton overlay - only covers content area, not margins */}\n <div\n className={cn(\n 'bg-muted absolute inset-0',\n skeletonVariants[variant],\n shapeVariants[shape],\n className,\n )}\n />\n </div>\n </div>\n );\n }\n\n // Default skeleton classes for when no children are provided\n const skeletonClasses = cn(\n 'bg-muted',\n skeletonVariants[variant],\n shapeVariants[shape],\n size && sizeVariants[size],\n // Default dimensions if no size prop and no explicit dimensions\n !size && !className?.includes('h-') && !className?.includes('w-') && 'h-4 w-full',\n className,\n );\n\n return <div ref={ref} className={skeletonClasses} {...props} />;\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n\n// Skeleton presets for common use cases\nconst SkeletonText = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, ...props }, ref) => (\n <Skeleton ref={ref} shape=\"text\" className={cn('h-4 w-full', className)} {...props} />\n ),\n);\nSkeletonText.displayName = 'SkeletonText';\n\nconst SkeletonAvatar = React.forwardRef<HTMLDivElement, Omit<SkeletonProps, 'shape'>>(\n ({ className, size = 'md', ...props }, ref) => {\n const avatarSizes = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n };\n\n return (\n <Skeleton ref={ref} shape=\"circle\" className={cn(avatarSizes[size], className)} {...props} />\n );\n },\n);\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nconst SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, children, loading = true, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n <Skeleton className=\"h-[125px] w-full rounded-xl\" />\n <div className=\"space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n );\n },\n);\nSkeletonCard.displayName = 'SkeletonCard';\n\nconst SkeletonList = React.forwardRef<HTMLDivElement, SkeletonProps & { items?: number }>(\n ({ className, children, loading = true, items = 3, ...props }, ref) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-4\">\n <SkeletonAvatar />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-4/5\" />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\nSkeletonList.displayName = 'SkeletonList';\n\nexport { Skeleton, SkeletonText, SkeletonAvatar, SkeletonCard, SkeletonList };\n"]}
@@ -1,45 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var SliderPrimitive = require('@radix-ui/react-slider');
6
- var utils = require('@/lib/utils');
7
-
8
- function _interopNamespace(e) {
9
- if (e && e.__esModule) return e;
10
- var n = Object.create(null);
11
- if (e) {
12
- Object.keys(e).forEach(function (k) {
13
- if (k !== 'default') {
14
- var d = Object.getOwnPropertyDescriptor(e, k);
15
- Object.defineProperty(n, k, d.get ? d : {
16
- enumerable: true,
17
- get: function () { return e[k]; }
18
- });
19
- }
20
- });
21
- }
22
- n.default = e;
23
- return Object.freeze(n);
24
- }
25
-
26
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
- var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
28
-
29
- const Slider = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
30
- SliderPrimitive__namespace.Root,
31
- {
32
- ref,
33
- className: utils.cn("relative flex w-full touch-none select-none items-center", className),
34
- ...props,
35
- children: [
36
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "bg-muted relative h-2 w-full grow overflow-hidden rounded-full", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "bg-primary absolute h-full" }) }),
37
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
38
- ]
39
- }
40
- ));
41
- Slider.displayName = SliderPrimitive__namespace.Root.displayName;
42
-
43
- exports.Slider = Slider;
44
- //# sourceMappingURL=slider.js.map
45
- //# sourceMappingURL=slider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/slider.tsx"],"names":["React","jsxs","SliderPrimitive","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,MAAA,GAASA,iBAAM,UAAA,CAGnB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,eAAA;AAAA,EAACC,0BAAA,CAAgB,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,QAAA,CAAG,0DAAA,EAA4D,SAAS,CAAA;AAAA,IAClF,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACF,0BAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,gEAAA,EAC/B,QAAA,kBAAAE,cAAA,CAACF,0BAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAChE,CAAA;AAAA,sBACAE,cAAA,CAACF,0BAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAU,gKAAA,EAAiK;AAAA;AAAA;AACpM,CACD;AACD,MAAA,CAAO,WAAA,GAAcA,2BAAgB,IAAA,CAAK,WAAA","file":"slider.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-muted relative h-2 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-primary absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"]}
@@ -1,22 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as SliderPrimitive from '@radix-ui/react-slider';
4
- import { cn } from '@/lib/utils';
5
-
6
- const Slider = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
7
- SliderPrimitive.Root,
8
- {
9
- ref,
10
- className: cn("relative flex w-full touch-none select-none items-center", className),
11
- ...props,
12
- children: [
13
- /* @__PURE__ */ jsx(SliderPrimitive.Track, { className: "bg-muted relative h-2 w-full grow overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "bg-primary absolute h-full" }) }),
14
- /* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" })
15
- ]
16
- }
17
- ));
18
- Slider.displayName = SliderPrimitive.Root.displayName;
19
-
20
- export { Slider };
21
- //# sourceMappingURL=slider.mjs.map
22
- //# sourceMappingURL=slider.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/slider.tsx"],"names":[],"mappings":";;;;;AAOA,MAAM,MAAA,GAAS,MAAM,UAAA,CAGnB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B,IAAA;AAAA,EAAC,eAAA,CAAgB,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0DAAA,EAA4D,SAAS,CAAA;AAAA,IAClF,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,eAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,gEAAA,EAC/B,QAAA,kBAAA,GAAA,CAAC,eAAA,CAAgB,KAAA,EAAhB,EAAsB,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAChE,CAAA;AAAA,sBACA,GAAA,CAAC,eAAA,CAAgB,KAAA,EAAhB,EAAsB,WAAU,gKAAA,EAAiK;AAAA;AAAA;AACpM,CACD;AACD,MAAA,CAAO,WAAA,GAAc,gBAAgB,IAAA,CAAK,WAAA","file":"slider.mjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"bg-muted relative h-2 w-full grow overflow-hidden rounded-full\">\n <SliderPrimitive.Range className=\"bg-primary absolute h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"border-primary bg-background block h-5 w-5 rounded-full border-2 transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"]}