@codefast/ui 0.2.38 → 0.2.40

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 (373) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/{chunk-45XT7WPV.cjs → chunk-2BQKAZIK.cjs} +2 -2
  3. package/dist/{chunk-45XT7WPV.cjs.map → chunk-2BQKAZIK.cjs.map} +1 -1
  4. package/dist/{chunk-Q24HBDJY.cjs → chunk-2HRC7KM5.cjs} +2 -2
  5. package/dist/{chunk-Q24HBDJY.cjs.map → chunk-2HRC7KM5.cjs.map} +1 -1
  6. package/dist/{chunk-3Z67RHJ3.js → chunk-2ONIOLJQ.js} +2 -2
  7. package/dist/{chunk-64QR6CGF.js → chunk-3AEEOFHT.js} +2 -2
  8. package/dist/chunk-3AEEOFHT.js.map +1 -0
  9. package/dist/{chunk-U7UJHUBW.js → chunk-3NUSPFUR.js} +2 -2
  10. package/dist/{chunk-KZTYZ4SE.js → chunk-3QNA5W7W.js} +2 -2
  11. package/dist/{chunk-S7RX6JQY.js → chunk-43LREVQW.js} +2 -2
  12. package/dist/chunk-4C3B26NE.js +2 -0
  13. package/dist/chunk-4C3B26NE.js.map +1 -0
  14. package/dist/{chunk-3E3ZQIUX.js → chunk-4ENRIR3P.js} +2 -2
  15. package/dist/{chunk-KOVXL4P6.cjs → chunk-4H4ZNNN4.cjs} +2 -2
  16. package/dist/{chunk-KOVXL4P6.cjs.map → chunk-4H4ZNNN4.cjs.map} +1 -1
  17. package/dist/{chunk-SRP463XH.cjs → chunk-4KX73AQJ.cjs} +2 -2
  18. package/dist/{chunk-SRP463XH.cjs.map → chunk-4KX73AQJ.cjs.map} +1 -1
  19. package/dist/{chunk-SMJEDCFP.cjs → chunk-4QBKNZJK.cjs} +1 -1
  20. package/dist/chunk-4QBKNZJK.cjs.map +1 -0
  21. package/dist/chunk-5J5PZ5RW.cjs +2 -0
  22. package/dist/{chunk-NJZ3TDB6.cjs.map → chunk-5J5PZ5RW.cjs.map} +1 -1
  23. package/dist/{chunk-NOJBMCCJ.cjs → chunk-5JTBH2HB.cjs} +2 -2
  24. package/dist/chunk-5JTBH2HB.cjs.map +1 -0
  25. package/dist/{chunk-EMPC5HNU.cjs → chunk-5W5EYATS.cjs} +2 -2
  26. package/dist/{chunk-EMPC5HNU.cjs.map → chunk-5W5EYATS.cjs.map} +1 -1
  27. package/dist/{chunk-Q2PAHIDW.js → chunk-5ZGCITOG.js} +2 -2
  28. package/dist/{chunk-2HEVHJKK.cjs → chunk-62KSISJB.cjs} +2 -2
  29. package/dist/{chunk-2HEVHJKK.cjs.map → chunk-62KSISJB.cjs.map} +1 -1
  30. package/dist/{chunk-YCCLSFED.js → chunk-6S537DLU.js} +2 -2
  31. package/dist/{chunk-FF7RJQ5V.js → chunk-6SXDMOC6.js} +2 -2
  32. package/dist/{chunk-P7IDB2YN.js → chunk-6VLIWII3.js} +2 -2
  33. package/dist/{chunk-MKBJXYE2.cjs → chunk-73ZVOEYN.cjs} +2 -2
  34. package/dist/{chunk-MKBJXYE2.cjs.map → chunk-73ZVOEYN.cjs.map} +1 -1
  35. package/dist/{chunk-HPWHFFV6.cjs → chunk-75QPTJUO.cjs} +2 -2
  36. package/dist/chunk-75QPTJUO.cjs.map +1 -0
  37. package/dist/{chunk-3H3UNZUP.cjs → chunk-77MMVARO.cjs} +2 -2
  38. package/dist/{chunk-3H3UNZUP.cjs.map → chunk-77MMVARO.cjs.map} +1 -1
  39. package/dist/{chunk-IK76PHGB.cjs → chunk-7EG2MKOP.cjs} +2 -2
  40. package/dist/{chunk-IK76PHGB.cjs.map → chunk-7EG2MKOP.cjs.map} +1 -1
  41. package/dist/{chunk-W7IUS6U5.cjs → chunk-7H66BMH4.cjs} +2 -2
  42. package/dist/{chunk-W7IUS6U5.cjs.map → chunk-7H66BMH4.cjs.map} +1 -1
  43. package/dist/{chunk-PRQOBYFW.js → chunk-7ZBO62H2.js} +2 -2
  44. package/dist/{chunk-GPPLLR2C.cjs → chunk-ALK54X5M.cjs} +2 -2
  45. package/dist/{chunk-GPPLLR2C.cjs.map → chunk-ALK54X5M.cjs.map} +1 -1
  46. package/dist/chunk-AOEBEZCM.cjs +2 -0
  47. package/dist/chunk-AOEBEZCM.cjs.map +1 -0
  48. package/dist/{chunk-YX4V3LJU.cjs → chunk-BM46YHNI.cjs} +2 -2
  49. package/dist/{chunk-YX4V3LJU.cjs.map → chunk-BM46YHNI.cjs.map} +1 -1
  50. package/dist/{chunk-MKTUHVAW.js → chunk-BSU5RNRG.js} +2 -2
  51. package/dist/{chunk-QGFB3EOD.js → chunk-BYHI4274.js} +2 -2
  52. package/dist/{chunk-HODP3L6K.js → chunk-CB2YNTH2.js} +2 -2
  53. package/dist/{chunk-J6744AYH.js → chunk-CXVL5MZT.js} +2 -2
  54. package/dist/{chunk-NHKDM4JU.cjs → chunk-D5C2LKXA.cjs} +2 -2
  55. package/dist/{chunk-NHKDM4JU.cjs.map → chunk-D5C2LKXA.cjs.map} +1 -1
  56. package/dist/chunk-DX7ZENLD.js +2 -0
  57. package/dist/chunk-DX7ZENLD.js.map +1 -0
  58. package/dist/{chunk-UOBUAOYY.js → chunk-E3GP3ZDU.js} +2 -2
  59. package/dist/{chunk-RBIJMA3G.js → chunk-EBODIPD3.js} +2 -2
  60. package/dist/{chunk-HI5KN7UL.js → chunk-ETZEGAE4.js} +2 -2
  61. package/dist/chunk-FJ4SSSQI.cjs +3 -0
  62. package/dist/chunk-FJ4SSSQI.cjs.map +1 -0
  63. package/dist/{chunk-MCQAUDRK.js → chunk-FXESF4F3.js} +2 -2
  64. package/dist/chunk-FYKXZB7Y.js +3 -0
  65. package/dist/chunk-FYKXZB7Y.js.map +1 -0
  66. package/dist/{chunk-HFJKDL4E.cjs → chunk-G5SJUAN7.cjs} +2 -2
  67. package/dist/{chunk-HFJKDL4E.cjs.map → chunk-G5SJUAN7.cjs.map} +1 -1
  68. package/dist/{chunk-CKTJRT3X.js → chunk-GHZJL33D.js} +2 -2
  69. package/dist/{chunk-3XOJLY6Y.js → chunk-H5KHKTXM.js} +2 -2
  70. package/dist/{chunk-GBDXWKYX.cjs → chunk-HJKUWJAQ.cjs} +2 -2
  71. package/dist/{chunk-GBDXWKYX.cjs.map → chunk-HJKUWJAQ.cjs.map} +1 -1
  72. package/dist/{chunk-MCGDQEI6.js → chunk-HRARWB2V.js} +2 -2
  73. package/dist/{chunk-5U6B5LAO.js → chunk-HZF7PYFL.js} +2 -2
  74. package/dist/chunk-I3R7CYAL.js +2 -0
  75. package/dist/chunk-I3R7CYAL.js.map +1 -0
  76. package/dist/{chunk-UAS5UKTZ.cjs → chunk-IY35R752.cjs} +2 -2
  77. package/dist/{chunk-UAS5UKTZ.cjs.map → chunk-IY35R752.cjs.map} +1 -1
  78. package/dist/{chunk-ASEUIM44.cjs → chunk-IYUJ5OKV.cjs} +2 -2
  79. package/dist/{chunk-ASEUIM44.cjs.map → chunk-IYUJ5OKV.cjs.map} +1 -1
  80. package/dist/{chunk-RNLUQH6E.cjs → chunk-J3VCCLJE.cjs} +2 -2
  81. package/dist/{chunk-RNLUQH6E.cjs.map → chunk-J3VCCLJE.cjs.map} +1 -1
  82. package/dist/{chunk-K4Y4Y2YP.cjs → chunk-JD762OCB.cjs} +2 -2
  83. package/dist/{chunk-K4Y4Y2YP.cjs.map → chunk-JD762OCB.cjs.map} +1 -1
  84. package/dist/{chunk-FPZHSVY3.js → chunk-JO7EANFR.js} +2 -2
  85. package/dist/{chunk-ZIIE5XVL.js → chunk-K63CIBXO.js} +2 -2
  86. package/dist/{chunk-PQPCVOZX.cjs → chunk-KFKATGAI.cjs} +2 -2
  87. package/dist/{chunk-PQPCVOZX.cjs.map → chunk-KFKATGAI.cjs.map} +1 -1
  88. package/dist/{chunk-7CCZJ647.cjs → chunk-KHTUADLQ.cjs} +2 -2
  89. package/dist/{chunk-7CCZJ647.cjs.map → chunk-KHTUADLQ.cjs.map} +1 -1
  90. package/dist/{chunk-K73VMNRR.js → chunk-KNCCX2RR.js} +2 -2
  91. package/dist/{chunk-OKUFCFYT.js → chunk-KWNBGPPE.js} +1 -1
  92. package/dist/chunk-KWNBGPPE.js.map +1 -0
  93. package/dist/{chunk-VSTEK27Z.cjs → chunk-KY6BYWI2.cjs} +2 -2
  94. package/dist/{chunk-VSTEK27Z.cjs.map → chunk-KY6BYWI2.cjs.map} +1 -1
  95. package/dist/{chunk-WBNOGWR4.js → chunk-KZBQGSMG.js} +2 -2
  96. package/dist/{chunk-3X3FY776.js → chunk-LBTP74TP.js} +2 -2
  97. package/dist/{chunk-OP6TXGBC.js → chunk-LCW5IZ6X.js} +2 -2
  98. package/dist/chunk-LJTE4MA2.cjs +2 -0
  99. package/dist/chunk-LJTE4MA2.cjs.map +1 -0
  100. package/dist/{chunk-UQCCSFW6.js → chunk-LQXNGCYD.js} +2 -2
  101. package/dist/{chunk-7KXMJMOL.js → chunk-M2CSPS4G.js} +2 -2
  102. package/dist/{chunk-PZIWZBH2.js → chunk-MOTXNJBG.js} +2 -2
  103. package/dist/chunk-MUU4UWRP.js +2 -0
  104. package/dist/{chunk-BH3PX3OD.js.map → chunk-MUU4UWRP.js.map} +1 -1
  105. package/dist/{chunk-OT65LUKH.cjs → chunk-NIGVA42Q.cjs} +2 -2
  106. package/dist/{chunk-OT65LUKH.cjs.map → chunk-NIGVA42Q.cjs.map} +1 -1
  107. package/dist/{chunk-JW6C57Y5.cjs → chunk-O2AV7D77.cjs} +2 -2
  108. package/dist/{chunk-JW6C57Y5.cjs.map → chunk-O2AV7D77.cjs.map} +1 -1
  109. package/dist/{chunk-SSNF4WDW.js → chunk-OPZLDNA6.js} +2 -2
  110. package/dist/{chunk-CT4OIAD4.cjs → chunk-OVKRBTSG.cjs} +2 -2
  111. package/dist/{chunk-CT4OIAD4.cjs.map → chunk-OVKRBTSG.cjs.map} +1 -1
  112. package/dist/{chunk-3KHRUHYT.cjs → chunk-OWHTDN3B.cjs} +2 -2
  113. package/dist/{chunk-3KHRUHYT.cjs.map → chunk-OWHTDN3B.cjs.map} +1 -1
  114. package/dist/{chunk-XXUOW3ID.cjs → chunk-PAZGMXP5.cjs} +2 -2
  115. package/dist/{chunk-XXUOW3ID.cjs.map → chunk-PAZGMXP5.cjs.map} +1 -1
  116. package/dist/{chunk-X5CR4RIL.cjs → chunk-PL6HV27V.cjs} +2 -2
  117. package/dist/{chunk-X5CR4RIL.cjs.map → chunk-PL6HV27V.cjs.map} +1 -1
  118. package/dist/{chunk-BROQJJQQ.cjs → chunk-QSRWMDFU.cjs} +2 -2
  119. package/dist/{chunk-BROQJJQQ.cjs.map → chunk-QSRWMDFU.cjs.map} +1 -1
  120. package/dist/{chunk-HD2FCRL3.cjs → chunk-QU3TG2M3.cjs} +2 -2
  121. package/dist/{chunk-HD2FCRL3.cjs.map → chunk-QU3TG2M3.cjs.map} +1 -1
  122. package/dist/{chunk-GDOXPS6I.cjs → chunk-RDYII63G.cjs} +2 -2
  123. package/dist/{chunk-GDOXPS6I.cjs.map → chunk-RDYII63G.cjs.map} +1 -1
  124. package/dist/{chunk-POJOZ7HM.cjs → chunk-RGTR4W4L.cjs} +2 -2
  125. package/dist/{chunk-POJOZ7HM.cjs.map → chunk-RGTR4W4L.cjs.map} +1 -1
  126. package/dist/{chunk-OSBDYGS3.cjs → chunk-RIYYTPW4.cjs} +2 -2
  127. package/dist/{chunk-OSBDYGS3.cjs.map → chunk-RIYYTPW4.cjs.map} +1 -1
  128. package/dist/{chunk-YLVYJ4QQ.js → chunk-RJCUZWSQ.js} +2 -2
  129. package/dist/{chunk-UYWVE5DL.cjs → chunk-RPR4QRQK.cjs} +2 -2
  130. package/dist/{chunk-UYWVE5DL.cjs.map → chunk-RPR4QRQK.cjs.map} +1 -1
  131. package/dist/{chunk-QHTSSIGW.cjs → chunk-S32LYY3O.cjs} +2 -2
  132. package/dist/{chunk-QHTSSIGW.cjs.map → chunk-S32LYY3O.cjs.map} +1 -1
  133. package/dist/{chunk-D6Q6LYOK.js → chunk-S4YRB53E.js} +2 -2
  134. package/dist/{chunk-7TYGHN3F.js → chunk-S6SBFTOK.js} +2 -2
  135. package/dist/{chunk-BZPP4CU7.cjs → chunk-SDAQL72I.cjs} +2 -2
  136. package/dist/{chunk-BZPP4CU7.cjs.map → chunk-SDAQL72I.cjs.map} +1 -1
  137. package/dist/chunk-SDQKG5LX.js +2 -0
  138. package/dist/{chunk-LEHRUJ2L.js.map → chunk-SDQKG5LX.js.map} +1 -1
  139. package/dist/{chunk-BWJ6X4FP.js → chunk-SNR6C2TD.js} +2 -2
  140. package/dist/{chunk-MCMCMOW6.cjs → chunk-THIOYFBD.cjs} +2 -2
  141. package/dist/{chunk-MCMCMOW6.cjs.map → chunk-THIOYFBD.cjs.map} +1 -1
  142. package/dist/{chunk-JJW4VWZS.cjs → chunk-UGLIJJJD.cjs} +2 -2
  143. package/dist/chunk-UGLIJJJD.cjs.map +1 -0
  144. package/dist/{chunk-GSIKFVMY.js → chunk-UTP25IOS.js} +2 -2
  145. package/dist/{chunk-FR7P352M.js → chunk-UU6JKB54.js} +2 -2
  146. package/dist/chunk-UWO435VO.cjs +2 -0
  147. package/dist/{chunk-BGHCFQCV.cjs.map → chunk-UWO435VO.cjs.map} +1 -1
  148. package/dist/{chunk-GIPFEUMD.js → chunk-VCQXS2LO.js} +2 -2
  149. package/dist/{chunk-VR6XYLVU.js → chunk-VGNEJZTI.js} +2 -2
  150. package/dist/{chunk-US2PK6G5.cjs → chunk-VXLQ4MHB.cjs} +2 -2
  151. package/dist/{chunk-US2PK6G5.cjs.map → chunk-VXLQ4MHB.cjs.map} +1 -1
  152. package/dist/{chunk-OBHL2EPC.cjs → chunk-W4M2CMNL.cjs} +2 -2
  153. package/dist/{chunk-OBHL2EPC.cjs.map → chunk-W4M2CMNL.cjs.map} +1 -1
  154. package/dist/{chunk-AAAIMKE6.cjs → chunk-WCB6FMMN.cjs} +2 -2
  155. package/dist/{chunk-AAAIMKE6.cjs.map → chunk-WCB6FMMN.cjs.map} +1 -1
  156. package/dist/{chunk-P6OP3EXT.cjs → chunk-WNJFKING.cjs} +2 -2
  157. package/dist/{chunk-P6OP3EXT.cjs.map → chunk-WNJFKING.cjs.map} +1 -1
  158. package/dist/{chunk-IDELSFHC.cjs → chunk-XMUIAC76.cjs} +2 -2
  159. package/dist/{chunk-IDELSFHC.cjs.map → chunk-XMUIAC76.cjs.map} +1 -1
  160. package/dist/{chunk-E3QLJTUQ.js → chunk-YWBLBKF6.js} +2 -2
  161. package/dist/chunk-YWBLBKF6.js.map +1 -0
  162. package/dist/{chunk-Y3I5EBH6.js → chunk-YYWPQ4QR.js} +2 -2
  163. package/dist/{chunk-CWDAAKQY.js → chunk-Z3CRHOTP.js} +2 -2
  164. package/dist/{chunk-ZQRHXFQO.js → chunk-ZD5ZM7S7.js} +2 -2
  165. package/dist/{chunk-B74UCONC.js → chunk-ZG6U2QZG.js} +2 -2
  166. package/dist/{chunk-B74UCONC.js.map → chunk-ZG6U2QZG.js.map} +1 -1
  167. package/dist/{chunk-SLXE24VS.cjs → chunk-ZK3HUPSZ.cjs} +2 -2
  168. package/dist/{chunk-SLXE24VS.cjs.map → chunk-ZK3HUPSZ.cjs.map} +1 -1
  169. package/dist/{chunk-4SZM4OZX.cjs → chunk-ZKB3PMFS.cjs} +2 -2
  170. package/dist/{chunk-4SZM4OZX.cjs.map → chunk-ZKB3PMFS.cjs.map} +1 -1
  171. package/dist/{chunk-TUAQU25Y.cjs → chunk-ZOMNWNKC.cjs} +2 -2
  172. package/dist/{chunk-TUAQU25Y.cjs.map → chunk-ZOMNWNKC.cjs.map} +1 -1
  173. package/dist/{chunk-YNN7KJQN.js → chunk-ZZLPOTQ2.js} +2 -2
  174. package/dist/components/accordion.cjs +1 -1
  175. package/dist/components/accordion.js +1 -1
  176. package/dist/components/alert-dialog.cjs +1 -1
  177. package/dist/components/alert-dialog.js +1 -1
  178. package/dist/components/alert.cjs +1 -1
  179. package/dist/components/alert.js +1 -1
  180. package/dist/components/avatar.cjs +1 -1
  181. package/dist/components/avatar.js +1 -1
  182. package/dist/components/breadcrumb.cjs +1 -1
  183. package/dist/components/breadcrumb.js +1 -1
  184. package/dist/components/button.cjs +1 -1
  185. package/dist/components/button.js +1 -1
  186. package/dist/components/calendar.cjs +1 -1
  187. package/dist/components/calendar.js +1 -1
  188. package/dist/components/card.cjs +1 -1
  189. package/dist/components/card.js +1 -1
  190. package/dist/components/carousel.cjs +1 -1
  191. package/dist/components/carousel.js +1 -1
  192. package/dist/components/chart.cjs +1 -1
  193. package/dist/components/chart.js +1 -1
  194. package/dist/components/checkbox-cards.cjs +1 -1
  195. package/dist/components/checkbox-cards.js +1 -1
  196. package/dist/components/checkbox-group.cjs +1 -1
  197. package/dist/components/checkbox-group.js +1 -1
  198. package/dist/components/checkbox.cjs +1 -1
  199. package/dist/components/checkbox.js +1 -1
  200. package/dist/components/command.cjs +1 -1
  201. package/dist/components/command.js +1 -1
  202. package/dist/components/container.cjs +1 -1
  203. package/dist/components/container.js +1 -1
  204. package/dist/components/context-menu.cjs +1 -1
  205. package/dist/components/context-menu.js +1 -1
  206. package/dist/components/data-table.cjs +1 -1
  207. package/dist/components/data-table.js +1 -1
  208. package/dist/components/dialog.cjs +1 -1
  209. package/dist/components/dialog.js +1 -1
  210. package/dist/components/drawer.cjs +1 -1
  211. package/dist/components/drawer.js +1 -1
  212. package/dist/components/dropdown-menu.cjs +1 -1
  213. package/dist/components/dropdown-menu.js +1 -1
  214. package/dist/components/form.cjs +1 -1
  215. package/dist/components/form.d.cts +1 -1
  216. package/dist/components/form.d.ts +1 -1
  217. package/dist/components/form.js +1 -1
  218. package/dist/components/hover-card.cjs +1 -1
  219. package/dist/components/hover-card.js +1 -1
  220. package/dist/components/input-number.cjs +1 -1
  221. package/dist/components/input-number.d.cts +1 -2
  222. package/dist/components/input-number.d.ts +1 -2
  223. package/dist/components/input-number.js +1 -1
  224. package/dist/components/input-otp.cjs +1 -1
  225. package/dist/components/input-otp.js +1 -1
  226. package/dist/components/input-password.cjs +1 -1
  227. package/dist/components/input-password.d.cts +1 -2
  228. package/dist/components/input-password.d.ts +1 -2
  229. package/dist/components/input-password.js +1 -1
  230. package/dist/components/input-search.cjs +1 -1
  231. package/dist/components/input-search.d.cts +1 -2
  232. package/dist/components/input-search.d.ts +1 -2
  233. package/dist/components/input-search.js +1 -1
  234. package/dist/components/input.cjs +1 -1
  235. package/dist/components/input.d.cts +10 -11
  236. package/dist/components/input.d.ts +10 -11
  237. package/dist/components/input.js +1 -1
  238. package/dist/components/kbd.cjs +1 -1
  239. package/dist/components/kbd.js +1 -1
  240. package/dist/components/label.cjs +1 -1
  241. package/dist/components/label.js +1 -1
  242. package/dist/components/menubar.cjs +1 -1
  243. package/dist/components/menubar.js +1 -1
  244. package/dist/components/navigation-menu.cjs +1 -1
  245. package/dist/components/navigation-menu.js +1 -1
  246. package/dist/components/pagination.cjs +1 -1
  247. package/dist/components/pagination.js +1 -1
  248. package/dist/components/popover.cjs +1 -1
  249. package/dist/components/popover.js +1 -1
  250. package/dist/components/progress.cjs +1 -1
  251. package/dist/components/progress.js +1 -1
  252. package/dist/components/radio-cards.cjs +1 -1
  253. package/dist/components/radio-cards.js +1 -1
  254. package/dist/components/radio-group.cjs +1 -1
  255. package/dist/components/radio-group.js +1 -1
  256. package/dist/components/radio.cjs +1 -1
  257. package/dist/components/radio.js +1 -1
  258. package/dist/components/resizable.cjs +1 -1
  259. package/dist/components/resizable.js +1 -1
  260. package/dist/components/scroll-area.cjs +1 -1
  261. package/dist/components/scroll-area.js +1 -1
  262. package/dist/components/select.cjs +1 -1
  263. package/dist/components/select.js +1 -1
  264. package/dist/components/separator.cjs +1 -1
  265. package/dist/components/separator.js +1 -1
  266. package/dist/components/sheet.cjs +1 -1
  267. package/dist/components/sheet.js +1 -1
  268. package/dist/components/sidebar.cjs +1 -1
  269. package/dist/components/sidebar.d.cts +2 -3
  270. package/dist/components/sidebar.d.ts +2 -3
  271. package/dist/components/sidebar.js +1 -1
  272. package/dist/components/skeleton.cjs +1 -1
  273. package/dist/components/skeleton.js +1 -1
  274. package/dist/components/slider.cjs +1 -1
  275. package/dist/components/slider.js +1 -1
  276. package/dist/components/spinner.cjs +1 -1
  277. package/dist/components/spinner.js +1 -1
  278. package/dist/components/switch.cjs +1 -1
  279. package/dist/components/switch.js +1 -1
  280. package/dist/components/table.cjs +1 -1
  281. package/dist/components/table.js +1 -1
  282. package/dist/components/tabs.cjs +1 -1
  283. package/dist/components/tabs.js +1 -1
  284. package/dist/components/textarea.cjs +1 -1
  285. package/dist/components/textarea.js +1 -1
  286. package/dist/components/toggle-group.cjs +1 -1
  287. package/dist/components/toggle-group.js +1 -1
  288. package/dist/components/tooltip.cjs +1 -1
  289. package/dist/components/tooltip.js +1 -1
  290. package/dist/index.cjs +1 -1
  291. package/dist/index.css +1 -1
  292. package/dist/index.css.map +1 -1
  293. package/dist/index.d.cts +0 -1
  294. package/dist/index.d.ts +0 -1
  295. package/dist/index.js +1 -1
  296. package/dist/lib/logger.cjs +1 -1
  297. package/dist/lib/logger.d.cts +52 -0
  298. package/dist/lib/logger.d.ts +52 -0
  299. package/dist/lib/logger.js +1 -1
  300. package/dist/lib/utils.cjs +1 -1
  301. package/dist/lib/utils.d.cts +5 -1
  302. package/dist/lib/utils.d.ts +5 -1
  303. package/dist/lib/utils.js +1 -1
  304. package/package.json +29 -17
  305. package/dist/chunk-2AZ4MW4T.js +0 -3
  306. package/dist/chunk-2AZ4MW4T.js.map +0 -1
  307. package/dist/chunk-64QR6CGF.js.map +0 -1
  308. package/dist/chunk-74METGII.cjs +0 -3
  309. package/dist/chunk-74METGII.cjs.map +0 -1
  310. package/dist/chunk-BGHCFQCV.cjs +0 -2
  311. package/dist/chunk-BH3PX3OD.js +0 -2
  312. package/dist/chunk-BUUK5B4I.js +0 -2
  313. package/dist/chunk-BUUK5B4I.js.map +0 -1
  314. package/dist/chunk-E3QLJTUQ.js.map +0 -1
  315. package/dist/chunk-HPWHFFV6.cjs.map +0 -1
  316. package/dist/chunk-JJW4VWZS.cjs.map +0 -1
  317. package/dist/chunk-KNWGFYQN.js +0 -2
  318. package/dist/chunk-KNWGFYQN.js.map +0 -1
  319. package/dist/chunk-LEHRUJ2L.js +0 -2
  320. package/dist/chunk-NJZ3TDB6.cjs +0 -2
  321. package/dist/chunk-NOJBMCCJ.cjs.map +0 -1
  322. package/dist/chunk-OKUFCFYT.js.map +0 -1
  323. package/dist/chunk-P5KMECT7.cjs +0 -2
  324. package/dist/chunk-P5KMECT7.cjs.map +0 -1
  325. package/dist/chunk-SMJEDCFP.cjs.map +0 -1
  326. package/dist/chunk-W22VAO5F.js +0 -2
  327. package/dist/chunk-W22VAO5F.js.map +0 -1
  328. package/dist/chunk-XRB4CGMN.cjs +0 -2
  329. package/dist/chunk-XRB4CGMN.cjs.map +0 -1
  330. /package/dist/{chunk-3Z67RHJ3.js.map → chunk-2ONIOLJQ.js.map} +0 -0
  331. /package/dist/{chunk-U7UJHUBW.js.map → chunk-3NUSPFUR.js.map} +0 -0
  332. /package/dist/{chunk-KZTYZ4SE.js.map → chunk-3QNA5W7W.js.map} +0 -0
  333. /package/dist/{chunk-S7RX6JQY.js.map → chunk-43LREVQW.js.map} +0 -0
  334. /package/dist/{chunk-3E3ZQIUX.js.map → chunk-4ENRIR3P.js.map} +0 -0
  335. /package/dist/{chunk-Q2PAHIDW.js.map → chunk-5ZGCITOG.js.map} +0 -0
  336. /package/dist/{chunk-YCCLSFED.js.map → chunk-6S537DLU.js.map} +0 -0
  337. /package/dist/{chunk-FF7RJQ5V.js.map → chunk-6SXDMOC6.js.map} +0 -0
  338. /package/dist/{chunk-P7IDB2YN.js.map → chunk-6VLIWII3.js.map} +0 -0
  339. /package/dist/{chunk-PRQOBYFW.js.map → chunk-7ZBO62H2.js.map} +0 -0
  340. /package/dist/{chunk-MKTUHVAW.js.map → chunk-BSU5RNRG.js.map} +0 -0
  341. /package/dist/{chunk-QGFB3EOD.js.map → chunk-BYHI4274.js.map} +0 -0
  342. /package/dist/{chunk-HODP3L6K.js.map → chunk-CB2YNTH2.js.map} +0 -0
  343. /package/dist/{chunk-J6744AYH.js.map → chunk-CXVL5MZT.js.map} +0 -0
  344. /package/dist/{chunk-UOBUAOYY.js.map → chunk-E3GP3ZDU.js.map} +0 -0
  345. /package/dist/{chunk-RBIJMA3G.js.map → chunk-EBODIPD3.js.map} +0 -0
  346. /package/dist/{chunk-HI5KN7UL.js.map → chunk-ETZEGAE4.js.map} +0 -0
  347. /package/dist/{chunk-MCQAUDRK.js.map → chunk-FXESF4F3.js.map} +0 -0
  348. /package/dist/{chunk-CKTJRT3X.js.map → chunk-GHZJL33D.js.map} +0 -0
  349. /package/dist/{chunk-3XOJLY6Y.js.map → chunk-H5KHKTXM.js.map} +0 -0
  350. /package/dist/{chunk-MCGDQEI6.js.map → chunk-HRARWB2V.js.map} +0 -0
  351. /package/dist/{chunk-5U6B5LAO.js.map → chunk-HZF7PYFL.js.map} +0 -0
  352. /package/dist/{chunk-FPZHSVY3.js.map → chunk-JO7EANFR.js.map} +0 -0
  353. /package/dist/{chunk-ZIIE5XVL.js.map → chunk-K63CIBXO.js.map} +0 -0
  354. /package/dist/{chunk-K73VMNRR.js.map → chunk-KNCCX2RR.js.map} +0 -0
  355. /package/dist/{chunk-WBNOGWR4.js.map → chunk-KZBQGSMG.js.map} +0 -0
  356. /package/dist/{chunk-3X3FY776.js.map → chunk-LBTP74TP.js.map} +0 -0
  357. /package/dist/{chunk-OP6TXGBC.js.map → chunk-LCW5IZ6X.js.map} +0 -0
  358. /package/dist/{chunk-UQCCSFW6.js.map → chunk-LQXNGCYD.js.map} +0 -0
  359. /package/dist/{chunk-7KXMJMOL.js.map → chunk-M2CSPS4G.js.map} +0 -0
  360. /package/dist/{chunk-PZIWZBH2.js.map → chunk-MOTXNJBG.js.map} +0 -0
  361. /package/dist/{chunk-SSNF4WDW.js.map → chunk-OPZLDNA6.js.map} +0 -0
  362. /package/dist/{chunk-YLVYJ4QQ.js.map → chunk-RJCUZWSQ.js.map} +0 -0
  363. /package/dist/{chunk-D6Q6LYOK.js.map → chunk-S4YRB53E.js.map} +0 -0
  364. /package/dist/{chunk-7TYGHN3F.js.map → chunk-S6SBFTOK.js.map} +0 -0
  365. /package/dist/{chunk-BWJ6X4FP.js.map → chunk-SNR6C2TD.js.map} +0 -0
  366. /package/dist/{chunk-GSIKFVMY.js.map → chunk-UTP25IOS.js.map} +0 -0
  367. /package/dist/{chunk-FR7P352M.js.map → chunk-UU6JKB54.js.map} +0 -0
  368. /package/dist/{chunk-GIPFEUMD.js.map → chunk-VCQXS2LO.js.map} +0 -0
  369. /package/dist/{chunk-VR6XYLVU.js.map → chunk-VGNEJZTI.js.map} +0 -0
  370. /package/dist/{chunk-Y3I5EBH6.js.map → chunk-YYWPQ4QR.js.map} +0 -0
  371. /package/dist/{chunk-CWDAAKQY.js.map → chunk-Z3CRHOTP.js.map} +0 -0
  372. /package/dist/{chunk-ZQRHXFQO.js.map → chunk-ZD5ZM7S7.js.map} +0 -0
  373. /package/dist/{chunk-YNN7KJQN.js.map → chunk-ZZLPOTQ2.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/logger.ts"],"names":["chalk","levels","messages","safeStringify","obj","formatLog","level","tag","args","levelPart","tagPart","messagePart","arg","createLogger","logger","loggerWithTag"],"mappings":"AAEA,OAAOA,MAAW,QAclB,IAAMC,EAA0C,CAC9C,MAAOD,EAAM,MAAM,SAAS,EAAE,IAAI,SAAS,EAAE,KAC7C,KAAMA,EAAM,MAAM,SAAS,EAAE,IAAI,SAAS,EAAE,KAC5C,IAAKA,EAAM,MAAM,SAAS,EAAE,IAAI,SAAS,EAAE,KAC3C,QAASA,EAAM,MAAM,SAAS,EAAE,IAAI,SAAS,EAAE,KAC/C,KAAMA,EAAM,MAAM,SAAS,EAAE,IAAI,SAAS,EAAE,IAC9C,EAEME,EAA4C,CAChD,MAAOF,EAAM,IAAI,SAAS,EAC1B,KAAMA,EAAM,IAAI,SAAS,EACzB,IAAKA,EAAM,IAAI,SAAS,EACxB,QAASA,EAAM,IAAI,SAAS,EAC5B,KAAMA,EAAM,IAAI,SAAS,CAC3B,EAWA,SAASG,EAAcC,EAAsB,CAC3C,GAAIA,aAAe,MACjB,MAAO,CAACJ,EAAM,OAAOI,EAAI,OAAO,EAAGA,EAAI,OAAS,YAAY,EAAE,KAAK;AAAA,CAAI,EAGzE,GAAI,CACF,OAAO,KAAK,UAAUA,EAAK,KAAM,CAAC,CACpC,MAAQ,CACN,MAAO,8BACT,CACF,CAgBA,SAASC,EAAUC,EAAiBC,KAAuBC,EAAyB,CAElF,IAAMC,EAAYR,EAAOK,CAAK,EAAE,IAAIA,EAAM,YAAY,CAAC,GAAG,EAEpDI,EAAUH,EAAMP,EAAM,QAAQ,IAAIO,CAAG,GAAG,EAAI,GAE5CI,EAAcH,EAAK,IAAKI,GAAQV,EAASI,CAAK,EAAE,OAAOM,GAAQ,SAAWA,EAAMT,EAAcS,CAAG,CAAC,CAAC,EAAE,KAAK,GAAG,EAEnH,MAAO,CAACH,EAAWC,EAASC,CAAW,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CACnE,CASA,SAASE,EAAaN,EAAqB,KAAc,CACvD,MAAO,CACL,MAAO,IAAIC,IAA0B,CACnC,QAAQ,MAAMH,EAAU,QAASE,EAAK,GAAGC,CAAI,CAAC,CAChD,EACA,KAAM,IAAIA,IAA0B,CAClC,QAAQ,IAAIH,EAAU,OAAQE,EAAK,GAAGC,CAAI,CAAC,CAC7C,EACA,IAAK,IAAIA,IAA0B,CACjC,QAAQ,IAAIH,EAAU,MAAOE,EAAK,GAAGC,CAAI,CAAC,CAC5C,EACA,QAAS,IAAIA,IAA0B,CACrC,QAAQ,IAAIH,EAAU,UAAWE,EAAK,GAAGC,CAAI,CAAC,CAChD,EACA,KAAM,IAAIA,IAA0B,CAClC,QAAQ,KAAKH,EAAU,OAAQE,EAAK,GAAGC,CAAI,CAAC,CAC9C,CACF,CACF,CAEO,IAAMM,EAAiBD,EAAa,EAE9BE,EAAiBR,GAAwBM,EAAaN,CAAG","sourcesContent":["import type { ChalkInstance } from 'chalk';\n\nimport chalk from 'chalk';\n\ntype LogLevel = 'error' | 'info' | 'log' | 'success' | 'warn';\n\ntype LogMethod = (...args: unknown[]) => void;\n\ninterface Logger {\n error: LogMethod;\n info: LogMethod;\n log: LogMethod;\n success: LogMethod;\n warn: LogMethod;\n}\n\nconst levels: Record<LogLevel, ChalkInstance> = {\n error: chalk.bgHex('#ef4444').hex('#450a0a').bold,\n info: chalk.bgHex('#06b6d4').hex('#083344').bold,\n log: chalk.bgHex('#ffffff').hex('#020617').bold,\n success: chalk.bgHex('#22c55e').hex('#052e16').bold,\n warn: chalk.bgHex('#eab308').hex('#422006').bold,\n};\n\nconst messages: Record<LogLevel, ChalkInstance> = {\n error: chalk.hex('#ef4444'),\n info: chalk.hex('#06b6d4'),\n log: chalk.hex('#ffffff'),\n success: chalk.hex('#22c55e'),\n warn: chalk.hex('#eab308'),\n};\n\n/**\n * Safely converts a given object into a JSON string representation.\n * If the object contains circular references or can't be stringified,\n * it returns a fallback string.\n *\n * @param obj - The object to be stringified.\n * @returns A JSON string representation of the object, or a fallback string\n * indicating the presence of circular references or invalid structure.\n */\nfunction safeStringify(obj: unknown): string {\n if (obj instanceof Error) {\n return [chalk.italic(obj.message), obj.stack || '[No Stack]'].join('\\n');\n }\n\n try {\n return JSON.stringify(obj, null, 2);\n } catch {\n return '[Circular or Invalid Object]';\n }\n}\n\n/**\n * Formats the log message with color-coded levels, optional tags, and the main\n * message.\n * - Level: Displays the log level (for example, INFO, SUCCESS) in a styled\n * format.\n * - Tag: Optionally includes a tag (for example, module name) for better\n * context.\n * - Message: The actual log content.\n *\n * @param level - Log level (for example, 'info', 'error').\n * @param tag - Optional context tag.\n * @param args - Log message parts.\n * @returns Formatted log string for output.\n */\nfunction formatLog(level: LogLevel, tag: null | string, ...args: unknown[]): string {\n // Level with colors\n const levelPart = levels[level](` ${level.toUpperCase()} `);\n // Tag if available\n const tagPart = tag ? chalk.magenta(` ${tag} `) : '';\n // Combine all arguments into one string\n const messagePart = args.map((arg) => messages[level](typeof arg === 'string' ? arg : safeStringify(arg))).join(' ');\n\n return [levelPart, tagPart, messagePart].filter(Boolean).join(' ');\n}\n\n/**\n * Create a logger instance with optional tag support.\n * The tag is useful for distinguishing logs from different modules or contexts.\n *\n * @param tag - A string used as a tag in the log messages or null if no tag is desired.\n * @returns An object containing methods for logging messages at various levels.\n */\nfunction createLogger(tag: null | string = null): Logger {\n return {\n error: (...args: unknown[]): void => {\n console.error(formatLog('error', tag, ...args));\n },\n info: (...args: unknown[]): void => {\n console.log(formatLog('info', tag, ...args));\n },\n log: (...args: unknown[]): void => {\n console.log(formatLog('log', tag, ...args));\n },\n success: (...args: unknown[]): void => {\n console.log(formatLog('success', tag, ...args));\n },\n warn: (...args: unknown[]): void => {\n console.warn(formatLog('warn', tag, ...args));\n },\n };\n}\n\nexport const logger: Logger = createLogger();\n\nexport const loggerWithTag = (tag: string): Logger => createLogger(tag);\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/scroll-area.tsx"],"names":["createContextScope","ScrollAreaPrimitive","tv","jsx","jsxs","scrollAreaScrollbarVariants","SCROLL_AREA_NAME","createScrollAreaContext","ScrollAreaProvider","useScrollAreaContext","ScrollArea","__scopeScrollArea","children","className","size","props","cn","ScrollAreaScrollbar","orientation"],"mappings":"wCAMA,OAAS,sBAAAA,MAA0B,0BACnC,UAAYC,MAAyB,8BACrC,OAAS,MAAAC,MAAU,oBAuFb,OACE,OAAAC,EADF,QAAAC,MAAA,oBA/EN,IAAMC,EAA8BH,EAAG,CACrC,KAAM,qDACN,iBAAkB,CAChB,CACE,UAAW,QACX,YAAa,WACb,KAAM,IACR,EACA,CACE,UAAW,MACX,YAAa,WACb,KAAM,IACR,EACA,CACE,UAAW,QACX,YAAa,WACb,KAAM,IACR,EACA,CACE,UAAW,QACX,YAAa,aACb,KAAM,IACR,EACA,CACE,UAAW,MACX,YAAa,aACb,KAAM,IACR,EACA,CACE,UAAW,QACX,YAAa,aACb,KAAM,IACR,CACF,EACA,SAAU,CACR,YAAa,CACX,WAAY,gDACZ,SAAU,+CACZ,EACA,KAAM,CACJ,KAAM,GACN,GAAI,GACJ,GAAI,GACJ,GAAI,EACN,CACF,EACA,gBAAiB,CACf,KAAM,KACN,SAAU,UACZ,CACF,CAAC,EAMKI,EAAmB,aAInB,CAACC,CAAuB,EAAIP,EAAmBM,CAAgB,EAI/D,CAACE,EAAoBC,CAAoB,EAAIF,EAAgDD,CAAgB,EAMnH,SAASI,EAAW,CAClB,kBAAAC,EACA,SAAAC,EACA,UAAAC,EACA,KAAAC,EACA,GAAGC,CACL,EAAuG,CACrG,OACEZ,EAACK,EAAA,CAAmB,MAAOG,EAAmB,KAAMG,EAClD,SAAAV,EAAqB,OAApB,CAAyB,UAAWY,EAAG,WAAYH,CAAS,EAAG,YAAU,cAAe,GAAGE,EAC1F,UAAAZ,EAAqB,WAApB,CACC,UAAU,gHACV,YAAU,uBAET,SAAAS,EACH,EACAT,EAACc,EAAA,CAAoB,YAAY,WAAW,EAC5Cd,EAACc,EAAA,CAAoB,YAAY,aAAa,EAC9Cd,EAAqB,SAApB,EAA2B,GAC9B,EACF,CAEJ,CAMA,SAASc,EAAoB,CAC3B,kBAAAN,EACA,UAAAE,EACA,YAAAK,EACA,GAAGH,CACL,EAAmF,CACjF,GAAM,CAAE,KAAAD,CAAK,EAAIL,EAAqBH,EAAkBK,CAAiB,EAEzE,OACER,EAAqB,YAApB,CACC,UAAWE,EAA4B,CAAE,UAAAQ,EAAW,YAAAK,EAAa,KAAAJ,CAAK,CAAC,EACvE,YAAU,wBACV,YAAaI,EACZ,GAAGH,EAEJ,SAAAZ,EAAqB,kBAApB,CAAoC,UAAU,yCAAyC,EAC1F,CAEJ","sourcesContent":["'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { tv } from 'tailwind-variants';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Variant: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nconst scrollAreaScrollbarVariants = tv({\n base: 'flex touch-none select-none p-px transition-colors',\n compoundVariants: [\n {\n className: 'w-1.5',\n orientation: 'vertical',\n size: 'sm',\n },\n {\n className: 'w-2',\n orientation: 'vertical',\n size: 'md',\n },\n {\n className: 'w-2.5',\n orientation: 'vertical',\n size: 'lg',\n },\n {\n className: 'h-1.5',\n orientation: 'horizontal',\n size: 'sm',\n },\n {\n className: 'h-2',\n orientation: 'horizontal',\n size: 'md',\n },\n {\n className: 'h-2.5',\n orientation: 'horizontal',\n size: 'lg',\n },\n ],\n variants: {\n orientation: {\n horizontal: 'w-full flex-col border-t border-t-transparent',\n vertical: 'h-full flex-row border-l border-l-transparent',\n },\n size: {\n none: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n vertical: 'vertical',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Context: ScrollArea\n * -------------------------------------------------------------------------- */\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\n\nconst [createScrollAreaContext] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = Pick<VariantProps<typeof scrollAreaScrollbarVariants>, 'size'>;\n\nconst [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollArea\n * -------------------------------------------------------------------------- */\n\nfunction ScrollArea({\n __scopeScrollArea,\n children,\n className,\n size,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Root> & ScrollAreaContextValue>): JSX.Element {\n return (\n <ScrollAreaProvider scope={__scopeScrollArea} size={size}>\n <ScrollAreaPrimitive.Root className={cn('relative', className)} data-slot=\"scroll-area\" {...props}>\n <ScrollAreaPrimitive.Viewport\n className=\"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollAreaScrollbar orientation=\"vertical\" />\n <ScrollAreaScrollbar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n </ScrollAreaProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nfunction ScrollAreaScrollbar({\n __scopeScrollArea,\n className,\n orientation,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>>): JSX.Element {\n const { size } = useScrollAreaContext(SCROLL_AREA_NAME, __scopeScrollArea);\n\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={scrollAreaScrollbarVariants({ className, orientation, size })}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { ScrollArea, ScrollAreaScrollbar };\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);var a={error:_chalk2.default.bgHex("#ef4444").hex("#450a0a").bold,info:_chalk2.default.bgHex("#06b6d4").hex("#083344").bold,log:_chalk2.default.bgHex("#ffffff").hex("#020617").bold,success:_chalk2.default.bgHex("#22c55e").hex("#052e16").bold,warn:_chalk2.default.bgHex("#eab308").hex("#422006").bold},f={error:_chalk2.default.hex("#ef4444"),info:_chalk2.default.hex("#06b6d4"),log:_chalk2.default.hex("#ffffff"),success:_chalk2.default.hex("#22c55e"),warn:_chalk2.default.hex("#eab308")};function u(o){if(o instanceof Error)return[_chalk2.default.italic(o.message),o.stack||"[No Stack]"].join(`
2
- `);try{return JSON.stringify(o,null,2)}catch (e2){return"[Circular or Invalid Object]"}}function r(o,e,...g){let c=a[o](` ${o.toUpperCase()} `),l=e?_chalk2.default.magenta(` ${e} `):"",i=g.map(s=>f[o](typeof s=="string"?s:u(s))).join(" ");return[c,l,i].filter(Boolean).join(" ")}function t(o=null){return{error:(...e)=>{console.error(r("error",o,...e))},info:(...e)=>{console.log(r("info",o,...e))},log:(...e)=>{console.log(r("log",o,...e))},success:(...e)=>{console.log(r("success",o,...e))},warn:(...e)=>{console.warn(r("warn",o,...e))}}}var d=t(),L= exports.b =o=>t(o);exports.a = d; exports.b = L;
3
- //# sourceMappingURL=chunk-74METGII.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/logger.ts"],"names":["levels","chalk","messages","safeStringify","obj","formatLog","level","tag","args","levelPart","tagPart","messagePart","arg","createLogger","logger","loggerWithTag"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-74METGII.cjs","sourcesContent":["import type { ChalkInstance } from 'chalk';\n\nimport chalk from 'chalk';\n\ntype LogLevel = 'error' | 'info' | 'log' | 'success' | 'warn';\n\ntype LogMethod = (...args: unknown[]) => void;\n\ninterface Logger {\n error: LogMethod;\n info: LogMethod;\n log: LogMethod;\n success: LogMethod;\n warn: LogMethod;\n}\n\nconst levels: Record<LogLevel, ChalkInstance> = {\n error: chalk.bgHex('#ef4444').hex('#450a0a').bold,\n info: chalk.bgHex('#06b6d4').hex('#083344').bold,\n log: chalk.bgHex('#ffffff').hex('#020617').bold,\n success: chalk.bgHex('#22c55e').hex('#052e16').bold,\n warn: chalk.bgHex('#eab308').hex('#422006').bold,\n};\n\nconst messages: Record<LogLevel, ChalkInstance> = {\n error: chalk.hex('#ef4444'),\n info: chalk.hex('#06b6d4'),\n log: chalk.hex('#ffffff'),\n success: chalk.hex('#22c55e'),\n warn: chalk.hex('#eab308'),\n};\n\n/**\n * Safely converts a given object into a JSON string representation.\n * If the object contains circular references or can't be stringified,\n * it returns a fallback string.\n *\n * @param obj - The object to be stringified.\n * @returns A JSON string representation of the object, or a fallback string\n * indicating the presence of circular references or invalid structure.\n */\nfunction safeStringify(obj: unknown): string {\n if (obj instanceof Error) {\n return [chalk.italic(obj.message), obj.stack || '[No Stack]'].join('\\n');\n }\n\n try {\n return JSON.stringify(obj, null, 2);\n } catch {\n return '[Circular or Invalid Object]';\n }\n}\n\n/**\n * Formats the log message with color-coded levels, optional tags, and the main\n * message.\n * - Level: Displays the log level (for example, INFO, SUCCESS) in a styled\n * format.\n * - Tag: Optionally includes a tag (for example, module name) for better\n * context.\n * - Message: The actual log content.\n *\n * @param level - Log level (for example, 'info', 'error').\n * @param tag - Optional context tag.\n * @param args - Log message parts.\n * @returns Formatted log string for output.\n */\nfunction formatLog(level: LogLevel, tag: null | string, ...args: unknown[]): string {\n // Level with colors\n const levelPart = levels[level](` ${level.toUpperCase()} `);\n // Tag if available\n const tagPart = tag ? chalk.magenta(` ${tag} `) : '';\n // Combine all arguments into one string\n const messagePart = args.map((arg) => messages[level](typeof arg === 'string' ? arg : safeStringify(arg))).join(' ');\n\n return [levelPart, tagPart, messagePart].filter(Boolean).join(' ');\n}\n\n/**\n * Create a logger instance with optional tag support.\n * The tag is useful for distinguishing logs from different modules or contexts.\n *\n * @param tag - A string used as a tag in the log messages or null if no tag is desired.\n * @returns An object containing methods for logging messages at various levels.\n */\nfunction createLogger(tag: null | string = null): Logger {\n return {\n error: (...args: unknown[]): void => {\n console.error(formatLog('error', tag, ...args));\n },\n info: (...args: unknown[]): void => {\n console.log(formatLog('info', tag, ...args));\n },\n log: (...args: unknown[]): void => {\n console.log(formatLog('log', tag, ...args));\n },\n success: (...args: unknown[]): void => {\n console.log(formatLog('success', tag, ...args));\n },\n warn: (...args: unknown[]): void => {\n console.warn(formatLog('warn', tag, ...args));\n },\n };\n}\n\nexport const logger: Logger = createLogger();\n\nexport const loggerWithTag = (tag: string): Logger => createLogger(tag);\n"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";var _chunkPOJOZ7HMcjs = require('./chunk-POJOZ7HM.cjs');var _chunkOSBDYGS3cjs = require('./chunk-OSBDYGS3.cjs');var _chunkXXUOW3IDcjs = require('./chunk-XXUOW3ID.cjs');var _input = require('@codefast-ui/input'); var e = _interopRequireWildcard(_input);var _reactusecontrollablestate = require('@radix-ui/react-use-controllable-state');var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var{input:S,root:V}=_chunkPOJOZ7HMcjs.a.call(void 0, );function N({className:u,defaultValue:m,disabled:i,loaderPosition:c,loading:f,onChange:v,prefix:d,readOnly:o,spinner:P,suffix:a,value:h,...I}){let[r,n]=_reactusecontrollablestate.useControllableState.call(void 0, {defaultProp:m,onChange:v,prop:h});return _jsxruntime.jsxs.call(void 0, e.Root,{className:V({className:[!a&&"pr-1.5",u]}),"data-slot":"input-search",disabled:i,loaderPosition:c,loading:f,prefix:d||_jsxruntime.jsx.call(void 0, _lucidereact.SearchIcon,{}),readOnly:o,spinner:P||_jsxruntime.jsx.call(void 0, _chunkXXUOW3IDcjs.a,{}),suffix:a,children:[_jsxruntime.jsx.call(void 0, e.Item,{className:S(),"data-slot":"input-search-item",type:"search",value:_nullishCoalesce(r, () => ("")),onChange:g=>{n(g.target.value)},...I}),r?_jsxruntime.jsx.call(void 0, _chunkOSBDYGS3cjs.b,{"aria-label":"Clear search",className:"focus-visible:not-disabled:bg-input size-7 rounded-full focus-visible:ring-0","data-slot":"input-search-clear",disabled:i||o,size:"icon",suffix:_jsxruntime.jsx.call(void 0, _lucidereact.XIcon,{}),variant:"ghost",onClick:()=>{n("")}}):null]})}var w=N;exports.a = N; exports.b = w;
2
- //# sourceMappingURL=chunk-BGHCFQCV.cjs.map
@@ -1,2 +0,0 @@
1
- "use client";import{a as p}from"./chunk-B74UCONC.js";import{b as n}from"./chunk-3E3ZQIUX.js";import{a as r}from"./chunk-FR7P352M.js";import*as o from"@codefast-ui/input";import{EyeIcon as v,EyeOffIcon as I}from"lucide-react";import{useCallback as b,useState as g}from"react";import{jsx as t,jsxs as S}from"react/jsx-runtime";var{input:C,root:E}=p();function x({className:a,disabled:s,loaderPosition:m,loading:l,prefix:d,readOnly:u,spinner:f,suffix:e,...c}){let[i,w]=g("password"),P=b(()=>{w(y=>y==="password"?"text":"password")},[]);return S(o.Root,{className:E({className:[!e&&"pr-1.5",a]}),"data-slot":"input-password",disabled:s,loaderPosition:m,loading:l,prefix:d,readOnly:u,spinner:f||t(r,{}),suffix:e,children:[t(o.Item,{autoCapitalize:"none",className:C(),"data-slot":"input-password-item",type:i,...c}),t(n,{"aria-label":i==="password"?"Show password":"Hide password",className:"focus-visible:not-disabled:bg-input size-7 rounded-full focus-visible:ring-0","data-slot":"input-password-toggle",disabled:s,prefix:i==="password"?t(I,{}):t(v,{}),size:"icon",variant:"ghost",onClick:P})]})}var O=x;export{x as a,O as b};
2
- //# sourceMappingURL=chunk-BH3PX3OD.js.map
@@ -1,2 +0,0 @@
1
- "use client";import{a as A,b as k,c as X,d as D}from"./chunk-SSNF4WDW.js";import{a as y}from"./chunk-MKTUHVAW.js";import{a as P,c as N,d as M,g as _,h as I}from"./chunk-RBIJMA3G.js";import{a as w}from"./chunk-HODP3L6K.js";import{b as E}from"./chunk-B74UCONC.js";import{b as C}from"./chunk-3E3ZQIUX.js";import{a as o}from"./chunk-OKUFCFYT.js";import{useIsMobile as B}from"@codefast/hooks";import{createContext as O}from"@radix-ui/react-context";import{Slot as f}from"@radix-ui/react-slot";import{PanelLeftIcon as R}from"lucide-react";import{useCallback as J,useEffect as H,useMemo as K,useState as T}from"react";import{tv as G}from"tailwind-variants";import{jsx as a,jsxs as c}from"react/jsx-runtime";var L="sidebar_state",V=60*60*24*7,$="16rem",U="18rem",W="3.0625rem",j="b",q="SidebarProvider",[F,h]=O(q);function ge({defaultOpen:t=!0,open:e,onOpenChange:n,className:r,style:i,children:d,...p}){let l=B(),[m,u]=T(!1),[g,z]=T(t),v=e??g,S=J(s=>{let b=typeof s=="function"?s(v):s;n?n(b):z(b),document.cookie=`${L}=${b}; path=/; max-age=${V}`},[n,v]),x=J(()=>{l?u(s=>!s):S(s=>!s)},[l,S,u]);return H(()=>{let s=b=>{b.key===j&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),x())};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[x]),a(F,{isMobile:l,open:v,openMobile:m,setOpen:S,setOpenMobile:u,state:v?"expanded":"collapsed",toggleSidebar:x,children:a(A,{delayDuration:0,children:a("div",{className:o("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",r),"data-slot":"sidebar-wrapper",style:{"--sidebar-width":$,"--sidebar-width-icon":W,...i},...p,children:d})})})}var Y="Sidebar";function ve({side:t="left",variant:e="sidebar",collapsible:n="offcanvas",className:r,children:i,...d}){let{isMobile:p,state:l,openMobile:m,setOpenMobile:u}=h(Y);return n==="none"?a("div",{className:o("bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col",r),"data-slot":"sidebar",...d,children:i}):p?a(P,{open:m,onOpenChange:u,...d,children:c(N,{className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden","data-mobile":"true","data-sidebar":"sidebar","data-slot":"sidebar",side:t,style:{"--sidebar-width":U},children:[c(M,{className:"sr-only",children:[a(_,{children:"Sidebar"}),a(I,{children:"Displays the mobile sidebar."})]}),a("div",{className:"flex h-full w-full flex-col",children:i})]})}):c("div",{className:o("text-sidebar-foreground group peer hidden md:block",r),"data-collapsible":l==="collapsed"?n:"","data-side":t,"data-slot":"sidebar","data-state":l,"data-variant":e,children:[a("div",{className:o("w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),"data-slot":"sidebar-gap"}),a("div",{className:o("w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex",t==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",r),"data-slot":"sidebar-container",...d,children:a("div",{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-sm","data-sidebar":"sidebar","data-slot":"sidebar-inner",children:i})})]})}var Q="SidebarTrigger";function he({className:t,onClick:e,...n}){let{toggleSidebar:r}=h(Q);return c(C,{className:o("size-7",t),"data-sidebar":"trigger","data-slot":"sidebar-trigger",size:"icon",variant:"ghost",onClick:i=>{e?.(i),r()},...n,children:[a(R,{}),a("span",{className:"sr-only",children:"Toggle Sidebar"})]})}var Z="SidebarRail";function Se({className:t,...e}){let{toggleSidebar:n}=h(Z);return a("button",{className:o("hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",t),"data-sidebar":"rail","data-slot":"sidebar-rail",title:"Toggle Sidebar",type:"button",onClick:n,...e})}function xe({className:t,...e}){return a("main",{className:o("bg-background relative flex w-full flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",t),"data-slot":"sidebar-inset",...e})}function we({className:t,...e}){return a(E,{className:o("bg-background h-8 w-full shadow-none",t),"data-sidebar":"input","data-slot":"sidebar-input",...e})}function Ce({className:t,...e}){return a("div",{className:o("flex flex-col gap-2 p-2",t),"data-sidebar":"header","data-slot":"sidebar-header",...e})}function Ee({className:t,...e}){return a("div",{className:o("flex flex-col gap-2 p-2",t),"data-sidebar":"footer","data-slot":"sidebar-footer",...e})}function ye({className:t,...e}){return a(y,{className:o("bg-sidebar-border mx-2 w-auto",t),"data-sidebar":"separator","data-slot":"sidebar-separator",...e})}function Pe({className:t,...e}){return a("div",{className:o("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),"data-sidebar":"content","data-slot":"sidebar-content",...e})}function Ne({className:t,...e}){return a("div",{className:o("relative flex w-full min-w-0 flex-col p-2",t),"data-sidebar":"group","data-slot":"sidebar-group",...e})}function Me({className:t,asChild:e=!1,...n}){return a(e?f:"div",{className:o("text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-label","data-slot":"sidebar-group-label",...n})}function _e({className:t,asChild:e=!1,...n}){return a(e?f:"button",{className:o("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-action","data-slot":"sidebar-group-action",...n})}function Ie({className:t,...e}){return a("div",{className:o("w-full text-sm",t),"data-sidebar":"group-content","data-slot":"sidebar-group-content",...e})}function Ae({className:t,...e}){return a("ul",{className:o("flex w-full min-w-0 flex-col gap-1",t),"data-sidebar":"menu","data-slot":"sidebar-menu",...e})}function ke({className:t,...e}){return a("li",{className:o("group/menu-item relative",t),"data-sidebar":"menu-item","data-slot":"sidebar-menu-item",...e})}var ee=G({base:"peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{sm:"h-7 text-xs",md:"h-8 text-sm",lg:"group-data-[collapsible=icon]:p-0! h-12 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),te="SidebarMenuButton";function Xe({asChild:t=!1,isActive:e=!1,variant:n="default",size:r="md",tooltip:i,className:d,...p}){let l=t?f:"button",{isMobile:m,state:u}=h(te),g=a(l,{className:o(ee({variant:n,size:r}),d),"data-active":e,"data-sidebar":"menu-button","data-size":r,"data-slot":"sidebar-menu-button",...p});return i?(typeof i=="string"&&(i={children:i}),c(k,{children:[a(X,{asChild:!0,children:g}),a(D,{align:"center",hidden:u!=="collapsed"||m,side:"right",...i})]})):g}function De({className:t,asChild:e=!1,showOnHover:n=!1,...r}){return a(e?f:"button",{className:o("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",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",t),"data-sidebar":"menu-action","data-slot":"sidebar-menu-action",...r})}function Je({className:t,...e}){return a("div",{className:o("text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1",t),"data-sidebar":"menu-badge","data-slot":"sidebar-menu-badge",...e})}function Te({className:t,showIcon:e=!1,...n}){let r=K(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return c("div",{className:o("flex h-8 items-center gap-2 rounded-md px-2",t),"data-sidebar":"menu-skeleton","data-slot":"sidebar-menu-skeleton",...n,children:[e?a(w,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}):null,a(w,{className:"max-w-(--skeleton-width) h-4 flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":r}})]})}function ze({className:t,...e}){return a("ul",{className:o("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",t),"data-sidebar":"menu-sub","data-slot":"sidebar-menu-sub",...e})}function Be({className:t,...e}){return a("li",{className:o("group/menu-sub-item relative",t),"data-sidebar":"menu-sub-item","data-slot":"sidebar-menu-sub-item",...e})}function Oe({asChild:t=!1,size:e="md",isActive:n=!1,className:r,...i}){return a(t?f:"a",{className:o("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",r),"data-active":n,"data-sidebar":"menu-sub-button","data-size":e,"data-slot":"sidebar-menu-sub-button",...i})}export{h as a,ge as b,ve as c,he as d,Se as e,xe as f,we as g,Ce as h,Ee as i,ye as j,Pe as k,Ne as l,Me as m,_e as n,Ie as o,Ae as p,ke as q,Xe as r,De as s,Je as t,Te as u,ze as v,Be as w,Oe as x};
2
- //# sourceMappingURL=chunk-BUUK5B4I.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/sidebar.tsx"],"names":["useIsMobile","createContext","Slot","PanelLeftIcon","useCallback","useEffect","useMemo","useState","tv","jsx","jsxs","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SIDEBAR_PROVIDER_NAME","SidebarProviderProvider","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","openMobile","setOpenMobile","isOpen","setIsOpen","open","setOpen","value","openState","toggleSidebar","currentValue","handleKeyDown","event","TooltipProvider","cn","SIDEBAR_NAME","Sidebar","side","variant","collapsible","state","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SIDEBAR_TRIGGER_NAME","SidebarTrigger","onClick","Button","SIDEBAR_RAIL_NAME","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","SIDEBAR_MENU_BUTTON_NAME","SidebarMenuButton","isActive","size","tooltip","Component","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"yUAKA,OAAS,eAAAA,MAAmB,kBAC5B,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,QAAAC,MAAY,uBACrB,OAAS,iBAAAC,MAAqB,eAC9B,OAAS,eAAAC,EAAa,aAAAC,EAAW,WAAAC,EAAS,YAAAC,MAAgB,QAC1D,OAAS,MAAAC,MAAU,oBAmHX,cAAAC,EAkEE,QAAAC,MAlEF,oBAzGR,IAAMC,EAAsB,gBACtBC,EAAyB,GAAK,GAAK,GAAK,EACxCC,EAAgB,QAChBC,EAAuB,QACvBC,EAAqB,YACrBC,EAA4B,IAgB5BC,EAAwB,kBAExB,CAACC,EAAyBC,CAAU,EAAIlB,EAAmCgB,CAAqB,EAMtG,SAASG,GAAgB,CACvB,YAAAC,EAAc,GACd,KAAMC,EACN,aAAcC,EACd,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAIgB,CACd,IAAMC,EAAW5B,EAAY,EACvB,CAAC6B,EAAYC,CAAa,EAAIvB,EAAS,EAAK,EAI5C,CAACwB,EAAQC,CAAS,EAAIzB,EAASc,CAAW,EAC1CY,EAAOX,GAAYS,EACnBG,EAAU9B,EACb+B,GAAmD,CAClD,IAAMC,EAAY,OAAOD,GAAU,WAAaA,EAAMF,CAAI,EAAIE,EAE1DZ,EACFA,EAAYa,CAAS,EAErBJ,EAAUI,CAAS,EAIrB,SAAS,OAAS,GAAGzB,CAAmB,IAAIyB,CAAS,qBAAqBxB,CAAsB,EAClG,EACA,CAACW,EAAaU,CAAI,CACpB,EAGMI,EAAgBjC,EAAY,IAAM,CAClCwB,EACFE,EAAeQ,GAAiB,CAACA,CAAY,EAE7CJ,EAASI,GAAiB,CAACA,CAAY,CAE3C,EAAG,CAACV,EAAUM,EAASJ,CAAa,CAAC,EAGrC,OAAAzB,EAAU,IAAM,CACd,IAAMkC,EAAiDC,GAAyB,CAC1EA,EAAM,MAAQxB,IAA8BwB,EAAM,SAAWA,EAAM,WACrEA,EAAM,eAAe,EACrBH,EAAc,EAElB,EAEA,cAAO,iBAAiB,UAAWE,CAAa,EAEzC,IAAM,CACX,OAAO,oBAAoB,UAAWA,CAAa,CACrD,CACF,EAAG,CAACF,CAAa,CAAC,EAOhB5B,EAACS,EAAA,CACC,SAAUU,EACV,KAAMK,EACN,WAAYJ,EACZ,QAASK,EACT,cAAeJ,EACf,MATUG,EAAO,WAAa,YAU9B,cAAeI,EAEf,SAAA5B,EAACgC,EAAA,CAAgB,cAAe,EAC9B,SAAAhC,EAAC,OACC,UAAWiC,EAAG,kFAAmFlB,CAAS,EAC1G,YAAU,kBACV,MACE,CACE,kBAAmBX,EACnB,uBAAwBE,EACxB,GAAGU,CACL,EAED,GAAGE,EAEH,SAAAD,EACH,EACF,EACF,CAEJ,CAMA,IAAMiB,EAAe,UAErB,SAASC,GAAQ,CACf,KAAAC,EAAO,OACP,QAAAC,EAAU,UACV,YAAAC,EAAc,YACd,UAAAvB,EACA,SAAAE,EACA,GAAGC,CACL,EAIgB,CACd,GAAM,CAAE,SAAAC,EAAU,MAAAoB,EAAO,WAAAnB,EAAY,cAAAC,CAAc,EAAIX,EAAWwB,CAAY,EAE9E,OAAII,IAAgB,OAEhBtC,EAAC,OACC,UAAWiC,EAAG,8EAA+ElB,CAAS,EACtG,YAAU,UACT,GAAGG,EAEH,SAAAD,EACH,EAIAE,EAEAnB,EAACwC,EAAA,CAAM,KAAMpB,EAAY,aAAcC,EAAgB,GAAGH,EACxD,SAAAjB,EAACwC,EAAA,CACC,UAAU,+EACV,cAAY,OACZ,eAAa,UACb,YAAU,UACV,KAAML,EACN,MACE,CACE,kBAAmB/B,CACrB,EAGF,UAAAJ,EAACyC,EAAA,CAAY,UAAU,UACrB,UAAA1C,EAAC2C,EAAA,CAAW,mBAAO,EACnB3C,EAAC4C,EAAA,CAAiB,wCAA4B,GAChD,EACA5C,EAAC,OAAI,UAAU,8BAA+B,SAAAiB,EAAS,GACzD,EACF,EAKFhB,EAAC,OACC,UAAWgC,EAAG,qDAAsDlB,CAAS,EAC7E,mBAAkBwB,IAAU,YAAcD,EAAc,GACxD,YAAWF,EACX,YAAU,UACV,aAAYG,EACZ,eAAcF,EAGd,UAAArC,EAAC,OACC,UAAWiC,EACT,oKACAI,IAAY,YAAcA,IAAY,QAClC,mFACA,wDACN,EACA,YAAU,cACZ,EACArC,EAAC,OACC,UAAWiC,EACT,uHACAG,IAAS,OACL,iFACA,mFAEJC,IAAY,YAAcA,IAAY,QAClC,2FACA,0HACJtB,CACF,EACA,YAAU,oBACT,GAAGG,EAEJ,SAAAlB,EAAC,OACC,UAAU,mNACV,eAAa,UACb,YAAU,gBAET,SAAAiB,EACH,EACF,GACF,CAEJ,CAMA,IAAM4B,EAAuB,iBAE7B,SAASC,GAAe,CAAE,UAAA/B,EAAW,QAAAgC,EAAS,GAAG7B,CAAM,EAA+C,CACpG,GAAM,CAAE,cAAAU,CAAc,EAAIlB,EAAWmC,CAAoB,EAEzD,OACE5C,EAAC+C,EAAA,CACC,UAAWf,EAAG,SAAUlB,CAAS,EACjC,eAAa,UACb,YAAU,kBACV,KAAK,OACL,QAAQ,QACR,QAAUgB,GAAU,CAClBgB,IAAUhB,CAAK,EACfH,EAAc,CAChB,EACC,GAAGV,EAEJ,UAAAlB,EAACN,EAAA,EAAc,EACfM,EAAC,QAAK,UAAU,UAAU,0BAAc,GAC1C,CAEJ,CAMA,IAAMiD,EAAoB,cAE1B,SAASC,GAAY,CAAE,UAAAnC,EAAW,GAAGG,CAAM,EAA0C,CACnF,GAAM,CAAE,cAAAU,CAAc,EAAIlB,EAAWuC,CAAiB,EAEtD,OACEjD,EAAC,UACC,UAAWiC,EACT,8rBACAlB,CACF,EACA,eAAa,OACb,YAAU,eACV,MAAM,iBACN,KAAK,SACL,QAASa,EACR,GAAGV,EACN,CAEJ,CAMA,SAASiC,GAAa,CAAE,UAAApC,EAAW,GAAGG,CAAM,EAAwC,CAClF,OACElB,EAAC,QACC,UAAWiC,EACT,qQACAlB,CACF,EACA,YAAU,gBACT,GAAGG,EACN,CAEJ,CAMA,SAASkC,GAAa,CAAE,UAAArC,EAAW,GAAGG,CAAM,EAA8C,CACxF,OACElB,EAACqD,EAAA,CACC,UAAWpB,EAAG,uCAAwClB,CAAS,EAC/D,eAAa,QACb,YAAU,gBACT,GAAGG,EACN,CAEJ,CAMA,SAASoC,GAAc,CAAE,UAAAvC,EAAW,GAAGG,CAAM,EAAuC,CAClF,OACElB,EAAC,OACC,UAAWiC,EAAG,0BAA2BlB,CAAS,EAClD,eAAa,SACb,YAAU,iBACT,GAAGG,EACN,CAEJ,CAMA,SAASqC,GAAc,CAAE,UAAAxC,EAAW,GAAGG,CAAM,EAAuC,CAClF,OACElB,EAAC,OACC,UAAWiC,EAAG,0BAA2BlB,CAAS,EAClD,eAAa,SACb,YAAU,iBACT,GAAGG,EACN,CAEJ,CAMA,SAASsC,GAAiB,CAAE,UAAAzC,EAAW,GAAGG,CAAM,EAAkD,CAChG,OACElB,EAACyD,EAAA,CACC,UAAWxB,EAAG,gCAAiClB,CAAS,EACxD,eAAa,YACb,YAAU,oBACT,GAAGG,EACN,CAEJ,CAMA,SAASwC,GAAe,CAAE,UAAA3C,EAAW,GAAGG,CAAM,EAAuC,CACnF,OACElB,EAAC,OACC,UAAWiC,EACT,iGACAlB,CACF,EACA,eAAa,UACb,YAAU,kBACT,GAAGG,EACN,CAEJ,CAMA,SAASyC,GAAa,CAAE,UAAA5C,EAAW,GAAGG,CAAM,EAAuC,CACjF,OACElB,EAAC,OACC,UAAWiC,EAAG,4CAA6ClB,CAAS,EACpE,eAAa,QACb,YAAU,gBACT,GAAGG,EACN,CAEJ,CAMA,SAAS0C,GAAkB,CACzB,UAAA7C,EACA,QAAA8C,EAAU,GACV,GAAG3C,CACL,EAEgB,CAGd,OACElB,EAHgB6D,EAAUpE,EAAO,MAGhC,CACC,UAAWwC,EACT,gUACAlB,CACF,EACA,eAAa,cACb,YAAU,sBACT,GAAGG,EACN,CAEJ,CAMA,SAAS4C,GAAmB,CAC1B,UAAA/C,EACA,QAAA8C,EAAU,GACV,GAAG3C,CACL,EAEgB,CAGd,OACElB,EAHgB6D,EAAUpE,EAAO,SAGhC,CACC,UAAWwC,EACT,gXACAlB,CACF,EACA,eAAa,eACb,YAAU,uBACT,GAAGG,EACN,CAEJ,CAMA,SAAS6C,GAAoB,CAAE,UAAAhD,EAAW,GAAGG,CAAM,EAAuC,CACxF,OACElB,EAAC,OACC,UAAWiC,EAAG,iBAAkBlB,CAAS,EACzC,eAAa,gBACb,YAAU,wBACT,GAAGG,EACN,CAEJ,CAMA,SAAS8C,GAAY,CAAE,UAAAjD,EAAW,GAAGG,CAAM,EAAsC,CAC/E,OACElB,EAAC,MACC,UAAWiC,EAAG,qCAAsClB,CAAS,EAC7D,eAAa,OACb,YAAU,eACT,GAAGG,EACN,CAEJ,CAMA,SAAS+C,GAAgB,CAAE,UAAAlD,EAAW,GAAGG,CAAM,EAAsC,CACnF,OACElB,EAAC,MACC,UAAWiC,EAAG,2BAA4BlB,CAAS,EACnD,eAAa,YACb,YAAU,oBACT,GAAGG,EACN,CAEJ,CAMA,IAAMgD,GAA4BnE,EAAG,CACnC,KAAM,ozBACN,SAAU,CACR,QAAS,CACP,QAAS,+DACT,QACE,8KACJ,EACA,KAAM,CACJ,GAAI,cACJ,GAAI,cACJ,GAAI,iDACN,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,IACR,CACF,CAAC,EAMKoE,GAA2B,oBAEjC,SAASC,GAAkB,CACzB,QAAAP,EAAU,GACV,SAAAQ,EAAW,GACX,QAAAhC,EAAU,UACV,KAAAiC,EAAO,KACP,QAAAC,EACA,UAAAxD,EACA,GAAGG,CACL,EAKkB,CAChB,IAAMsD,EAAYX,EAAUpE,EAAO,SAC7B,CAAE,SAAA0B,EAAU,MAAAoB,CAAM,EAAI7B,EAAWyD,EAAwB,EAEzDM,EACJzE,EAACwE,EAAA,CACC,UAAWvC,EAAGiC,GAA0B,CAAE,QAAA7B,EAAS,KAAAiC,CAAK,CAAC,EAAGvD,CAAS,EACrE,cAAasD,EACb,eAAa,cACb,YAAWC,EACX,YAAU,sBACT,GAAGpD,EACN,EAGF,OAAKqD,GAID,OAAOA,GAAY,WAErBA,EAAU,CACR,SAAUA,CACZ,GAIAtE,EAACyE,EAAA,CACC,UAAA1E,EAAC2E,EAAA,CAAe,QAAO,GAAE,SAAAF,EAAO,EAChCzE,EAAC4E,EAAA,CAAe,MAAM,SAAS,OAAQrC,IAAU,aAAepB,EAAU,KAAK,QAAS,GAAGoD,EAAS,GACtG,GAdOE,CAgBX,CAMA,SAASI,GAAkB,CACzB,UAAA9D,EACA,QAAA8C,EAAU,GACV,YAAAiB,EAAc,GACd,GAAG5D,CACL,EAGgB,CAGd,OACElB,EAHgB6D,EAAUpE,EAAO,SAGhC,CACC,UAAWwC,EACT,iiBACA6C,GACE,2LACF/D,CACF,EACA,eAAa,cACb,YAAU,sBACT,GAAGG,EACN,CAEJ,CAMA,SAAS6D,GAAiB,CAAE,UAAAhE,EAAW,GAAGG,CAAM,EAAuC,CACrF,OACElB,EAAC,OACC,UAAWiC,EACT,kcACAlB,CACF,EACA,eAAa,aACb,YAAU,qBACT,GAAGG,EACN,CAEJ,CAMA,SAAS8D,GAAoB,CAC3B,UAAAjE,EACA,SAAAkE,EAAW,GACX,GAAG/D,CACL,EAEgB,CAEd,IAAMgE,EAAQrF,EAAQ,IACb,GAAG,KAAK,MAAM,KAAK,OAAO,EAAI,EAAE,EAAI,EAAE,IAC5C,CAAC,CAAC,EAEL,OACEI,EAAC,OACC,UAAWgC,EAAG,8CAA+ClB,CAAS,EACtE,eAAa,gBACb,YAAU,wBACT,GAAGG,EAEH,UAAA+D,EAAWjF,EAACmF,EAAA,CAAS,UAAU,oBAAoB,eAAa,qBAAqB,EAAK,KAC3FnF,EAACmF,EAAA,CACC,UAAU,sCACV,eAAa,qBACb,MACE,CACE,mBAAoBD,CACtB,EAEJ,GACF,CAEJ,CAMA,SAASE,GAAe,CAAE,UAAArE,EAAW,GAAGG,CAAM,EAAsC,CAClF,OACElB,EAAC,MACC,UAAWiC,EACT,sIACAlB,CACF,EACA,eAAa,WACb,YAAU,mBACT,GAAGG,EACN,CAEJ,CAMA,SAASmE,GAAmB,CAAE,UAAAtE,EAAW,GAAGG,CAAM,EAAsC,CACtF,OACElB,EAAC,MACC,UAAWiC,EAAG,+BAAgClB,CAAS,EACvD,eAAa,gBACb,YAAU,wBACT,GAAGG,EACN,CAEJ,CAMA,SAASoE,GAAqB,CAC5B,QAAAzB,EAAU,GACV,KAAAS,EAAO,KACP,SAAAD,EAAW,GACX,UAAAtD,EACA,GAAGG,CACL,EAIgB,CAGd,OACElB,EAHgB6D,EAAUpE,EAAO,IAGhC,CACC,UAAWwC,EACT,ukBACAqC,IAAS,MAAQ,UACjBA,IAAS,MAAQ,UACjB,uCACAvD,CACF,EACA,cAAasD,EACb,eAAa,kBACb,YAAWC,EACX,YAAU,0BACT,GAAGpD,EACN,CAEJ","sourcesContent":["'use client';\n\nimport type { ComponentProps, CSSProperties, Dispatch, JSX, SetStateAction } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { useIsMobile } from '@codefast/hooks';\nimport { createContext } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeftIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/tooltip';\nimport { cn } from '@/lib/utils';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3.0625rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ninterface SidebarContextProps {\n isMobile: boolean;\n open: boolean;\n openMobile: boolean;\n setOpen: (open: boolean) => void;\n setOpenMobile: Dispatch<SetStateAction<boolean>>;\n state: 'collapsed' | 'expanded';\n toggleSidebar: () => void;\n}\n\n/* -----------------------------------------------------------------------------\n * Context: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_PROVIDER_NAME = 'SidebarProvider';\n\nconst [SidebarProviderProvider, useSidebar] = createContext<SidebarContextProps>(SIDEBAR_PROVIDER_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ComponentProps<'div'> & {\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n}): JSX.Element {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = 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 const [isOpen, setIsOpen] = useState(defaultOpen);\n const open = openProp ?? isOpen;\n const setOpen = useCallback(\n (value: ((value: boolean) => boolean) | boolean) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n setIsOpen(openState);\n }\n\n // eslint-disable-next-line unicorn/no-document-cookie -- This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((currentValue) => !currentValue);\n } else {\n setOpen((currentValue) => !currentValue);\n }\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [toggleSidebar]);\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 return (\n <SidebarProviderProvider\n isMobile={isMobile}\n open={open}\n openMobile={openMobile}\n setOpen={setOpen}\n setOpenMobile={setOpenMobile}\n state={state}\n toggleSidebar={toggleSidebar}\n >\n <TooltipProvider delayDuration={0}>\n <div\n className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className)}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarProviderProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Sidebar\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_NAME = 'Sidebar';\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: ComponentProps<'div'> & {\n collapsible?: 'icon' | 'none' | 'offcanvas';\n side?: 'left' | 'right';\n variant?: 'floating' | 'inset' | 'sidebar';\n}): JSX.Element {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar(SIDEBAR_NAME);\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col', className)}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className={cn('text-sidebar-foreground group peer hidden md:block', className)}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n 'w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear 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-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\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-sm\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarTrigger\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_TRIGGER_NAME = 'SidebarTrigger';\n\nfunction SidebarTrigger({ className, onClick, ...props }: ComponentProps<typeof Button>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);\n\n return (\n <Button\n className={cn('size-7', className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarRail\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_RAIL_NAME = 'SidebarRail';\n\nfunction SidebarRail({ className, ...props }: ComponentProps<'button'>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);\n\n return (\n <button\n className={cn(\n 'hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n title=\"Toggle Sidebar\"\n type=\"button\"\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInset\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInset({ className, ...props }: ComponentProps<'main'>): JSX.Element {\n return (\n <main\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInput\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInput({ className, ...props }: ComponentProps<typeof Input>): JSX.Element {\n return (\n <Input\n className={cn('bg-background h-8 w-full shadow-none', className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarHeader\n * -------------------------------------------------------------------------- */\n\nfunction SidebarHeader({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarFooter\n * -------------------------------------------------------------------------- */\n\nfunction SidebarFooter({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarSeparator\n * -------------------------------------------------------------------------- */\n\nfunction SidebarSeparator({ className, ...props }: ComponentProps<typeof Separator>): JSX.Element {\n return (\n <Separator\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroup\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroup({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupLabel\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-label\"\n data-slot=\"sidebar-group-label\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-action\"\n data-slot=\"sidebar-group-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('w-full text-sm', className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenu\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenu({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-item relative', className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Variant: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n sm: 'h-7 text-xs',\n md: 'h-8 text-sm',\n lg: 'group-data-[collapsible=icon]:p-0! h-12 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_MENU_BUTTON_NAME = 'SidebarMenuButton';\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'md',\n tooltip,\n className,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof sidebarMenuButtonVariants> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: ComponentProps<typeof TooltipContent> | string;\n }): JSX.Element {\n const Component = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);\n\n const button = (\n <Component\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-slot=\"sidebar-menu-button\"\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n // eslint-disable-next-line no-param-reassign -- convert it to an object with default properties\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent align=\"center\" hidden={state !== 'collapsed' || isMobile} side=\"right\" {...tooltip} />\n </Tooltip>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\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 data-sidebar=\"menu-action\"\n data-slot=\"sidebar-menu-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuBadge\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuBadge({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1',\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSkeleton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: ComponentProps<'div'> & {\n showIcon?: boolean;\n}): JSX.Element {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon ? <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" /> : null}\n <Skeleton\n className=\"max-w-(--skeleton-width) h-4 flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as CSSProperties\n }\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSub\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSub({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-sub-item relative', className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubButton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: ComponentProps<'a'> & {\n asChild?: boolean;\n isActive?: boolean;\n size?: 'md' | 'sm';\n}): JSX.Element {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-active={isActive}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-slot=\"sidebar-menu-sub-button\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\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 +0,0 @@
1
- {"version":3,"sources":["../src/components/carousel.tsx"],"names":["createContextScope","useEmblaCarousel","ArrowLeftIcon","ArrowRightIcon","useCallback","useEffect","useState","jsx","CAROUSEL_NAME","createCarouselContext","createCarouselScope","CarouselProvider","useCarouselContext","Carousel","__scopeCarousel","children","className","opts","orientation","plugins","setApi","props","carouselRef","api","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","carouselApi","scrollPrev","scrollNext","handleKeyDown","event","cn","CAROUSEL_CONTENT_NAME","CarouselContent","classNames","CAROUSEL_ITEM_NAME","CarouselItem","CAROUSEL_PREVIOUS_NAME","CarouselPrevious","size","variant","Button","CAROUSEL_NEXT_NAME","CarouselNext"],"mappings":"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","sourcesContent":["'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX, KeyboardEvent } from 'react';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Context: Carousel\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_NAME = 'Carousel';\n\ntype ScopedProps<P> = P & { __scopeCarousel?: Scope };\n\nconst [createCarouselContext, createCarouselScope] = createContextScope(CAROUSEL_NAME);\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ninterface BaseCarouselProps {\n opts?: CarouselOptions;\n orientation?: 'horizontal' | 'vertical';\n plugins?: CarouselPlugin;\n setApi?: (api: CarouselApi) => void;\n}\n\ntype CarouselContextValue = BaseCarouselProps & {\n api: ReturnType<typeof useEmblaCarousel>[1];\n canScrollNext: boolean;\n canScrollPrev: boolean;\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n scrollNext: () => void;\n scrollPrev: () => void;\n};\n\nconst [CarouselProvider, useCarouselContext] = createCarouselContext<CarouselContextValue>(CAROUSEL_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: Carousel\n * -------------------------------------------------------------------------- */\n\nfunction Carousel({\n __scopeCarousel,\n children,\n className,\n opts,\n orientation,\n plugins,\n setApi,\n ...props\n}: ScopedProps<BaseCarouselProps & ComponentProps<'div'>>): JSX.Element {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'vertical' ? 'y' : 'x',\n },\n plugins,\n );\n\n const [canScrollPrev, setCanScrollPrev] = useState(false);\n const [canScrollNext, setCanScrollNext] = useState(false);\n\n const onSelect = useCallback((carouselApi: CarouselApi) => {\n if (!carouselApi) {\n return;\n }\n\n setCanScrollPrev(carouselApi.canScrollPrev());\n setCanScrollNext(carouselApi.canScrollNext());\n }, []);\n\n const scrollPrev = useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n useEffect(() => {\n if (!api || !setApi) {\n return;\n }\n\n setApi(api);\n }, [api, setApi]);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselProvider\n api={api}\n canScrollNext={canScrollNext}\n canScrollPrev={canScrollPrev}\n carouselRef={carouselRef}\n opts={opts}\n orientation={orientation ?? (opts?.axis === 'y' ? 'vertical' : 'horizontal')}\n scope={__scopeCarousel}\n scrollNext={scrollNext}\n scrollPrev={scrollPrev}\n >\n <div\n aria-roledescription=\"carousel\"\n className={cn('relative', className)}\n data-slot=\"carousel\"\n role=\"region\"\n onKeyDownCapture={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselContent\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_CONTENT_NAME = 'CarouselContent';\n\nfunction CarouselContent({\n __scopeCarousel,\n className,\n classNames,\n ...props\n}: ScopedProps<\n ComponentProps<'div'> & {\n classNames?: {\n content?: string;\n wrapper?: string;\n };\n }\n>): JSX.Element {\n const { carouselRef, orientation } = useCarouselContext(CAROUSEL_CONTENT_NAME, __scopeCarousel);\n\n return (\n <div ref={carouselRef} className={cn('overflow-hidden', classNames?.wrapper)} data-slot=\"carousel-content\">\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n classNames?.content,\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselItem\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_ITEM_NAME = 'CarouselItem';\n\nfunction CarouselItem({ __scopeCarousel, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const { orientation } = useCarouselContext(CAROUSEL_ITEM_NAME, __scopeCarousel);\n\n return (\n <div\n aria-roledescription=\"slide\"\n className={cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className)}\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselPrevious\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_PREVIOUS_NAME = 'CarouselPrevious';\n\nfunction CarouselPrevious({\n __scopeCarousel,\n className,\n size = 'icon',\n variant = 'outline',\n ...props\n}: ScopedProps<ComponentProps<typeof Button>>): JSX.Element {\n const { canScrollPrev, orientation, scrollPrev } = useCarouselContext(CAROUSEL_PREVIOUS_NAME, __scopeCarousel);\n\n return (\n <Button\n aria-label=\"Previous slide\"\n className={cn(\n 'absolute size-8 shadow-none',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n prefix={<ArrowLeftIcon />}\n size={size}\n variant={variant}\n onClick={scrollPrev}\n {...props}\n >\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselNext\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_NEXT_NAME = 'CarouselNext';\n\nfunction CarouselNext({\n __scopeCarousel,\n className,\n size = 'icon',\n variant = 'outline',\n ...props\n}: ScopedProps<ComponentProps<typeof Button>>): JSX.Element {\n const { canScrollNext, orientation, scrollNext } = useCarouselContext(CAROUSEL_NEXT_NAME, __scopeCarousel);\n\n return (\n <Button\n aria-label=\"Next slide\"\n className={cn(\n 'absolute size-8 shadow-none',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n prefix={<ArrowRightIcon />}\n size={size}\n variant={variant}\n onClick={scrollNext}\n {...props}\n >\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport type { CarouselApi };\nexport { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, createCarouselScope };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-HPWHFFV6.cjs","../src/components/scroll-area.tsx"],"names":["ScrollAreaPrimitive","useScrollAreaContext","createScrollAreaContext","SCROLL_AREA_NAME","ScrollArea","children","className","props","ScrollAreaProvider","size","jsxs","cn","jsx","ScrollAreaScrollbar","orientation","__scopeScrollArea","scrollAreaScrollbarVariants"],"mappings":"AAAA,uWAAY,CAAC,wDCMJ,uDACGA,iHACH,qDAwFD,+CA/EN,IAAM,CAAA,CAAA,kCAAA,CAAA,IAAA,CAAA,oDACN,CAAA,gBAEe,CAAA,CAAA,CAAA,SACX,CAAA,OAAa,CAAA,WACb,CAAA,UAGA,CAAA,IAAA,CAAA,IAAW,CAAA,CAAA,CAAA,SACX,CAAA,KAAa,CAAA,WACb,CAAA,UAGA,CAAA,IAAA,CAAA,IAAW,CAAA,CAAA,CAAA,SACX,CAAA,OAAa,CAAA,WACb,CAAA,UAGA,CAAA,IAAA,CAAA,IAAW,CAAA,CAAA,CAAA,SACX,CAAA,OAAa,CAAA,WAAA,CACb,YAGA,CAAA,IAAA,CAAA,IAAW,CAAA,CAAA,CAAA,SACX,CAAA,KAAa,CAAA,WAAA,CACb,YAGA,CAAA,IAAA,CAAA,IAAW,CAAA,CAAA,CAAA,SACX,CAAA,OAAa,CAAA,WAAA,CACb,YAGJ,CAAA,IAAA,CAAA,IACE,CAAA,CAAA,CAAA,QAAA,CAAa,CACX,WAAY,CAAA,CAAA,UAAA,CAAA,+CACF,CAAA,QAAA,CAAA,+CAGJ,CAAA,CAAA,IACF,CAAA,CAAA,IACA,CAAA,EACJ,CAAA,EAAI,CAAA,EAER,CAAA,EACA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,eAEE,CAAA,CAAA,IAAA,CAAA,IAAU,CAAA,QAEb,CAAA,UAMwB,CAAA,CAAA,CAAA,CAAA,CAAA,CAInB,YAIqBC,CAAoB,CAAA,CAAIC,CAAAA,CAAgDC,8CAAgB,CAMnH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CAAW,CAClB,CAAA,SAAA,CAAA,CAAA,CAAA,iBACAC,CACA,CAAA,CAAA,QAAAC,CAAAA,CACA,CAAA,SACGC,CACL,CAAA,CAAuG,IACrG,CAAA,CAAA,CAAA,GACGC,CAAAA,CAAA,CAAmB,CAAA,OAA0B,6BAAA,CAAA,CAAA,CAAMC,KAClD,CAAA,CAAA,CAAA,IAAAC,CAAqB,CAAA,CAAA,QAAK,CAAA,8BAAA,CAAA,CAAA,IAAWC,CAAG,CAAA,SAAA,CAAYL,iCAAS,UAAG,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,aACxE,CAAA,GAAAM,CAAqB,CAAA,QAAA,CAAA,CAApB,6BACC,CAAA,CAAA,QAAU,CAAA,CAAA,SAAA,CAAA,+GACA,CAAA,WAAA,CAAA,sBAGZ,CACAA,QAAqB,CAAA,CAAA,CAAA,CAAA,CAAA,6BAAA,CAAA,CAAY,CAAA,WAAW,CAC5CA,UAAqB,CAAA,CAAA,CAAA,6BAAA,CAAA,CAAY,CAAA,WAAA,CAAa,YACzB,CAApB,CAAA,CAA2B,6BAAA,CAC9B,CAAA,MASN,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CAAoB,CAC3B,CAAA,SAAA,CAAA,CAAA,CAAA,iBACAP,CAAAA,CACA,CAAA,SAAA,CAAA,CAAAQ,CAAAA,WAGM,CAAE,CAAA,CAAA,GAAAL,CAAK,CAAA,CAAIR,CAAAA,GAAuCc,CAAiB,IAEzE,CAAA,CAAA,CAAA,CAAA,CACEH,CAAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,OAAA,6BAApB,CACC,CAAA,SAAWI,CAA4B,CAAE,SAAA,CAAAV,CAAAA,CAAW,CAAA,SAAA,CAAA,CAAAQ,CAAAA,WACpD,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,uBACGA,CAAAA,WAGb,CAAA,CAAA,CAAA,GAAqB,CAAA,CAAA,QAAA,CAAA,6BAAA,CAAA,CAAA,eAA0B,CAAA,CAAA,SAAA,CAAA,wCAGrD,CAAA,CAAA,CAAA,CAAA,CAAA,6BAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-HPWHFFV6.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { tv } from 'tailwind-variants';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Variant: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nconst scrollAreaScrollbarVariants = tv({\n base: 'flex touch-none select-none p-px transition-colors',\n compoundVariants: [\n {\n className: 'w-1.5',\n orientation: 'vertical',\n size: 'sm',\n },\n {\n className: 'w-2',\n orientation: 'vertical',\n size: 'md',\n },\n {\n className: 'w-2.5',\n orientation: 'vertical',\n size: 'lg',\n },\n {\n className: 'h-1.5',\n orientation: 'horizontal',\n size: 'sm',\n },\n {\n className: 'h-2',\n orientation: 'horizontal',\n size: 'md',\n },\n {\n className: 'h-2.5',\n orientation: 'horizontal',\n size: 'lg',\n },\n ],\n variants: {\n orientation: {\n horizontal: 'w-full flex-col border-t border-t-transparent',\n vertical: 'h-full flex-row border-l border-l-transparent',\n },\n size: {\n none: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n vertical: 'vertical',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Context: ScrollArea\n * -------------------------------------------------------------------------- */\n\nconst SCROLL_AREA_NAME = 'ScrollArea';\n\ntype ScopedProps<P> = P & { __scopeScrollArea?: Scope };\n\nconst [createScrollAreaContext] = createContextScope(SCROLL_AREA_NAME);\n\ntype ScrollAreaContextValue = Pick<VariantProps<typeof scrollAreaScrollbarVariants>, 'size'>;\n\nconst [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext<ScrollAreaContextValue>(SCROLL_AREA_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollArea\n * -------------------------------------------------------------------------- */\n\nfunction ScrollArea({\n __scopeScrollArea,\n children,\n className,\n size,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Root> & ScrollAreaContextValue>): JSX.Element {\n return (\n <ScrollAreaProvider scope={__scopeScrollArea} size={size}>\n <ScrollAreaPrimitive.Root className={cn('relative', className)} data-slot=\"scroll-area\" {...props}>\n <ScrollAreaPrimitive.Viewport\n className=\"outline-ring ring-ring/50 size-full rounded-[inherit] transition focus-visible:outline-1 focus-visible:ring-4\"\n data-slot=\"scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollAreaScrollbar orientation=\"vertical\" />\n <ScrollAreaScrollbar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n </ScrollAreaProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ScrollAreaScrollbar\n * -------------------------------------------------------------------------- */\n\nfunction ScrollAreaScrollbar({\n __scopeScrollArea,\n className,\n orientation,\n ...props\n}: ScopedProps<ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>>): JSX.Element {\n const { size } = useScrollAreaContext(SCROLL_AREA_NAME, __scopeScrollArea);\n\n return (\n <ScrollAreaPrimitive.Scrollbar\n className={scrollAreaScrollbarVariants({ className, orientation, size })}\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { ScrollArea, ScrollAreaScrollbar };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-JJW4VWZS.cjs","../src/components/carousel.tsx"],"names":["useEmblaCarousel","createCarouselContext","CarouselProvider","useCarouselContext","CAROUSEL_NAME","Carousel","children","className","orientation","props","carouselRef","api","opts","canScrollPrev","canScrollNext","setCanScrollNext","useState","onSelect","useCallback","carouselApi","setCanScrollPrev","event","useEffect","setApi","jsx","scrollNext","scrollPrev","classNames","cn","CAROUSEL_ITEM_NAME","CAROUSEL_PREVIOUS_NAME","Button","ArrowLeftIcon","size","ArrowRightIcon"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-JJW4VWZS.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX, KeyboardEvent } from 'react';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Context: Carousel\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_NAME = 'Carousel';\n\ntype ScopedProps<P> = P & { __scopeCarousel?: Scope };\n\nconst [createCarouselContext, createCarouselScope] = createContextScope(CAROUSEL_NAME);\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ninterface BaseCarouselProps {\n opts?: CarouselOptions;\n orientation?: 'horizontal' | 'vertical';\n plugins?: CarouselPlugin;\n setApi?: (api: CarouselApi) => void;\n}\n\ntype CarouselContextValue = BaseCarouselProps & {\n api: ReturnType<typeof useEmblaCarousel>[1];\n canScrollNext: boolean;\n canScrollPrev: boolean;\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n scrollNext: () => void;\n scrollPrev: () => void;\n};\n\nconst [CarouselProvider, useCarouselContext] = createCarouselContext<CarouselContextValue>(CAROUSEL_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: Carousel\n * -------------------------------------------------------------------------- */\n\nfunction Carousel({\n __scopeCarousel,\n children,\n className,\n opts,\n orientation,\n plugins,\n setApi,\n ...props\n}: ScopedProps<BaseCarouselProps & ComponentProps<'div'>>): JSX.Element {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'vertical' ? 'y' : 'x',\n },\n plugins,\n );\n\n const [canScrollPrev, setCanScrollPrev] = useState(false);\n const [canScrollNext, setCanScrollNext] = useState(false);\n\n const onSelect = useCallback((carouselApi: CarouselApi) => {\n if (!carouselApi) {\n return;\n }\n\n setCanScrollPrev(carouselApi.canScrollPrev());\n setCanScrollNext(carouselApi.canScrollNext());\n }, []);\n\n const scrollPrev = useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n useEffect(() => {\n if (!api || !setApi) {\n return;\n }\n\n setApi(api);\n }, [api, setApi]);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselProvider\n api={api}\n canScrollNext={canScrollNext}\n canScrollPrev={canScrollPrev}\n carouselRef={carouselRef}\n opts={opts}\n orientation={orientation ?? (opts?.axis === 'y' ? 'vertical' : 'horizontal')}\n scope={__scopeCarousel}\n scrollNext={scrollNext}\n scrollPrev={scrollPrev}\n >\n <div\n aria-roledescription=\"carousel\"\n className={cn('relative', className)}\n data-slot=\"carousel\"\n role=\"region\"\n onKeyDownCapture={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselContent\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_CONTENT_NAME = 'CarouselContent';\n\nfunction CarouselContent({\n __scopeCarousel,\n className,\n classNames,\n ...props\n}: ScopedProps<\n ComponentProps<'div'> & {\n classNames?: {\n content?: string;\n wrapper?: string;\n };\n }\n>): JSX.Element {\n const { carouselRef, orientation } = useCarouselContext(CAROUSEL_CONTENT_NAME, __scopeCarousel);\n\n return (\n <div ref={carouselRef} className={cn('overflow-hidden', classNames?.wrapper)} data-slot=\"carousel-content\">\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n classNames?.content,\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselItem\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_ITEM_NAME = 'CarouselItem';\n\nfunction CarouselItem({ __scopeCarousel, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const { orientation } = useCarouselContext(CAROUSEL_ITEM_NAME, __scopeCarousel);\n\n return (\n <div\n aria-roledescription=\"slide\"\n className={cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className)}\n data-slot=\"carousel-item\"\n role=\"group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselPrevious\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_PREVIOUS_NAME = 'CarouselPrevious';\n\nfunction CarouselPrevious({\n __scopeCarousel,\n className,\n size = 'icon',\n variant = 'outline',\n ...props\n}: ScopedProps<ComponentProps<typeof Button>>): JSX.Element {\n const { canScrollPrev, orientation, scrollPrev } = useCarouselContext(CAROUSEL_PREVIOUS_NAME, __scopeCarousel);\n\n return (\n <Button\n aria-label=\"Previous slide\"\n className={cn(\n 'absolute size-8 shadow-none',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n data-slot=\"carousel-previous\"\n disabled={!canScrollPrev}\n prefix={<ArrowLeftIcon />}\n size={size}\n variant={variant}\n onClick={scrollPrev}\n {...props}\n >\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CarouselNext\n * -------------------------------------------------------------------------- */\n\nconst CAROUSEL_NEXT_NAME = 'CarouselNext';\n\nfunction CarouselNext({\n __scopeCarousel,\n className,\n size = 'icon',\n variant = 'outline',\n ...props\n}: ScopedProps<ComponentProps<typeof Button>>): JSX.Element {\n const { canScrollNext, orientation, scrollNext } = useCarouselContext(CAROUSEL_NEXT_NAME, __scopeCarousel);\n\n return (\n <Button\n aria-label=\"Next slide\"\n className={cn(\n 'absolute size-8 shadow-none',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n data-slot=\"carousel-next\"\n disabled={!canScrollNext}\n prefix={<ArrowRightIcon />}\n size={size}\n variant={variant}\n onClick={scrollNext}\n {...props}\n >\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport type { CarouselApi };\nexport { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, createCarouselScope };\n"]}
@@ -1,2 +0,0 @@
1
- "use client";import{a as l}from"./chunk-7KXMJMOL.js";import{a as d}from"./chunk-OKUFCFYT.js";import{createContextScope as f}from"@radix-ui/react-context";import{Slot as u}from"@radix-ui/react-slot";import{useId as P}from"react";import{Controller as I,FormProvider as S,useFormContext as g,useFormState as x}from"react-hook-form";import{jsx as m}from"react/jsx-runtime";var A=S,c="FormField",[p,D]=f(c),[C,M]=p(c);function a(o,t){let{id:e}=b(o,t),{name:r}=M(o,t),{getFieldState:n}=g(),i=x({name:r}),s=n(r,i);return{id:e,name:r,formDescriptionId:`form-item-description-${e}`,formItemId:`form-item-${e}`,formMessageId:`form-item-message-${e}`,...s}}function O(o){let{__scopeFormField:t,...e}=o;return m(C,{name:e.name,scope:t,children:m(I,{...e})})}var E="FormItem",[V,b]=p(E);function J({__scopeFormField:o,className:t,...e}){let r=P();return m(V,{id:r,scope:o,children:m("div",{className:d("grid gap-2",t),"data-slot":"form-item",...e})})}var N="FormLabel";function X({__scopeFormField:o,...t}){let{formItemId:e,error:r}=a(N,o);return m(l,{"data-invalid":r?!0:void 0,"data-slot":"form-label",htmlFor:e,...t})}var T="FormControl";function $({__scopeFormField:o,...t}){let{formDescriptionId:e,formItemId:r,formMessageId:n,error:i}=a(T,o);return m(u,{"aria-describedby":i?`${e} ${n}`:e,"aria-invalid":!!i,"data-slot":"form-control",id:r,...t})}function B({__scopeFormField:o,className:t,...e}){let{formDescriptionId:r}=a(F,o);return m("p",{className:d("text-muted-foreground text-xs",t),"data-slot":"form-description",id:r,...e})}var F="FormMessage";function k({__scopeFormField:o,children:t,className:e,...r}){let{formMessageId:n,error:i}=a(F,o),s=i?.message?String(i.message):t;return s?m("p",{className:d("text-xs",i?.message?"text-destructive font-medium":"text-muted-foreground",e),"data-slot":"form-message",id:n,...r,children:s}):null}export{A as a,D as b,O as c,J as d,X as e,$ as f,B as g,k as h};
2
- //# sourceMappingURL=chunk-KNWGFYQN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form.tsx"],"names":["createContextScope","Slot","useId","Controller","FormProvider","useFormContext","useFormState","jsx","Form","FORM_FIELD_NAME","createFormFieldContext","createFormFieldScope","FormFieldProvider","useFormFieldContext","useFormItem","consumerName","scope","id","useFormItemContext","name","getFieldState","formState","fieldState","FormField","formFieldProps","__scopeFormField","props","FORM_ITEM_NAME","FormItemProvider","FormItem","className","cn","FORM_LABEL_NAME","FormLabel","formItemId","error","Label","FORM_CONTROL_NAME","FormControl","formDescriptionId","formMessageId","FormDescription","FORM_MESSAGE_NAME","FormMessage","children","body"],"mappings":"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","sourcesContent":["'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { ControllerProps, FieldError, FieldPath, FieldValues } from 'react-hook-form';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useId } from 'react';\nimport { Controller, FormProvider, useFormContext, useFormState } from 'react-hook-form';\n\nimport { Label } from '@/components/label';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Form\n * -------------------------------------------------------------------------- */\n\nconst Form = FormProvider;\n\n/* -----------------------------------------------------------------------------\n * Context: FormField\n * -------------------------------------------------------------------------- */\n\nconst FORM_FIELD_NAME = 'FormField';\n\ntype ScopedProps<P> = P & { __scopeFormField?: Scope };\n\nconst [createFormFieldContext, createFormFieldScope] = createContextScope(FORM_FIELD_NAME);\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName;\n}\n\nconst [FormFieldProvider, useFormFieldContext] = createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME);\n\nfunction useFormItem(\n consumerName: string,\n scope: Scope,\n): {\n formDescriptionId: string;\n formItemId: string;\n formMessageId: string;\n id: string;\n invalid: boolean;\n isDirty: boolean;\n isTouched: boolean;\n isValidating: boolean;\n name: string;\n error?: FieldError;\n} {\n const { id } = useFormItemContext(consumerName, scope);\n const { name } = useFormFieldContext(consumerName, scope);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name });\n const fieldState = getFieldState(name, formState);\n\n return {\n id,\n name,\n formDescriptionId: `form-item-description-${id}`,\n formItemId: `form-item-${id}`,\n formMessageId: `form-item-message-${id}`,\n ...fieldState,\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormField\n * -------------------------------------------------------------------------- */\n\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>): JSX.Element {\n const { __scopeFormField, ...props } = formFieldProps;\n\n return (\n <FormFieldProvider name={props.name} scope={__scopeFormField}>\n <Controller {...props} />\n </FormFieldProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Context: FormItem\n * -------------------------------------------------------------------------- */\n\nconst FORM_ITEM_NAME = 'FormItem';\n\ninterface FormItemContextValue {\n id: string;\n}\n\nconst [FormItemProvider, useFormItemContext] = createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: FormItem\n * -------------------------------------------------------------------------- */\n\nfunction FormItem({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const id = useId();\n\n return (\n <FormItemProvider id={id} scope={__scopeFormField}>\n <div className={cn('grid gap-2', className)} data-slot=\"form-item\" {...props} />\n </FormItemProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormLabel\n * -------------------------------------------------------------------------- */\n\nconst FORM_LABEL_NAME = 'FormLabel';\n\nfunction FormLabel({\n __scopeFormField,\n ...props\n}: ScopedProps<ComponentProps<typeof LabelPrimitive.Root>>): JSX.Element {\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField);\n\n return <Label data-invalid={error ? true : undefined} data-slot=\"form-label\" htmlFor={formItemId} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormControl\n * -------------------------------------------------------------------------- */\n\nconst FORM_CONTROL_NAME = 'FormControl';\n\nfunction FormControl({ __scopeFormField, ...props }: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(FORM_CONTROL_NAME, __scopeFormField);\n\n return (\n <Slot\n aria-describedby={error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId}\n aria-invalid={Boolean(error)}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormDescription\n * -------------------------------------------------------------------------- */\n\nfunction FormDescription({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'p'>>): JSX.Element {\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n\n return (\n <p\n className={cn('text-muted-foreground text-xs', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormMessage\n * -------------------------------------------------------------------------- */\n\nconst FORM_MESSAGE_NAME = 'FormMessage';\n\nfunction FormMessage({ __scopeFormField, children, className, ...props }: ScopedProps<ComponentProps<'p'>>): ReactNode {\n const { formMessageId, error } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n const body = error?.message ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-xs', error?.message ? 'text-destructive font-medium' : 'text-muted-foreground', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { createFormFieldScope, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage };\n"]}
@@ -1,2 +0,0 @@
1
- "use client";import{a as l}from"./chunk-B74UCONC.js";import{b as s}from"./chunk-3E3ZQIUX.js";import{a as p}from"./chunk-FR7P352M.js";import*as e from"@codefast-ui/input";import{useControllableState as C}from"@radix-ui/react-use-controllable-state";import{SearchIcon as b,XIcon as y}from"lucide-react";import{jsx as t,jsxs as x}from"react/jsx-runtime";var{input:S,root:V}=l();function N({className:u,defaultValue:m,disabled:i,loaderPosition:c,loading:f,onChange:v,prefix:d,readOnly:o,spinner:P,suffix:a,value:h,...I}){let[r,n]=C({defaultProp:m,onChange:v,prop:h});return x(e.Root,{className:V({className:[!a&&"pr-1.5",u]}),"data-slot":"input-search",disabled:i,loaderPosition:c,loading:f,prefix:d||t(b,{}),readOnly:o,spinner:P||t(p,{}),suffix:a,children:[t(e.Item,{className:S(),"data-slot":"input-search-item",type:"search",value:r??"",onChange:g=>{n(g.target.value)},...I}),r?t(s,{"aria-label":"Clear search",className:"focus-visible:not-disabled:bg-input size-7 rounded-full focus-visible:ring-0","data-slot":"input-search-clear",disabled:i||o,size:"icon",suffix:t(y,{}),variant:"ghost",onClick:()=>{n("")}}):null]})}var w=N;export{N as a,w as b};
2
- //# sourceMappingURL=chunk-LEHRUJ2L.js.map
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";var _chunkPOJOZ7HMcjs = require('./chunk-POJOZ7HM.cjs');var _chunkOSBDYGS3cjs = require('./chunk-OSBDYGS3.cjs');var _chunkXXUOW3IDcjs = require('./chunk-XXUOW3ID.cjs');var _input = require('@codefast-ui/input'); var o = _interopRequireWildcard(_input);var _lucidereact = require('lucide-react');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var{input:C,root:E}=_chunkPOJOZ7HMcjs.a.call(void 0, );function x({className:a,disabled:s,loaderPosition:m,loading:l,prefix:d,readOnly:u,spinner:f,suffix:e,...c}){let[i,w]=_react.useState.call(void 0, "password"),P=_react.useCallback.call(void 0, ()=>{w(y=>y==="password"?"text":"password")},[]);return _jsxruntime.jsxs.call(void 0, o.Root,{className:E({className:[!e&&"pr-1.5",a]}),"data-slot":"input-password",disabled:s,loaderPosition:m,loading:l,prefix:d,readOnly:u,spinner:f||_jsxruntime.jsx.call(void 0, _chunkXXUOW3IDcjs.a,{}),suffix:e,children:[_jsxruntime.jsx.call(void 0, o.Item,{autoCapitalize:"none",className:C(),"data-slot":"input-password-item",type:i,...c}),_jsxruntime.jsx.call(void 0, _chunkOSBDYGS3cjs.b,{"aria-label":i==="password"?"Show password":"Hide password",className:"focus-visible:not-disabled:bg-input size-7 rounded-full focus-visible:ring-0","data-slot":"input-password-toggle",disabled:s,prefix:i==="password"?_jsxruntime.jsx.call(void 0, _lucidereact.EyeOffIcon,{}):_jsxruntime.jsx.call(void 0, _lucidereact.EyeIcon,{}),size:"icon",variant:"ghost",onClick:P})]})}var O=x;exports.a = x; exports.b = O;
2
- //# sourceMappingURL=chunk-NJZ3TDB6.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-NOJBMCCJ.cjs","../src/components/form.tsx"],"names":["createFormFieldContext","FormFieldProvider","useFormFieldContext","FORM_FIELD_NAME","useFormItem","consumerName","scope","id","useFormItemContext","name","fieldState","getFieldState"],"mappings":"AAAA,ylBAAY,CAAC,wDAAwC,wDCO5C,uDACA,iDACA,8BACA,gDAyEH,+CA1DkB,IAAA,CAAA,CAAA,2BAAA,CAAA,CAIlB,CAACA,WASAC,CAAAA,CAAmBC,CAAmB,CAAA,CAAIF,CAAAA,CAA8CG,8CAAe,CAE9G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CACPC,CAAAA,CACAC,SAaQ,CAAAC,CAAG,CAAA,CAAIC,CAAAA,CAAmBH,CAAAA,GAAmB,CAC/C,EAAE,CAAA,CAAA,CAAA,CAAAI,CAAK,CAAA,CAAIP,CAAAA,CAAoBG,CAAAA,CAAcC,CAAK,IAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,aACyB,CAAA,CAAA,CAAA,CAAA,2CAAAG,CAAM,CAAA,CACjCC,CAAAA,yCAAaC,CAAcF,IAAe,CAEhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CACL,CAAA,CAAA,CAAAF,CAAAA,CACA,CAAA,MACA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,iBAAmB,CAAA,CAAA,sBACnB,EAAA,CAAA,CAAY,CAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-NOJBMCCJ.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { ControllerProps, FieldError, FieldPath, FieldValues } from 'react-hook-form';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useId } from 'react';\nimport { Controller, FormProvider, useFormContext, useFormState } from 'react-hook-form';\n\nimport { Label } from '@/components/label';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Form\n * -------------------------------------------------------------------------- */\n\nconst Form = FormProvider;\n\n/* -----------------------------------------------------------------------------\n * Context: FormField\n * -------------------------------------------------------------------------- */\n\nconst FORM_FIELD_NAME = 'FormField';\n\ntype ScopedProps<P> = P & { __scopeFormField?: Scope };\n\nconst [createFormFieldContext, createFormFieldScope] = createContextScope(FORM_FIELD_NAME);\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName;\n}\n\nconst [FormFieldProvider, useFormFieldContext] = createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME);\n\nfunction useFormItem(\n consumerName: string,\n scope: Scope,\n): {\n formDescriptionId: string;\n formItemId: string;\n formMessageId: string;\n id: string;\n invalid: boolean;\n isDirty: boolean;\n isTouched: boolean;\n isValidating: boolean;\n name: string;\n error?: FieldError;\n} {\n const { id } = useFormItemContext(consumerName, scope);\n const { name } = useFormFieldContext(consumerName, scope);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name });\n const fieldState = getFieldState(name, formState);\n\n return {\n id,\n name,\n formDescriptionId: `form-item-description-${id}`,\n formItemId: `form-item-${id}`,\n formMessageId: `form-item-message-${id}`,\n ...fieldState,\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormField\n * -------------------------------------------------------------------------- */\n\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>): JSX.Element {\n const { __scopeFormField, ...props } = formFieldProps;\n\n return (\n <FormFieldProvider name={props.name} scope={__scopeFormField}>\n <Controller {...props} />\n </FormFieldProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Context: FormItem\n * -------------------------------------------------------------------------- */\n\nconst FORM_ITEM_NAME = 'FormItem';\n\ninterface FormItemContextValue {\n id: string;\n}\n\nconst [FormItemProvider, useFormItemContext] = createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: FormItem\n * -------------------------------------------------------------------------- */\n\nfunction FormItem({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const id = useId();\n\n return (\n <FormItemProvider id={id} scope={__scopeFormField}>\n <div className={cn('grid gap-2', className)} data-slot=\"form-item\" {...props} />\n </FormItemProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormLabel\n * -------------------------------------------------------------------------- */\n\nconst FORM_LABEL_NAME = 'FormLabel';\n\nfunction FormLabel({\n __scopeFormField,\n ...props\n}: ScopedProps<ComponentProps<typeof LabelPrimitive.Root>>): JSX.Element {\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField);\n\n return <Label data-invalid={error ? true : undefined} data-slot=\"form-label\" htmlFor={formItemId} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormControl\n * -------------------------------------------------------------------------- */\n\nconst FORM_CONTROL_NAME = 'FormControl';\n\nfunction FormControl({ __scopeFormField, ...props }: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(FORM_CONTROL_NAME, __scopeFormField);\n\n return (\n <Slot\n aria-describedby={error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId}\n aria-invalid={Boolean(error)}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormDescription\n * -------------------------------------------------------------------------- */\n\nfunction FormDescription({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'p'>>): JSX.Element {\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n\n return (\n <p\n className={cn('text-muted-foreground text-xs', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormMessage\n * -------------------------------------------------------------------------- */\n\nconst FORM_MESSAGE_NAME = 'FormMessage';\n\nfunction FormMessage({ __scopeFormField, children, className, ...props }: ScopedProps<ComponentProps<'p'>>): ReactNode {\n const { formMessageId, error } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n const body = error?.message ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-xs', error?.message ? 'text-destructive font-medium' : 'text-muted-foreground', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { createFormFieldScope, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/utils.ts"],"names":["clsx","twMerge","cn","inputs"],"mappings":"AAEA,OAAS,QAAAA,MAAY,OACrB,OAAS,WAAAC,MAAe,iBAKjB,SAASC,KAAMC,EAA8B,CAClD,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B","sourcesContent":["import type { ClassValue } from 'clsx';\n\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Returns the combined class names from the given inputs.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";var _chunkIDELSFHCcjs = require('./chunk-IDELSFHC.cjs');var _chunkSRP463XHcjs = require('./chunk-SRP463XH.cjs');var _chunk3H3UNZUPcjs = require('./chunk-3H3UNZUP.cjs');var _chunkX5CR4RILcjs = require('./chunk-X5CR4RIL.cjs');var _chunkPOJOZ7HMcjs = require('./chunk-POJOZ7HM.cjs');var _chunkOSBDYGS3cjs = require('./chunk-OSBDYGS3.cjs');var _chunkSMJEDCFPcjs = require('./chunk-SMJEDCFP.cjs');var _hooks = require('@codefast/hooks');var _reactcontext = require('@radix-ui/react-context');var _reactslot = require('@radix-ui/react-slot');var _lucidereact = require('lucide-react');var _react = require('react');var _tailwindvariants = require('tailwind-variants');var _jsxruntime = require('react/jsx-runtime');var L="sidebar_state",V=60*60*24*7,$="16rem",U="18rem",W="3.0625rem",j="b",q="SidebarProvider",[F,h]=_reactcontext.createContext.call(void 0, q);function ge({defaultOpen:t=!0,open:e,onOpenChange:n,className:r,style:i,children:d,...p}){let l=_hooks.useIsMobile.call(void 0, ),[m,u]=_react.useState.call(void 0, !1),[g,z]=_react.useState.call(void 0, t),v=_nullishCoalesce(e, () => (g)),S=_react.useCallback.call(void 0, s=>{let b=typeof s=="function"?s(v):s;n?n(b):z(b),document.cookie=`${L}=${b}; path=/; max-age=${V}`},[n,v]),x=_react.useCallback.call(void 0, ()=>{l?u(s=>!s):S(s=>!s)},[l,S,u]);return _react.useEffect.call(void 0, ()=>{let s=b=>{b.key===j&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),x())};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[x]),_jsxruntime.jsx.call(void 0, F,{isMobile:l,open:v,openMobile:m,setOpen:S,setOpenMobile:u,state:v?"expanded":"collapsed",toggleSidebar:x,children:_jsxruntime.jsx.call(void 0, _chunkIDELSFHCcjs.a,{delayDuration:0,children:_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",r),"data-slot":"sidebar-wrapper",style:{"--sidebar-width":$,"--sidebar-width-icon":W,...i},...p,children:d})})})}var Y="Sidebar";function ve({side:t="left",variant:e="sidebar",collapsible:n="offcanvas",className:r,children:i,...d}){let{isMobile:p,state:l,openMobile:m,setOpenMobile:u}=h(Y);return n==="none"?_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col",r),"data-slot":"sidebar",...d,children:i}):p?_jsxruntime.jsx.call(void 0, _chunk3H3UNZUPcjs.a,{open:m,onOpenChange:u,...d,children:_jsxruntime.jsxs.call(void 0, _chunk3H3UNZUPcjs.c,{className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden","data-mobile":"true","data-sidebar":"sidebar","data-slot":"sidebar",side:t,style:{"--sidebar-width":U},children:[_jsxruntime.jsxs.call(void 0, _chunk3H3UNZUPcjs.d,{className:"sr-only",children:[_jsxruntime.jsx.call(void 0, _chunk3H3UNZUPcjs.g,{children:"Sidebar"}),_jsxruntime.jsx.call(void 0, _chunk3H3UNZUPcjs.h,{children:"Displays the mobile sidebar."})]}),_jsxruntime.jsx.call(void 0, "div",{className:"flex h-full w-full flex-col",children:i})]})}):_jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground group peer hidden md:block",r),"data-collapsible":l==="collapsed"?n:"","data-side":t,"data-slot":"sidebar","data-state":l,"data-variant":e,children:[_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),"data-slot":"sidebar-gap"}),_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex",t==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",r),"data-slot":"sidebar-container",...d,children:_jsxruntime.jsx.call(void 0, "div",{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-sm","data-sidebar":"sidebar","data-slot":"sidebar-inner",children:i})})]})}var Q="SidebarTrigger";function he({className:t,onClick:e,...n}){let{toggleSidebar:r}=h(Q);return _jsxruntime.jsxs.call(void 0, _chunkOSBDYGS3cjs.b,{className:_chunkSMJEDCFPcjs.a.call(void 0, "size-7",t),"data-sidebar":"trigger","data-slot":"sidebar-trigger",size:"icon",variant:"ghost",onClick:i=>{_optionalChain([e, 'optionalCall', _2 => _2(i)]),r()},...n,children:[_jsxruntime.jsx.call(void 0, _lucidereact.PanelLeftIcon,{}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]})}var Z="SidebarRail";function Se({className:t,...e}){let{toggleSidebar:n}=h(Z);return _jsxruntime.jsx.call(void 0, "button",{className:_chunkSMJEDCFPcjs.a.call(void 0, "hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",t),"data-sidebar":"rail","data-slot":"sidebar-rail",title:"Toggle Sidebar",type:"button",onClick:n,...e})}function xe({className:t,...e}){return _jsxruntime.jsx.call(void 0, "main",{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-background relative flex w-full flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",t),"data-slot":"sidebar-inset",...e})}function we({className:t,...e}){return _jsxruntime.jsx.call(void 0, _chunkPOJOZ7HMcjs.b,{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-background h-8 w-full shadow-none",t),"data-sidebar":"input","data-slot":"sidebar-input",...e})}function Ce({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex flex-col gap-2 p-2",t),"data-sidebar":"header","data-slot":"sidebar-header",...e})}function Ee({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex flex-col gap-2 p-2",t),"data-sidebar":"footer","data-slot":"sidebar-footer",...e})}function ye({className:t,...e}){return _jsxruntime.jsx.call(void 0, _chunkSRP463XHcjs.a,{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-sidebar-border mx-2 w-auto",t),"data-sidebar":"separator","data-slot":"sidebar-separator",...e})}function Pe({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),"data-sidebar":"content","data-slot":"sidebar-content",...e})}function Ne({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "relative flex w-full min-w-0 flex-col p-2",t),"data-sidebar":"group","data-slot":"sidebar-group",...e})}function Me({className:t,asChild:e=!1,...n}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-label","data-slot":"sidebar-group-label",...n})}function _e({className:t,asChild:e=!1,...n}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-action","data-slot":"sidebar-group-action",...n})}function Ie({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "w-full text-sm",t),"data-sidebar":"group-content","data-slot":"sidebar-group-content",...e})}function Ae({className:t,...e}){return _jsxruntime.jsx.call(void 0, "ul",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex w-full min-w-0 flex-col gap-1",t),"data-sidebar":"menu","data-slot":"sidebar-menu",...e})}function ke({className:t,...e}){return _jsxruntime.jsx.call(void 0, "li",{className:_chunkSMJEDCFPcjs.a.call(void 0, "group/menu-item relative",t),"data-sidebar":"menu-item","data-slot":"sidebar-menu-item",...e})}var ee=_tailwindvariants.tv.call(void 0, {base:"peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{sm:"h-7 text-xs",md:"h-8 text-sm",lg:"group-data-[collapsible=icon]:p-0! h-12 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),te="SidebarMenuButton";function Xe({asChild:t=!1,isActive:e=!1,variant:n="default",size:r="md",tooltip:i,className:d,...p}){let l=t?_reactslot.Slot:"button",{isMobile:m,state:u}=h(te),g=_jsxruntime.jsx.call(void 0, l,{className:_chunkSMJEDCFPcjs.a.call(void 0, ee({variant:n,size:r}),d),"data-active":e,"data-sidebar":"menu-button","data-size":r,"data-slot":"sidebar-menu-button",...p});return i?(typeof i=="string"&&(i={children:i}),_jsxruntime.jsxs.call(void 0, _chunkIDELSFHCcjs.b,{children:[_jsxruntime.jsx.call(void 0, _chunkIDELSFHCcjs.c,{asChild:!0,children:g}),_jsxruntime.jsx.call(void 0, _chunkIDELSFHCcjs.d,{align:"center",hidden:u!=="collapsed"||m,side:"right",...i})]})):g}function De({className:t,asChild:e=!1,showOnHover:n=!1,...r}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",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",t),"data-sidebar":"menu-action","data-slot":"sidebar-menu-action",...r})}function Je({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1",t),"data-sidebar":"menu-badge","data-slot":"sidebar-menu-badge",...e})}function Te({className:t,showIcon:e=!1,...n}){let r=_react.useMemo.call(void 0, ()=>`${Math.floor(Math.random()*40)+50}%`,[]);return _jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex h-8 items-center gap-2 rounded-md px-2",t),"data-sidebar":"menu-skeleton","data-slot":"sidebar-menu-skeleton",...n,children:[e?_jsxruntime.jsx.call(void 0, _chunkX5CR4RILcjs.a,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}):null,_jsxruntime.jsx.call(void 0, _chunkX5CR4RILcjs.a,{className:"max-w-(--skeleton-width) h-4 flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":r}})]})}function ze({className:t,...e}){return _jsxruntime.jsx.call(void 0, "ul",{className:_chunkSMJEDCFPcjs.a.call(void 0, "border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",t),"data-sidebar":"menu-sub","data-slot":"sidebar-menu-sub",...e})}function Be({className:t,...e}){return _jsxruntime.jsx.call(void 0, "li",{className:_chunkSMJEDCFPcjs.a.call(void 0, "group/menu-sub-item relative",t),"data-sidebar":"menu-sub-item","data-slot":"sidebar-menu-sub-item",...e})}function Oe({asChild:t=!1,size:e="md",isActive:n=!1,className:r,...i}){return _jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"a",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",r),"data-active":n,"data-sidebar":"menu-sub-button","data-size":e,"data-slot":"sidebar-menu-sub-button",...i})}exports.a = h; exports.b = ge; exports.c = ve; exports.d = he; exports.e = Se; exports.f = xe; exports.g = we; exports.h = Ce; exports.i = Ee; exports.j = ye; exports.k = Pe; exports.l = Ne; exports.m = Me; exports.n = _e; exports.o = Ie; exports.p = Ae; exports.q = ke; exports.r = Xe; exports.s = De; exports.t = Je; exports.u = Te; exports.v = ze; exports.w = Be; exports.x = Oe;
2
- //# sourceMappingURL=chunk-P5KMECT7.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-P5KMECT7.cjs","../src/components/sidebar.tsx"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_KEYBOARD_SHORTCUT","SidebarProvider","defaultOpen","setOpenProp","className","children","isMobile","useIsMobile","openMobile","setOpenMobile","useState","isOpen","setIsOpen","open","openProp","setOpen","useCallback","value","openState"],"mappings":"AAAA,6rBAAY,CAAC,wDAA6D,wDAAyC,wDAAqE,wDAAyC,wDAAyC,wDAAyC,wDCK1S,wCACA,uDACA,iDACA,2CACA,8BACA,qDAmHD,+CAzGoB,IAAA,CAAA,CAAA,eACkB,CACxCA,CAAAA,CAAgB,EAAA,CAAA,EAAA,CAAA,EAChBC,CAAAA,CAAuB,CAAA,CAAA,CAAA,OACF,CAAA,CAAA,CAAA,OAAA,CAAA,CACrBC,CAAAA,WAgBwB,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,iBAQ9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,yCAASC,CAAAA,CAAgB,CACvB,SAAA,EAAA,CAAAC,CAAAA,WAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAcC,YACdC,CAAAA,CACA,CAAA,SACA,CAAA,CAAA,CAAA,KAAAC,CACA,CAAA,CAAA,QAMA,CAAMC,CAAAA,CAAWC,GAAY,CACvB,CAACC,CAAAA,CAAYC,IAAiBC,CAAS,CAAA,gCAAK,CAI5C,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIF,CAAAA,6BAASR,CAAW,CAC1CW,CAAAA,CAAOC,CAAAA,CAAAA,CAAYH,CAAAA,CACnBI,CAAAA,6BAAUC,CACbC,CAAAA,CAAAA,CAAmD,kBAClD,CAAA,SAAA,GAAMC,CAAAA,CAAY,CAAA,gCAAA,CAAA,EAAA,CAAOD,IAAU,CAAA,CAAA,OAAA,CAAaA,EAAMJ,UAG/B,CAAA,CAErBD,CAAAA,CAAUM,CAAS,CAAA,CAIrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,QAA+B,CAAA,MAAa,CAAA,CAAA,EAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-P5KMECT7.cjs","sourcesContent":[null,"'use client';\n\nimport type { ComponentProps, CSSProperties, Dispatch, JSX, SetStateAction } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { useIsMobile } from '@codefast/hooks';\nimport { createContext } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeftIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/tooltip';\nimport { cn } from '@/lib/utils';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3.0625rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ninterface SidebarContextProps {\n isMobile: boolean;\n open: boolean;\n openMobile: boolean;\n setOpen: (open: boolean) => void;\n setOpenMobile: Dispatch<SetStateAction<boolean>>;\n state: 'collapsed' | 'expanded';\n toggleSidebar: () => void;\n}\n\n/* -----------------------------------------------------------------------------\n * Context: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_PROVIDER_NAME = 'SidebarProvider';\n\nconst [SidebarProviderProvider, useSidebar] = createContext<SidebarContextProps>(SIDEBAR_PROVIDER_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ComponentProps<'div'> & {\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n}): JSX.Element {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = 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 const [isOpen, setIsOpen] = useState(defaultOpen);\n const open = openProp ?? isOpen;\n const setOpen = useCallback(\n (value: ((value: boolean) => boolean) | boolean) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n setIsOpen(openState);\n }\n\n // eslint-disable-next-line unicorn/no-document-cookie -- This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((currentValue) => !currentValue);\n } else {\n setOpen((currentValue) => !currentValue);\n }\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [toggleSidebar]);\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 return (\n <SidebarProviderProvider\n isMobile={isMobile}\n open={open}\n openMobile={openMobile}\n setOpen={setOpen}\n setOpenMobile={setOpenMobile}\n state={state}\n toggleSidebar={toggleSidebar}\n >\n <TooltipProvider delayDuration={0}>\n <div\n className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className)}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarProviderProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Sidebar\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_NAME = 'Sidebar';\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: ComponentProps<'div'> & {\n collapsible?: 'icon' | 'none' | 'offcanvas';\n side?: 'left' | 'right';\n variant?: 'floating' | 'inset' | 'sidebar';\n}): JSX.Element {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar(SIDEBAR_NAME);\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col', className)}\n data-slot=\"sidebar\"\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className={cn('text-sidebar-foreground group peer hidden md:block', className)}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n 'w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear 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-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\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-sm\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarTrigger\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_TRIGGER_NAME = 'SidebarTrigger';\n\nfunction SidebarTrigger({ className, onClick, ...props }: ComponentProps<typeof Button>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);\n\n return (\n <Button\n className={cn('size-7', className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarRail\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_RAIL_NAME = 'SidebarRail';\n\nfunction SidebarRail({ className, ...props }: ComponentProps<'button'>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);\n\n return (\n <button\n className={cn(\n 'hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n title=\"Toggle Sidebar\"\n type=\"button\"\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInset\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInset({ className, ...props }: ComponentProps<'main'>): JSX.Element {\n return (\n <main\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInput\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInput({ className, ...props }: ComponentProps<typeof Input>): JSX.Element {\n return (\n <Input\n className={cn('bg-background h-8 w-full shadow-none', className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarHeader\n * -------------------------------------------------------------------------- */\n\nfunction SidebarHeader({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarFooter\n * -------------------------------------------------------------------------- */\n\nfunction SidebarFooter({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarSeparator\n * -------------------------------------------------------------------------- */\n\nfunction SidebarSeparator({ className, ...props }: ComponentProps<typeof Separator>): JSX.Element {\n return (\n <Separator\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroup\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroup({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupLabel\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-label\"\n data-slot=\"sidebar-group-label\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-action\"\n data-slot=\"sidebar-group-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('w-full text-sm', className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenu\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenu({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-item relative', className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Variant: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n sm: 'h-7 text-xs',\n md: 'h-8 text-sm',\n lg: 'group-data-[collapsible=icon]:p-0! h-12 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_MENU_BUTTON_NAME = 'SidebarMenuButton';\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'md',\n tooltip,\n className,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof sidebarMenuButtonVariants> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: ComponentProps<typeof TooltipContent> | string;\n }): JSX.Element {\n const Component = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);\n\n const button = (\n <Component\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-slot=\"sidebar-menu-button\"\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n // eslint-disable-next-line no-param-reassign -- convert it to an object with default properties\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent align=\"center\" hidden={state !== 'collapsed' || isMobile} side=\"right\" {...tooltip} />\n </Tooltip>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\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 data-sidebar=\"menu-action\"\n data-slot=\"sidebar-menu-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuBadge\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuBadge({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1',\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSkeleton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: ComponentProps<'div'> & {\n showIcon?: boolean;\n}): JSX.Element {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon ? <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" /> : null}\n <Skeleton\n className=\"max-w-(--skeleton-width) h-4 flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as CSSProperties\n }\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSub\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSub({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-sub-item relative', className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubButton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: ComponentProps<'a'> & {\n asChild?: boolean;\n isActive?: boolean;\n size?: 'md' | 'sm';\n}): JSX.Element {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-active={isActive}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-slot=\"sidebar-menu-sub-button\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\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 +0,0 @@
1
- {"version":3,"sources":["../src/lib/utils.ts"],"names":["cn","inputs","twMerge","clsx"],"mappings":"AAEA,qGAAqB,+CACG,SAKRA,CAAAA,CAAAA,GAAMC,CAAAA,CAA8B,CAClD,OAAOC,oCAAAA,wBAAQC,CAAW,CAAC,CAC7B,CAAA,cAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-SMJEDCFP.cjs","sourcesContent":["import type { ClassValue } from 'clsx';\n\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Returns the combined class names from the given inputs.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"]}
@@ -1,2 +0,0 @@
1
- import{a as n}from"./chunk-B74UCONC.js";import{a as i}from"./chunk-3E3ZQIUX.js";import{a as o}from"./chunk-FR7P352M.js";import{a as e}from"./chunk-OKUFCFYT.js";import*as t from"@codefast-ui/input-number";import{ChevronDownIcon as V,ChevronUpIcon as D}from"lucide-react";import{jsx as r,jsxs as a}from"react/jsx-runtime";var{input:B,root:k}=n();function R({id:u,ariaDecrementLabel:s,ariaIncrementLabel:d,className:m,defaultValue:p,disabled:l,formatOptions:b,loaderPosition:c,loading:v,max:f,min:g,onChange:h,prefix:I,readOnly:N,spinner:P,step:C,suffix:w,value:x,...y}){return a(t.Root,{ariaDecrementLabel:s,ariaIncrementLabel:d,className:k({className:["group pr-0",m]}),"data-slot":"input-number",defaultValue:p,disabled:l,formatOptions:b,id:u,loaderPosition:c,loading:v,max:f,min:g,prefix:I,readOnly:N,spinner:P||r(o,{}),step:C,suffix:w,value:x,onChange:h,children:[r(t.Item,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",className:B(),spellCheck:"false",...y}),a("div",{className:e("divide-input border-l-input group-hover:not-group-focus-within:not-has-disabled:border-l-border-ring/60 group-hover:not-group-focus-within:not-has-disabled:divide-border-ring/60 group-focus-within:border-l-ring group-focus-within:divide-ring group-has-aria-invalid:border-l-destructive group-has-aria-invalid:divide-destructive group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:border-l-destructive/60 group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:divide-destructive/60 order-last ml-auto grid h-full shrink-0 divide-y border-l transition","*:[button]:focus-visible:ring-0 *:[button]:focus-visible:bg-ring/50 group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/20 dark:group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/40"),"data-slot":"input-number-buttons",children:[r(t.IncrementButton,{"aria-label":"Increment",className:i({className:"text-muted-foreground h-auto rounded-none rounded-tr-[calc(var(--radius-lg)-1px)]",variant:"ghost"}),"data-slot":"input-number-increment-button",children:r(D,{})}),r(t.DecrementButton,{"aria-label":"Decrement",className:i({className:"text-muted-foreground h-auto rounded-none rounded-br-[calc(var(--radius-lg)-1px)]",variant:"ghost"}),"data-slot":"input-number-decrement-button",children:r(V,{})})]})]})}var z=R;export{R as a,z as b};
2
- //# sourceMappingURL=chunk-W22VAO5F.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/input-number.tsx"],"names":["InputNumberPrimitive","ChevronDownIcon","ChevronUpIcon","jsx","jsxs","input","root","inputVariants","InputNumber","id","ariaDecrementLabel","ariaIncrementLabel","className","defaultValue","disabled","formatOptions","loaderPosition","loading","max","min","onChange","prefix","readOnly","spinner","step","suffix","value","props","Spinner","cn","buttonVariants","NumberInput"],"mappings":"gKAGA,UAAYA,MAA0B,4BACtC,OAAS,mBAAAC,EAAiB,iBAAAC,MAAqB,eAoDrB,cAAAC,EAcpB,QAAAC,MAdoB,oBA7C1B,GAAM,CAAE,MAAAC,EAAO,KAAAC,CAAK,EAAIC,EAAc,EAMtC,SAASC,EAAY,CACnB,GAAAC,EACA,mBAAAC,EACA,mBAAAC,EACA,UAAAC,EACA,aAAAC,EACA,SAAAC,EACA,cAAAC,EACA,eAAAC,EACA,QAAAC,EACA,IAAAC,EACA,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,KAAAC,EACA,OAAAC,EACA,MAAAC,EACA,GAAGC,CACL,EAEmD,CACjD,OACEvB,EAAsB,OAArB,CACC,mBAAoBM,EACpB,mBAAoBC,EACpB,UAAWL,EAAK,CAAE,UAAW,CAAC,aAAcM,CAAS,CAAE,CAAC,EACxD,YAAU,eACV,aAAcC,EACd,SAAUC,EACV,cAAeC,EACf,GAAIN,EACJ,eAAgBO,EAChB,QAASC,EACT,IAAKC,EACL,IAAKC,EACL,OAAQE,EACR,SAAUC,EACV,QAASC,GAAWpB,EAACyB,EAAA,EAAQ,EAC7B,KAAMJ,EACN,OAAQC,EACR,MAAOC,EACP,SAAUN,EAEV,UAAAjB,EAAsB,OAArB,CACC,eAAe,OACf,aAAa,MACb,YAAY,MACZ,UAAWE,EAAM,EACjB,WAAW,QACV,GAAGsB,EACN,EACAvB,EAAC,OACC,UAAWyB,EACT,mlBACA,8MACF,EACA,YAAU,uBAEV,UAAA1B,EAAsB,kBAArB,CACC,aAAW,YACX,UAAW2B,EAAe,CACxB,UAAW,oFACX,QAAS,OACX,CAAC,EACD,YAAU,gCAEV,SAAA3B,EAACD,EAAA,EAAc,EACjB,EACAC,EAAsB,kBAArB,CACC,aAAW,YACX,UAAW2B,EAAe,CACxB,UAAW,oFACX,QAAS,OACX,CAAC,EACD,YAAU,gCAEV,SAAA3B,EAACF,EAAA,EAAgB,EACnB,GACF,GACF,CAEJ,CAWA,IAAM8B,EAAcvB","sourcesContent":["import type { ComponentProps, JSX } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport * as InputNumberPrimitive from '@codefast-ui/input-number';\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { buttonVariants } from '@/components/button';\nimport { inputVariants } from '@/components/input';\nimport { Spinner } from '@/components/spinner';\nimport { cn } from '@/lib/utils';\n\nconst { input, root } = inputVariants();\n\n/* -----------------------------------------------------------------------------\n * Component: InputNumber\n * -------------------------------------------------------------------------- */\n\nfunction InputNumber({\n id,\n ariaDecrementLabel,\n ariaIncrementLabel,\n className,\n defaultValue,\n disabled,\n formatOptions,\n loaderPosition,\n loading,\n max,\n min,\n onChange,\n prefix,\n readOnly,\n spinner,\n step,\n suffix,\n value,\n ...props\n}: ComponentProps<typeof InputNumberPrimitive.Item> &\n ComponentProps<typeof InputNumberPrimitive.Root> &\n VariantProps<typeof inputVariants>): JSX.Element {\n return (\n <InputNumberPrimitive.Root\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n className={root({ className: ['group pr-0', className] })}\n data-slot=\"input-number\"\n defaultValue={defaultValue}\n disabled={disabled}\n formatOptions={formatOptions}\n id={id}\n loaderPosition={loaderPosition}\n loading={loading}\n max={max}\n min={min}\n prefix={prefix}\n readOnly={readOnly}\n spinner={spinner || <Spinner />}\n step={step}\n suffix={suffix}\n value={value}\n onChange={onChange}\n >\n <InputNumberPrimitive.Item\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n className={input()}\n spellCheck=\"false\"\n {...props}\n />\n <div\n className={cn(\n 'divide-input border-l-input group-hover:not-group-focus-within:not-has-disabled:border-l-border-ring/60 group-hover:not-group-focus-within:not-has-disabled:divide-border-ring/60 group-focus-within:border-l-ring group-focus-within:divide-ring group-has-aria-invalid:border-l-destructive group-has-aria-invalid:divide-destructive group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:border-l-destructive/60 group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:divide-destructive/60 order-last ml-auto grid h-full shrink-0 divide-y border-l transition',\n '*:[button]:focus-visible:ring-0 *:[button]:focus-visible:bg-ring/50 group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/20 dark:group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/40',\n )}\n data-slot=\"input-number-buttons\"\n >\n <InputNumberPrimitive.IncrementButton\n aria-label=\"Increment\"\n className={buttonVariants({\n className: 'text-muted-foreground h-auto rounded-none rounded-tr-[calc(var(--radius-lg)-1px)]',\n variant: 'ghost',\n })}\n data-slot=\"input-number-increment-button\"\n >\n <ChevronUpIcon />\n </InputNumberPrimitive.IncrementButton>\n <InputNumberPrimitive.DecrementButton\n aria-label=\"Decrement\"\n className={buttonVariants({\n className: 'text-muted-foreground h-auto rounded-none rounded-br-[calc(var(--radius-lg)-1px)]',\n variant: 'ghost',\n })}\n data-slot=\"input-number-decrement-button\"\n >\n <ChevronDownIcon />\n </InputNumberPrimitive.DecrementButton>\n </div>\n </InputNumberPrimitive.Root>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Deprecated\n * -------------------------------------------------------------------------- */\n\n/**\n * @deprecated\n * This component is an alias of the Input component.\n * Please use the Input component instead to ensure consistency.\n */\nconst NumberInput = InputNumber;\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { InputNumber, NumberInput };\n"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkPOJOZ7HMcjs = require('./chunk-POJOZ7HM.cjs');var _chunkOSBDYGS3cjs = require('./chunk-OSBDYGS3.cjs');var _chunkXXUOW3IDcjs = require('./chunk-XXUOW3ID.cjs');var _chunkSMJEDCFPcjs = require('./chunk-SMJEDCFP.cjs');var _inputnumber = require('@codefast-ui/input-number'); var t = _interopRequireWildcard(_inputnumber);var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var{input:B,root:k}=_chunkPOJOZ7HMcjs.a.call(void 0, );function R({id:u,ariaDecrementLabel:s,ariaIncrementLabel:d,className:m,defaultValue:p,disabled:l,formatOptions:b,loaderPosition:c,loading:v,max:f,min:g,onChange:h,prefix:I,readOnly:N,spinner:P,step:C,suffix:w,value:x,...y}){return _jsxruntime.jsxs.call(void 0, t.Root,{ariaDecrementLabel:s,ariaIncrementLabel:d,className:k({className:["group pr-0",m]}),"data-slot":"input-number",defaultValue:p,disabled:l,formatOptions:b,id:u,loaderPosition:c,loading:v,max:f,min:g,prefix:I,readOnly:N,spinner:P||_jsxruntime.jsx.call(void 0, _chunkXXUOW3IDcjs.a,{}),step:C,suffix:w,value:x,onChange:h,children:[_jsxruntime.jsx.call(void 0, t.Item,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",className:B(),spellCheck:"false",...y}),_jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "divide-input border-l-input group-hover:not-group-focus-within:not-has-disabled:border-l-border-ring/60 group-hover:not-group-focus-within:not-has-disabled:divide-border-ring/60 group-focus-within:border-l-ring group-focus-within:divide-ring group-has-aria-invalid:border-l-destructive group-has-aria-invalid:divide-destructive group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:border-l-destructive/60 group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:divide-destructive/60 order-last ml-auto grid h-full shrink-0 divide-y border-l transition","*:[button]:focus-visible:ring-0 *:[button]:focus-visible:bg-ring/50 group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/20 dark:group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/40"),"data-slot":"input-number-buttons",children:[_jsxruntime.jsx.call(void 0, t.IncrementButton,{"aria-label":"Increment",className:_chunkOSBDYGS3cjs.a.call(void 0, {className:"text-muted-foreground h-auto rounded-none rounded-tr-[calc(var(--radius-lg)-1px)]",variant:"ghost"}),"data-slot":"input-number-increment-button",children:_jsxruntime.jsx.call(void 0, _lucidereact.ChevronUpIcon,{})}),_jsxruntime.jsx.call(void 0, t.DecrementButton,{"aria-label":"Decrement",className:_chunkOSBDYGS3cjs.a.call(void 0, {className:"text-muted-foreground h-auto rounded-none rounded-br-[calc(var(--radius-lg)-1px)]",variant:"ghost"}),"data-slot":"input-number-decrement-button",children:_jsxruntime.jsx.call(void 0, _lucidereact.ChevronDownIcon,{})})]})]})}var z=R;exports.a = R; exports.b = z;
2
- //# sourceMappingURL=chunk-XRB4CGMN.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-XRB4CGMN.cjs","../src/components/input-number.tsx"],"names":["input","root","inputVariants","InputNumber","id","ariaDecrementLabel","ariaIncrementLabel","className","defaultValue","disabled","formatOptions","loaderPosition","loading","max","min","onChange","prefix","readOnly","spinner","step","suffix","value","props","jsxs","jsx","Spinner","cn","buttonVariants","ChevronUpIcon","ChevronDownIcon","NumberInput"],"mappings":"AAAA,mZAAwC,wDAAyC,wDAAyC,wDAAyC,uGCG7H,2CACS,+CAoDrB,GA7CpB,CAAE,KAAA,CAAAA,CAAAA,CAAO,IAAA,CAAAC,CAAK,CAAA,CAAIC,iCAAAA,CAAc,CAMtC,SAASC,CAAAA,CAAY,CACnB,EAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,kBAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAEmD,CACjD,OACEC,8BAAAA,CAAsB,CAAA,IAAA,CAArB,CACC,kBAAA,CAAoBlB,CAAAA,CACpB,kBAAA,CAAoBC,CAAAA,CACpB,SAAA,CAAWL,CAAAA,CAAK,CAAE,SAAA,CAAW,CAAC,YAAA,CAAcM,CAAS,CAAE,CAAC,CAAA,CACxD,WAAA,CAAU,cAAA,CACV,YAAA,CAAcC,CAAAA,CACd,QAAA,CAAUC,CAAAA,CACV,aAAA,CAAeC,CAAAA,CACf,EAAA,CAAIN,CAAAA,CACJ,cAAA,CAAgBO,CAAAA,CAChB,OAAA,CAASC,CAAAA,CACT,GAAA,CAAKC,CAAAA,CACL,GAAA,CAAKC,CAAAA,CACL,MAAA,CAAQE,CAAAA,CACR,QAAA,CAAUC,CAAAA,CACV,OAAA,CAASC,CAAAA,EAAWM,6BAAAA,mBAACC,CAAA,CAAA,CAAQ,CAAA,CAC7B,IAAA,CAAMN,CAAAA,CACN,MAAA,CAAQC,CAAAA,CACR,KAAA,CAAOC,CAAAA,CACP,QAAA,CAAUN,CAAAA,CAEV,QAAA,CAAA,CAAAS,6BAAAA,CAAsB,CAAA,IAAA,CAArB,CACC,cAAA,CAAe,MAAA,CACf,YAAA,CAAa,KAAA,CACb,WAAA,CAAY,KAAA,CACZ,SAAA,CAAWxB,CAAAA,CAAM,CAAA,CACjB,UAAA,CAAW,OAAA,CACV,GAAGsB,CAAAA,CACN,CAAA,CACAC,8BAAAA,KAAC,CAAA,CACC,SAAA,CAAWG,iCAAAA,klBACT,CACA,8MACF,CAAA,CACA,WAAA,CAAU,sBAAA,CAEV,QAAA,CAAA,CAAAF,6BAAAA,CAAsB,CAAA,eAAA,CAArB,CACC,YAAA,CAAW,WAAA,CACX,SAAA,CAAWG,iCAAAA,CACT,SAAA,CAAW,mFAAA,CACX,OAAA,CAAS,OACX,CAAC,CAAA,CACD,WAAA,CAAU,+BAAA,CAEV,QAAA,CAAAH,6BAAAA,0BAACI,CAAA,CAAA,CAAc,CAAA,CACjB,CAAA,CACAJ,6BAAAA,CAAsB,CAAA,eAAA,CAArB,CACC,YAAA,CAAW,WAAA,CACX,SAAA,CAAWG,iCAAAA,CACT,SAAA,CAAW,mFAAA,CACX,OAAA,CAAS,OACX,CAAC,CAAA,CACD,WAAA,CAAU,+BAAA,CAEV,QAAA,CAAAH,6BAAAA,4BAACK,CAAA,CAAA,CAAgB,CAAA,CACnB,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAWA,IAAMC,CAAAA,CAAc3B,CAAAA,CAAAA,6BAAAA","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-XRB4CGMN.cjs","sourcesContent":[null,"import type { ComponentProps, JSX } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport * as InputNumberPrimitive from '@codefast-ui/input-number';\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { buttonVariants } from '@/components/button';\nimport { inputVariants } from '@/components/input';\nimport { Spinner } from '@/components/spinner';\nimport { cn } from '@/lib/utils';\n\nconst { input, root } = inputVariants();\n\n/* -----------------------------------------------------------------------------\n * Component: InputNumber\n * -------------------------------------------------------------------------- */\n\nfunction InputNumber({\n id,\n ariaDecrementLabel,\n ariaIncrementLabel,\n className,\n defaultValue,\n disabled,\n formatOptions,\n loaderPosition,\n loading,\n max,\n min,\n onChange,\n prefix,\n readOnly,\n spinner,\n step,\n suffix,\n value,\n ...props\n}: ComponentProps<typeof InputNumberPrimitive.Item> &\n ComponentProps<typeof InputNumberPrimitive.Root> &\n VariantProps<typeof inputVariants>): JSX.Element {\n return (\n <InputNumberPrimitive.Root\n ariaDecrementLabel={ariaDecrementLabel}\n ariaIncrementLabel={ariaIncrementLabel}\n className={root({ className: ['group pr-0', className] })}\n data-slot=\"input-number\"\n defaultValue={defaultValue}\n disabled={disabled}\n formatOptions={formatOptions}\n id={id}\n loaderPosition={loaderPosition}\n loading={loading}\n max={max}\n min={min}\n prefix={prefix}\n readOnly={readOnly}\n spinner={spinner || <Spinner />}\n step={step}\n suffix={suffix}\n value={value}\n onChange={onChange}\n >\n <InputNumberPrimitive.Item\n autoCapitalize=\"none\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n className={input()}\n spellCheck=\"false\"\n {...props}\n />\n <div\n className={cn(\n 'divide-input border-l-input group-hover:not-group-focus-within:not-has-disabled:border-l-border-ring/60 group-hover:not-group-focus-within:not-has-disabled:divide-border-ring/60 group-focus-within:border-l-ring group-focus-within:divide-ring group-has-aria-invalid:border-l-destructive group-has-aria-invalid:divide-destructive group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:border-l-destructive/60 group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:divide-destructive/60 order-last ml-auto grid h-full shrink-0 divide-y border-l transition',\n '*:[button]:focus-visible:ring-0 *:[button]:focus-visible:bg-ring/50 group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/20 dark:group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/40',\n )}\n data-slot=\"input-number-buttons\"\n >\n <InputNumberPrimitive.IncrementButton\n aria-label=\"Increment\"\n className={buttonVariants({\n className: 'text-muted-foreground h-auto rounded-none rounded-tr-[calc(var(--radius-lg)-1px)]',\n variant: 'ghost',\n })}\n data-slot=\"input-number-increment-button\"\n >\n <ChevronUpIcon />\n </InputNumberPrimitive.IncrementButton>\n <InputNumberPrimitive.DecrementButton\n aria-label=\"Decrement\"\n className={buttonVariants({\n className: 'text-muted-foreground h-auto rounded-none rounded-br-[calc(var(--radius-lg)-1px)]',\n variant: 'ghost',\n })}\n data-slot=\"input-number-decrement-button\"\n >\n <ChevronDownIcon />\n </InputNumberPrimitive.DecrementButton>\n </div>\n </InputNumberPrimitive.Root>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Deprecated\n * -------------------------------------------------------------------------- */\n\n/**\n * @deprecated\n * This component is an alias of the Input component.\n * Please use the Input component instead to ensure consistency.\n */\nconst NumberInput = InputNumber;\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { InputNumber, NumberInput };\n"]}