@alexourus/ui 0.3.0

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 (390) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/blocks/auth-card/index.js +18 -0
  4. package/dist/blocks/auth-card/index.js.map +1 -0
  5. package/dist/blocks/auth-card/index.mjs +9 -0
  6. package/dist/blocks/auth-card/index.mjs.map +1 -0
  7. package/dist/blocks/data-table/index.js +18 -0
  8. package/dist/blocks/data-table/index.js.map +1 -0
  9. package/dist/blocks/data-table/index.mjs +9 -0
  10. package/dist/blocks/data-table/index.mjs.map +1 -0
  11. package/dist/blocks/file-uploader/index.js +15 -0
  12. package/dist/blocks/file-uploader/index.js.map +1 -0
  13. package/dist/blocks/file-uploader/index.mjs +6 -0
  14. package/dist/blocks/file-uploader/index.mjs.map +1 -0
  15. package/dist/blocks/multi-step-form/index.js +15 -0
  16. package/dist/blocks/multi-step-form/index.js.map +1 -0
  17. package/dist/blocks/multi-step-form/index.mjs +6 -0
  18. package/dist/blocks/multi-step-form/index.mjs.map +1 -0
  19. package/dist/blocks/pricing-table/index.js +15 -0
  20. package/dist/blocks/pricing-table/index.js.map +1 -0
  21. package/dist/blocks/pricing-table/index.mjs +6 -0
  22. package/dist/blocks/pricing-table/index.mjs.map +1 -0
  23. package/dist/chunk-2BLJWXAJ.mjs +110 -0
  24. package/dist/chunk-2BLJWXAJ.mjs.map +1 -0
  25. package/dist/chunk-2QRV5XCH.js +78 -0
  26. package/dist/chunk-2QRV5XCH.js.map +1 -0
  27. package/dist/chunk-3FUEELO3.js +130 -0
  28. package/dist/chunk-3FUEELO3.js.map +1 -0
  29. package/dist/chunk-3IAWZE7E.mjs +39 -0
  30. package/dist/chunk-3IAWZE7E.mjs.map +1 -0
  31. package/dist/chunk-3IJ4QXSI.mjs +82 -0
  32. package/dist/chunk-3IJ4QXSI.mjs.map +1 -0
  33. package/dist/chunk-3LR5YBIX.mjs +102 -0
  34. package/dist/chunk-3LR5YBIX.mjs.map +1 -0
  35. package/dist/chunk-3R4A2OYV.mjs +26 -0
  36. package/dist/chunk-3R4A2OYV.mjs.map +1 -0
  37. package/dist/chunk-3XLPO2PK.js +131 -0
  38. package/dist/chunk-3XLPO2PK.js.map +1 -0
  39. package/dist/chunk-4GZIE7L2.mjs +66 -0
  40. package/dist/chunk-4GZIE7L2.mjs.map +1 -0
  41. package/dist/chunk-4WGKKRGQ.js +58 -0
  42. package/dist/chunk-4WGKKRGQ.js.map +1 -0
  43. package/dist/chunk-54E7ZIOD.js +44 -0
  44. package/dist/chunk-54E7ZIOD.js.map +1 -0
  45. package/dist/chunk-5BRZEWFO.js +217 -0
  46. package/dist/chunk-5BRZEWFO.js.map +1 -0
  47. package/dist/chunk-5P3UZGSO.js +52 -0
  48. package/dist/chunk-5P3UZGSO.js.map +1 -0
  49. package/dist/chunk-6KHFGJKO.mjs +53 -0
  50. package/dist/chunk-6KHFGJKO.mjs.map +1 -0
  51. package/dist/chunk-6PZRZJKB.mjs +45 -0
  52. package/dist/chunk-6PZRZJKB.mjs.map +1 -0
  53. package/dist/chunk-A6OU42MS.js +140 -0
  54. package/dist/chunk-A6OU42MS.js.map +1 -0
  55. package/dist/chunk-AHSY7OBX.mjs +39 -0
  56. package/dist/chunk-AHSY7OBX.mjs.map +1 -0
  57. package/dist/chunk-AJKFRN2S.js +75 -0
  58. package/dist/chunk-AJKFRN2S.js.map +1 -0
  59. package/dist/chunk-ATUA2ZTW.mjs +43 -0
  60. package/dist/chunk-ATUA2ZTW.mjs.map +1 -0
  61. package/dist/chunk-AXKXHRRM.js +150 -0
  62. package/dist/chunk-AXKXHRRM.js.map +1 -0
  63. package/dist/chunk-BCOH5AWH.js +239 -0
  64. package/dist/chunk-BCOH5AWH.js.map +1 -0
  65. package/dist/chunk-BECAUVI4.js +132 -0
  66. package/dist/chunk-BECAUVI4.js.map +1 -0
  67. package/dist/chunk-BJFWJ3O6.mjs +139 -0
  68. package/dist/chunk-BJFWJ3O6.mjs.map +1 -0
  69. package/dist/chunk-BQCV4CHV.js +63 -0
  70. package/dist/chunk-BQCV4CHV.js.map +1 -0
  71. package/dist/chunk-C3X2BPC5.js +57 -0
  72. package/dist/chunk-C3X2BPC5.js.map +1 -0
  73. package/dist/chunk-C6KCRF6W.mjs +141 -0
  74. package/dist/chunk-C6KCRF6W.mjs.map +1 -0
  75. package/dist/chunk-CFTQ6A44.mjs +24 -0
  76. package/dist/chunk-CFTQ6A44.mjs.map +1 -0
  77. package/dist/chunk-CRTXVH5I.js +12 -0
  78. package/dist/chunk-CRTXVH5I.js.map +1 -0
  79. package/dist/chunk-CZKZFK42.js +50 -0
  80. package/dist/chunk-CZKZFK42.js.map +1 -0
  81. package/dist/chunk-DI7TZO47.mjs +120 -0
  82. package/dist/chunk-DI7TZO47.mjs.map +1 -0
  83. package/dist/chunk-E6O3PZJA.js +93 -0
  84. package/dist/chunk-E6O3PZJA.js.map +1 -0
  85. package/dist/chunk-EM54ZGHI.mjs +119 -0
  86. package/dist/chunk-EM54ZGHI.mjs.map +1 -0
  87. package/dist/chunk-F4EWY4M3.js +178 -0
  88. package/dist/chunk-F4EWY4M3.js.map +1 -0
  89. package/dist/chunk-F7UKMYHB.js +234 -0
  90. package/dist/chunk-F7UKMYHB.js.map +1 -0
  91. package/dist/chunk-FI5NDGRB.mjs +29 -0
  92. package/dist/chunk-FI5NDGRB.mjs.map +1 -0
  93. package/dist/chunk-FPNCCKUP.js +68 -0
  94. package/dist/chunk-FPNCCKUP.js.map +1 -0
  95. package/dist/chunk-G5KWMZYM.js +34 -0
  96. package/dist/chunk-G5KWMZYM.js.map +1 -0
  97. package/dist/chunk-G7OTO5NV.mjs +102 -0
  98. package/dist/chunk-G7OTO5NV.mjs.map +1 -0
  99. package/dist/chunk-HWBQPIV7.mjs +102 -0
  100. package/dist/chunk-HWBQPIV7.mjs.map +1 -0
  101. package/dist/chunk-I2W2I3R4.mjs +52 -0
  102. package/dist/chunk-I2W2I3R4.mjs.map +1 -0
  103. package/dist/chunk-I74ENMAV.mjs +28 -0
  104. package/dist/chunk-I74ENMAV.mjs.map +1 -0
  105. package/dist/chunk-IRDRXL2V.js +104 -0
  106. package/dist/chunk-IRDRXL2V.js.map +1 -0
  107. package/dist/chunk-J4GNMOED.mjs +209 -0
  108. package/dist/chunk-J4GNMOED.mjs.map +1 -0
  109. package/dist/chunk-JE5NGXPK.js +76 -0
  110. package/dist/chunk-JE5NGXPK.js.map +1 -0
  111. package/dist/chunk-JJXQE6T2.js +48 -0
  112. package/dist/chunk-JJXQE6T2.js.map +1 -0
  113. package/dist/chunk-JL7NJP6Q.js +111 -0
  114. package/dist/chunk-JL7NJP6Q.js.map +1 -0
  115. package/dist/chunk-JNPYZX2T.mjs +40 -0
  116. package/dist/chunk-JNPYZX2T.mjs.map +1 -0
  117. package/dist/chunk-KDX5YXQ5.js +87 -0
  118. package/dist/chunk-KDX5YXQ5.js.map +1 -0
  119. package/dist/chunk-KS5HJSLF.js +67 -0
  120. package/dist/chunk-KS5HJSLF.js.map +1 -0
  121. package/dist/chunk-L6K4F4LG.js +26 -0
  122. package/dist/chunk-L6K4F4LG.js.map +1 -0
  123. package/dist/chunk-LC7B4MA5.mjs +217 -0
  124. package/dist/chunk-LC7B4MA5.mjs.map +1 -0
  125. package/dist/chunk-LWKWQGAW.js +33 -0
  126. package/dist/chunk-LWKWQGAW.js.map +1 -0
  127. package/dist/chunk-MEPFC2XU.mjs +26 -0
  128. package/dist/chunk-MEPFC2XU.mjs.map +1 -0
  129. package/dist/chunk-MKS3O4OD.mjs +93 -0
  130. package/dist/chunk-MKS3O4OD.mjs.map +1 -0
  131. package/dist/chunk-MSMDQU3O.js +117 -0
  132. package/dist/chunk-MSMDQU3O.js.map +1 -0
  133. package/dist/chunk-MWV5FEWT.js +46 -0
  134. package/dist/chunk-MWV5FEWT.js.map +1 -0
  135. package/dist/chunk-NH3DQRPT.mjs +98 -0
  136. package/dist/chunk-NH3DQRPT.mjs.map +1 -0
  137. package/dist/chunk-OA3W3JJW.js +161 -0
  138. package/dist/chunk-OA3W3JJW.js.map +1 -0
  139. package/dist/chunk-OFTVJY6M.mjs +50 -0
  140. package/dist/chunk-OFTVJY6M.mjs.map +1 -0
  141. package/dist/chunk-OXCICO7Y.js +152 -0
  142. package/dist/chunk-OXCICO7Y.js.map +1 -0
  143. package/dist/chunk-P4WX4G4Y.mjs +195 -0
  144. package/dist/chunk-P4WX4G4Y.mjs.map +1 -0
  145. package/dist/chunk-PB2SDLPK.mjs +108 -0
  146. package/dist/chunk-PB2SDLPK.mjs.map +1 -0
  147. package/dist/chunk-PBQERBMD.js +121 -0
  148. package/dist/chunk-PBQERBMD.js.map +1 -0
  149. package/dist/chunk-PDKOCCVV.mjs +35 -0
  150. package/dist/chunk-PDKOCCVV.mjs.map +1 -0
  151. package/dist/chunk-PN5VIRBV.js +138 -0
  152. package/dist/chunk-PN5VIRBV.js.map +1 -0
  153. package/dist/chunk-PNWHNAVA.js +46 -0
  154. package/dist/chunk-PNWHNAVA.js.map +1 -0
  155. package/dist/chunk-PVA5Z3FG.js +313 -0
  156. package/dist/chunk-PVA5Z3FG.js.map +1 -0
  157. package/dist/chunk-PWXNL2BK.mjs +291 -0
  158. package/dist/chunk-PWXNL2BK.mjs.map +1 -0
  159. package/dist/chunk-PYCBM7ZF.js +92 -0
  160. package/dist/chunk-PYCBM7ZF.js.map +1 -0
  161. package/dist/chunk-Q2PPWNO3.js +51 -0
  162. package/dist/chunk-Q2PPWNO3.js.map +1 -0
  163. package/dist/chunk-Q3M5OSTZ.js +134 -0
  164. package/dist/chunk-Q3M5OSTZ.js.map +1 -0
  165. package/dist/chunk-RQU26ZIR.mjs +109 -0
  166. package/dist/chunk-RQU26ZIR.mjs.map +1 -0
  167. package/dist/chunk-RTUQLXDF.mjs +61 -0
  168. package/dist/chunk-RTUQLXDF.mjs.map +1 -0
  169. package/dist/chunk-SLOSBFGR.js +138 -0
  170. package/dist/chunk-SLOSBFGR.js.map +1 -0
  171. package/dist/chunk-THP24SAW.mjs +89 -0
  172. package/dist/chunk-THP24SAW.mjs.map +1 -0
  173. package/dist/chunk-TLFSZJN5.mjs +22 -0
  174. package/dist/chunk-TLFSZJN5.mjs.map +1 -0
  175. package/dist/chunk-U225QIWZ.js +45 -0
  176. package/dist/chunk-U225QIWZ.js.map +1 -0
  177. package/dist/chunk-U6OV7U4R.js +193 -0
  178. package/dist/chunk-U6OV7U4R.js.map +1 -0
  179. package/dist/chunk-UAJP3SIS.mjs +25 -0
  180. package/dist/chunk-UAJP3SIS.mjs.map +1 -0
  181. package/dist/chunk-UGOYALE6.mjs +10 -0
  182. package/dist/chunk-UGOYALE6.mjs.map +1 -0
  183. package/dist/chunk-URIRDFZV.mjs +65 -0
  184. package/dist/chunk-URIRDFZV.mjs.map +1 -0
  185. package/dist/chunk-UXNADSIF.mjs +34 -0
  186. package/dist/chunk-UXNADSIF.mjs.map +1 -0
  187. package/dist/chunk-VRQ6R2SD.mjs +9 -0
  188. package/dist/chunk-VRQ6R2SD.mjs.map +1 -0
  189. package/dist/chunk-VVBBNEWX.mjs +25 -0
  190. package/dist/chunk-VVBBNEWX.mjs.map +1 -0
  191. package/dist/chunk-WWAYVWBZ.mjs +28 -0
  192. package/dist/chunk-WWAYVWBZ.mjs.map +1 -0
  193. package/dist/chunk-X6Q3CM4D.js +50 -0
  194. package/dist/chunk-X6Q3CM4D.js.map +1 -0
  195. package/dist/chunk-X7N5HRC7.js +63 -0
  196. package/dist/chunk-X7N5HRC7.js.map +1 -0
  197. package/dist/chunk-XQTTFIEZ.mjs +108 -0
  198. package/dist/chunk-XQTTFIEZ.mjs.map +1 -0
  199. package/dist/chunk-YHJIZTAZ.js +138 -0
  200. package/dist/chunk-YHJIZTAZ.js.map +1 -0
  201. package/dist/chunk-YJKULH22.js +52 -0
  202. package/dist/chunk-YJKULH22.js.map +1 -0
  203. package/dist/chunk-YJWIS2SU.mjs +43 -0
  204. package/dist/chunk-YJWIS2SU.mjs.map +1 -0
  205. package/dist/chunk-YVGGMPLO.mjs +156 -0
  206. package/dist/chunk-YVGGMPLO.mjs.map +1 -0
  207. package/dist/chunk-Z2T7P6LJ.js +86 -0
  208. package/dist/chunk-Z2T7P6LJ.js.map +1 -0
  209. package/dist/chunk-ZAWIAXZS.mjs +115 -0
  210. package/dist/chunk-ZAWIAXZS.mjs.map +1 -0
  211. package/dist/chunk-ZMFJHT5U.mjs +43 -0
  212. package/dist/chunk-ZMFJHT5U.mjs.map +1 -0
  213. package/dist/chunk-ZOUNOOT4.mjs +69 -0
  214. package/dist/chunk-ZOUNOOT4.mjs.map +1 -0
  215. package/dist/components/accordion/index.js +25 -0
  216. package/dist/components/accordion/index.js.map +1 -0
  217. package/dist/components/accordion/index.mjs +4 -0
  218. package/dist/components/accordion/index.mjs.map +1 -0
  219. package/dist/components/alert/index.js +25 -0
  220. package/dist/components/alert/index.js.map +1 -0
  221. package/dist/components/alert/index.mjs +4 -0
  222. package/dist/components/alert/index.mjs.map +1 -0
  223. package/dist/components/alert-dialog/index.js +54 -0
  224. package/dist/components/alert-dialog/index.js.map +1 -0
  225. package/dist/components/alert-dialog/index.mjs +5 -0
  226. package/dist/components/alert-dialog/index.mjs.map +1 -0
  227. package/dist/components/aspect-ratio/index.js +13 -0
  228. package/dist/components/aspect-ratio/index.js.map +1 -0
  229. package/dist/components/aspect-ratio/index.mjs +4 -0
  230. package/dist/components/aspect-ratio/index.mjs.map +1 -0
  231. package/dist/components/avatar/index.js +33 -0
  232. package/dist/components/avatar/index.js.map +1 -0
  233. package/dist/components/avatar/index.mjs +4 -0
  234. package/dist/components/avatar/index.mjs.map +1 -0
  235. package/dist/components/badge/index.js +17 -0
  236. package/dist/components/badge/index.js.map +1 -0
  237. package/dist/components/badge/index.mjs +4 -0
  238. package/dist/components/badge/index.mjs.map +1 -0
  239. package/dist/components/breadcrumb/index.js +37 -0
  240. package/dist/components/breadcrumb/index.js.map +1 -0
  241. package/dist/components/breadcrumb/index.mjs +4 -0
  242. package/dist/components/breadcrumb/index.mjs.map +1 -0
  243. package/dist/components/button/index.js +17 -0
  244. package/dist/components/button/index.js.map +1 -0
  245. package/dist/components/button/index.mjs +4 -0
  246. package/dist/components/button/index.mjs.map +1 -0
  247. package/dist/components/calendar/index.js +13 -0
  248. package/dist/components/calendar/index.js.map +1 -0
  249. package/dist/components/calendar/index.mjs +4 -0
  250. package/dist/components/calendar/index.mjs.map +1 -0
  251. package/dist/components/card/index.js +33 -0
  252. package/dist/components/card/index.js.map +1 -0
  253. package/dist/components/card/index.mjs +4 -0
  254. package/dist/components/card/index.mjs.map +1 -0
  255. package/dist/components/checkbox/index.js +13 -0
  256. package/dist/components/checkbox/index.js.map +1 -0
  257. package/dist/components/checkbox/index.mjs +4 -0
  258. package/dist/components/checkbox/index.mjs.map +1 -0
  259. package/dist/components/collapsible/index.js +20 -0
  260. package/dist/components/collapsible/index.js.map +1 -0
  261. package/dist/components/collapsible/index.mjs +3 -0
  262. package/dist/components/collapsible/index.mjs.map +1 -0
  263. package/dist/components/command/index.js +46 -0
  264. package/dist/components/command/index.js.map +1 -0
  265. package/dist/components/command/index.mjs +5 -0
  266. package/dist/components/command/index.mjs.map +1 -0
  267. package/dist/components/context-menu/index.js +69 -0
  268. package/dist/components/context-menu/index.js.map +1 -0
  269. package/dist/components/context-menu/index.mjs +4 -0
  270. package/dist/components/context-menu/index.mjs.map +1 -0
  271. package/dist/components/dialog/index.js +49 -0
  272. package/dist/components/dialog/index.js.map +1 -0
  273. package/dist/components/dialog/index.mjs +4 -0
  274. package/dist/components/dialog/index.mjs.map +1 -0
  275. package/dist/components/dropdown-menu/index.js +69 -0
  276. package/dist/components/dropdown-menu/index.js.map +1 -0
  277. package/dist/components/dropdown-menu/index.mjs +4 -0
  278. package/dist/components/dropdown-menu/index.mjs.map +1 -0
  279. package/dist/components/hover-card/index.js +21 -0
  280. package/dist/components/hover-card/index.js.map +1 -0
  281. package/dist/components/hover-card/index.mjs +4 -0
  282. package/dist/components/hover-card/index.mjs.map +1 -0
  283. package/dist/components/input/index.js +13 -0
  284. package/dist/components/input/index.js.map +1 -0
  285. package/dist/components/input/index.mjs +4 -0
  286. package/dist/components/input/index.mjs.map +1 -0
  287. package/dist/components/input-otp/index.js +25 -0
  288. package/dist/components/input-otp/index.js.map +1 -0
  289. package/dist/components/input-otp/index.mjs +4 -0
  290. package/dist/components/input-otp/index.mjs.map +1 -0
  291. package/dist/components/label/index.js +13 -0
  292. package/dist/components/label/index.js.map +1 -0
  293. package/dist/components/label/index.mjs +4 -0
  294. package/dist/components/label/index.mjs.map +1 -0
  295. package/dist/components/pagination/index.js +38 -0
  296. package/dist/components/pagination/index.js.map +1 -0
  297. package/dist/components/pagination/index.mjs +5 -0
  298. package/dist/components/pagination/index.mjs.map +1 -0
  299. package/dist/components/popover/index.js +25 -0
  300. package/dist/components/popover/index.js.map +1 -0
  301. package/dist/components/popover/index.mjs +4 -0
  302. package/dist/components/popover/index.mjs.map +1 -0
  303. package/dist/components/progress/index.js +13 -0
  304. package/dist/components/progress/index.js.map +1 -0
  305. package/dist/components/progress/index.mjs +4 -0
  306. package/dist/components/progress/index.mjs.map +1 -0
  307. package/dist/components/rating/index.js +17 -0
  308. package/dist/components/rating/index.js.map +1 -0
  309. package/dist/components/rating/index.mjs +4 -0
  310. package/dist/components/rating/index.mjs.map +1 -0
  311. package/dist/components/resizable/index.js +21 -0
  312. package/dist/components/resizable/index.js.map +1 -0
  313. package/dist/components/resizable/index.mjs +4 -0
  314. package/dist/components/resizable/index.mjs.map +1 -0
  315. package/dist/components/scroll-area/index.js +17 -0
  316. package/dist/components/scroll-area/index.js.map +1 -0
  317. package/dist/components/scroll-area/index.mjs +4 -0
  318. package/dist/components/scroll-area/index.mjs.map +1 -0
  319. package/dist/components/select/index.js +49 -0
  320. package/dist/components/select/index.js.map +1 -0
  321. package/dist/components/select/index.mjs +4 -0
  322. package/dist/components/select/index.mjs.map +1 -0
  323. package/dist/components/separator/index.js +13 -0
  324. package/dist/components/separator/index.js.map +1 -0
  325. package/dist/components/separator/index.mjs +4 -0
  326. package/dist/components/separator/index.mjs.map +1 -0
  327. package/dist/components/sheet/index.js +49 -0
  328. package/dist/components/sheet/index.js.map +1 -0
  329. package/dist/components/sheet/index.mjs +4 -0
  330. package/dist/components/sheet/index.mjs.map +1 -0
  331. package/dist/components/skeleton/index.js +13 -0
  332. package/dist/components/skeleton/index.js.map +1 -0
  333. package/dist/components/skeleton/index.mjs +4 -0
  334. package/dist/components/skeleton/index.mjs.map +1 -0
  335. package/dist/components/slider/index.js +13 -0
  336. package/dist/components/slider/index.js.map +1 -0
  337. package/dist/components/slider/index.mjs +4 -0
  338. package/dist/components/slider/index.mjs.map +1 -0
  339. package/dist/components/spinner/index.js +17 -0
  340. package/dist/components/spinner/index.js.map +1 -0
  341. package/dist/components/spinner/index.mjs +4 -0
  342. package/dist/components/spinner/index.mjs.map +1 -0
  343. package/dist/components/stat-card/index.js +41 -0
  344. package/dist/components/stat-card/index.js.map +1 -0
  345. package/dist/components/stat-card/index.mjs +4 -0
  346. package/dist/components/stat-card/index.mjs.map +1 -0
  347. package/dist/components/switch/index.js +13 -0
  348. package/dist/components/switch/index.js.map +1 -0
  349. package/dist/components/switch/index.mjs +4 -0
  350. package/dist/components/switch/index.mjs.map +1 -0
  351. package/dist/components/table/index.js +41 -0
  352. package/dist/components/table/index.js.map +1 -0
  353. package/dist/components/table/index.mjs +4 -0
  354. package/dist/components/table/index.mjs.map +1 -0
  355. package/dist/components/tabs/index.js +25 -0
  356. package/dist/components/tabs/index.js.map +1 -0
  357. package/dist/components/tabs/index.mjs +4 -0
  358. package/dist/components/tabs/index.mjs.map +1 -0
  359. package/dist/components/textarea/index.js +13 -0
  360. package/dist/components/textarea/index.js.map +1 -0
  361. package/dist/components/textarea/index.mjs +4 -0
  362. package/dist/components/textarea/index.mjs.map +1 -0
  363. package/dist/components/timeline/index.js +49 -0
  364. package/dist/components/timeline/index.js.map +1 -0
  365. package/dist/components/timeline/index.mjs +4 -0
  366. package/dist/components/timeline/index.mjs.map +1 -0
  367. package/dist/components/toast/index.js +16 -0
  368. package/dist/components/toast/index.js.map +1 -0
  369. package/dist/components/toast/index.mjs +3 -0
  370. package/dist/components/toast/index.mjs.map +1 -0
  371. package/dist/components/toggle/index.js +17 -0
  372. package/dist/components/toggle/index.js.map +1 -0
  373. package/dist/components/toggle/index.mjs +4 -0
  374. package/dist/components/toggle/index.mjs.map +1 -0
  375. package/dist/components/toggle-group/index.js +18 -0
  376. package/dist/components/toggle-group/index.js.map +1 -0
  377. package/dist/components/toggle-group/index.mjs +5 -0
  378. package/dist/components/toggle-group/index.mjs.map +1 -0
  379. package/dist/components/tooltip/index.js +25 -0
  380. package/dist/components/tooltip/index.js.map +1 -0
  381. package/dist/components/tooltip/index.mjs +4 -0
  382. package/dist/components/tooltip/index.mjs.map +1 -0
  383. package/dist/index.d.mts +702 -0
  384. package/dist/index.d.ts +702 -0
  385. package/dist/index.js +1372 -0
  386. package/dist/index.js.map +1 -0
  387. package/dist/index.mjs +547 -0
  388. package/dist/index.mjs.map +1 -0
  389. package/package.json +333 -0
  390. package/src/styles/globals.css +140 -0
@@ -0,0 +1,209 @@
1
+ import { cn } from './chunk-UGOYALE6.mjs';
2
+ import * as React from 'react';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ var InputOTPContext = React.createContext(null);
6
+ function useInputOTP() {
7
+ const context = React.useContext(InputOTPContext);
8
+ if (!context) {
9
+ throw new Error("useInputOTP must be used within an InputOTP provider");
10
+ }
11
+ return context;
12
+ }
13
+ var InputOTP = React.forwardRef(
14
+ ({
15
+ className,
16
+ value: controlledValue,
17
+ defaultValue = "",
18
+ onChange,
19
+ onComplete,
20
+ maxLength = 6,
21
+ disabled = false,
22
+ autoFocus = false,
23
+ children,
24
+ ...props
25
+ }, ref) => {
26
+ const isControlled = controlledValue !== void 0;
27
+ const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);
28
+ const value = isControlled ? controlledValue : uncontrolledValue;
29
+ const [focusedIndex, setFocusedIndex] = React.useState(null);
30
+ const inputRefs = React.useRef([]);
31
+ const updateValue = React.useCallback(
32
+ (nextValue) => {
33
+ const sliced = nextValue.slice(0, maxLength);
34
+ if (!isControlled) {
35
+ setUncontrolledValue(sliced);
36
+ }
37
+ onChange?.(sliced);
38
+ if (sliced.length === maxLength) {
39
+ onComplete?.(sliced);
40
+ }
41
+ },
42
+ [isControlled, maxLength, onChange, onComplete]
43
+ );
44
+ const onSlotInput = React.useCallback(
45
+ (index, char) => {
46
+ if (disabled) return;
47
+ const chars = value.split("");
48
+ chars[index] = char;
49
+ const nextValue = chars.join("");
50
+ updateValue(nextValue);
51
+ if (index < maxLength - 1) {
52
+ inputRefs.current[index + 1]?.focus();
53
+ }
54
+ },
55
+ [disabled, maxLength, updateValue, value]
56
+ );
57
+ const onSlotKeyDown = React.useCallback(
58
+ (index, e) => {
59
+ if (disabled) return;
60
+ if (e.key === "Backspace") {
61
+ e.preventDefault();
62
+ const chars = value.split("");
63
+ if (chars[index]) {
64
+ chars[index] = "";
65
+ updateValue(chars.join(""));
66
+ } else if (index > 0) {
67
+ chars[index - 1] = "";
68
+ updateValue(chars.join(""));
69
+ inputRefs.current[index - 1]?.focus();
70
+ }
71
+ } else if (e.key === "ArrowLeft") {
72
+ e.preventDefault();
73
+ if (index > 0) {
74
+ inputRefs.current[index - 1]?.focus();
75
+ }
76
+ } else if (e.key === "ArrowRight") {
77
+ e.preventDefault();
78
+ if (index < maxLength - 1) {
79
+ inputRefs.current[index + 1]?.focus();
80
+ }
81
+ } else if (e.key === "Delete") {
82
+ e.preventDefault();
83
+ const chars = value.split("");
84
+ chars[index] = "";
85
+ updateValue(chars.join(""));
86
+ }
87
+ },
88
+ [disabled, maxLength, updateValue, value]
89
+ );
90
+ const onSlotPaste = React.useCallback(
91
+ (e) => {
92
+ e.preventDefault();
93
+ if (disabled) return;
94
+ const pastedData = e.clipboardData.getData("text/plain").trim();
95
+ if (!pastedData) return;
96
+ updateValue(pastedData);
97
+ const nextFocusIndex = Math.min(pastedData.length, maxLength - 1);
98
+ inputRefs.current[nextFocusIndex]?.focus();
99
+ },
100
+ [disabled, maxLength, updateValue]
101
+ );
102
+ React.useEffect(() => {
103
+ if (autoFocus && inputRefs.current[0]) {
104
+ inputRefs.current[0].focus();
105
+ }
106
+ }, [autoFocus]);
107
+ return /* @__PURE__ */ jsx(
108
+ InputOTPContext.Provider,
109
+ {
110
+ value: {
111
+ value,
112
+ maxLength,
113
+ focusedIndex,
114
+ setFocusedIndex,
115
+ disabled,
116
+ onSlotInput,
117
+ onSlotKeyDown,
118
+ onSlotPaste,
119
+ inputRefs
120
+ },
121
+ children: /* @__PURE__ */ jsx(
122
+ "div",
123
+ {
124
+ ref,
125
+ className: cn("flex items-center gap-2 has-[:disabled]:opacity-50", className),
126
+ ...props,
127
+ children
128
+ }
129
+ )
130
+ }
131
+ );
132
+ }
133
+ );
134
+ InputOTP.displayName = "InputOTP";
135
+ var InputOTPGroup = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center", className), ...props }));
136
+ InputOTPGroup.displayName = "InputOTPGroup";
137
+ var InputOTPSlot = React.forwardRef(
138
+ ({ index, className, ...props }, ref) => {
139
+ const {
140
+ value,
141
+ focusedIndex,
142
+ setFocusedIndex,
143
+ disabled,
144
+ onSlotInput,
145
+ onSlotKeyDown,
146
+ onSlotPaste,
147
+ inputRefs
148
+ } = useInputOTP();
149
+ const char = value[index] || "";
150
+ const isFocused = focusedIndex === index;
151
+ return /* @__PURE__ */ jsxs(
152
+ "div",
153
+ {
154
+ ref,
155
+ className: cn(
156
+ "relative flex h-10 w-10 items-center justify-center border-y border-r border-border text-sm font-medium transition-all first:rounded-l-lg first:border-l last:rounded-r-lg bg-background",
157
+ isFocused && "z-10 ring-2 ring-ring ring-offset-background border-ring",
158
+ disabled && "cursor-not-allowed bg-muted/40",
159
+ className
160
+ ),
161
+ ...props,
162
+ children: [
163
+ /* @__PURE__ */ jsx(
164
+ "input",
165
+ {
166
+ ref: (el) => {
167
+ inputRefs.current[index] = el;
168
+ },
169
+ type: "text",
170
+ inputMode: "numeric",
171
+ pattern: "[0-9]*",
172
+ maxLength: 1,
173
+ value: char,
174
+ disabled,
175
+ onFocus: () => setFocusedIndex(index),
176
+ onBlur: () => setFocusedIndex(null),
177
+ onChange: (e) => {
178
+ const nextChar = e.target.value.slice(-1);
179
+ onSlotInput(index, nextChar);
180
+ },
181
+ onKeyDown: (e) => onSlotKeyDown(index, e),
182
+ onPaste: onSlotPaste,
183
+ className: "absolute inset-0 h-full w-full opacity-0 cursor-default disabled:cursor-not-allowed",
184
+ "aria-label": `Digit ${index + 1}`
185
+ }
186
+ ),
187
+ char,
188
+ isFocused && !char && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-pulse bg-foreground" }) })
189
+ ]
190
+ }
191
+ );
192
+ }
193
+ );
194
+ InputOTPSlot.displayName = "InputOTPSlot";
195
+ var InputOTPSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
196
+ "div",
197
+ {
198
+ ref,
199
+ role: "separator",
200
+ className: cn("flex items-center text-muted-foreground px-1 text-sm font-bold", className),
201
+ ...props,
202
+ children: "-"
203
+ }
204
+ ));
205
+ InputOTPSeparator.displayName = "InputOTPSeparator";
206
+
207
+ export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
208
+ //# sourceMappingURL=chunk-J4GNMOED.mjs.map
209
+ //# sourceMappingURL=chunk-J4GNMOED.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/input-otp/index.tsx"],"names":[],"mappings":"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","file":"chunk-J4GNMOED.mjs","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\ninterface InputOTPContextValue {\n value: string;\n maxLength: number;\n focusedIndex: number | null;\n setFocusedIndex: (index: number | null) => void;\n disabled?: boolean;\n onSlotInput: (index: number, char: string) => void;\n onSlotKeyDown: (index: number, e: React.KeyboardEvent<HTMLInputElement>) => void;\n onSlotPaste: (e: React.ClipboardEvent<HTMLInputElement>) => void;\n inputRefs: React.MutableRefObject<(HTMLInputElement | null)[]>;\n}\n\nconst InputOTPContext = React.createContext<InputOTPContextValue | null>(null);\n\nfunction useInputOTP() {\n const context = React.useContext(InputOTPContext);\n if (!context) {\n throw new Error(\"useInputOTP must be used within an InputOTP provider\");\n }\n return context;\n}\n\nexport interface InputOTPProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onComplete?: (value: string) => void;\n maxLength?: number;\n disabled?: boolean;\n autoFocus?: boolean;\n}\n\nconst InputOTP = React.forwardRef<HTMLDivElement, InputOTPProps>(\n (\n {\n className,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onComplete,\n maxLength = 6,\n disabled = false,\n autoFocus = false,\n children,\n ...props\n },\n ref\n ) => {\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const [focusedIndex, setFocusedIndex] = React.useState<number | null>(null);\n const inputRefs = React.useRef<(HTMLInputElement | null)[]>([]);\n\n const updateValue = React.useCallback(\n (nextValue: string) => {\n const sliced = nextValue.slice(0, maxLength);\n if (!isControlled) {\n setUncontrolledValue(sliced);\n }\n onChange?.(sliced);\n if (sliced.length === maxLength) {\n onComplete?.(sliced);\n }\n },\n [isControlled, maxLength, onChange, onComplete]\n );\n\n const onSlotInput = React.useCallback(\n (index: number, char: string) => {\n if (disabled) return;\n const chars = value.split(\"\");\n chars[index] = char;\n const nextValue = chars.join(\"\");\n updateValue(nextValue);\n\n // Move to next slot\n if (index < maxLength - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n },\n [disabled, maxLength, updateValue, value]\n );\n\n const onSlotKeyDown = React.useCallback(\n (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n if (e.key === \"Backspace\") {\n e.preventDefault();\n const chars = value.split(\"\");\n if (chars[index]) {\n chars[index] = \"\";\n updateValue(chars.join(\"\"));\n } else if (index > 0) {\n chars[index - 1] = \"\";\n updateValue(chars.join(\"\"));\n inputRefs.current[index - 1]?.focus();\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n if (index > 0) {\n inputRefs.current[index - 1]?.focus();\n }\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n if (index < maxLength - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n } else if (e.key === \"Delete\") {\n e.preventDefault();\n const chars = value.split(\"\");\n chars[index] = \"\";\n updateValue(chars.join(\"\"));\n }\n },\n [disabled, maxLength, updateValue, value]\n );\n\n const onSlotPaste = React.useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n if (disabled) return;\n const pastedData = e.clipboardData.getData(\"text/plain\").trim();\n if (!pastedData) return;\n updateValue(pastedData);\n const nextFocusIndex = Math.min(pastedData.length, maxLength - 1);\n inputRefs.current[nextFocusIndex]?.focus();\n },\n [disabled, maxLength, updateValue]\n );\n\n React.useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus();\n }\n }, [autoFocus]);\n\n return (\n <InputOTPContext.Provider\n value={{\n value,\n maxLength,\n focusedIndex,\n setFocusedIndex,\n disabled,\n onSlotInput,\n onSlotKeyDown,\n onSlotPaste,\n inputRefs,\n }}\n >\n <div\n ref={ref}\n className={cn(\"flex items-center gap-2 has-[:disabled]:opacity-50\", className)}\n {...props}\n >\n {children}\n </div>\n </InputOTPContext.Provider>\n );\n }\n);\nInputOTP.displayName = \"InputOTP\";\n\nconst InputOTPGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\nexport interface InputOTPSlotProps\n extends React.HTMLAttributes<HTMLDivElement> {\n index: number;\n}\n\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\n ({ index, className, ...props }, ref) => {\n const {\n value,\n focusedIndex,\n setFocusedIndex,\n disabled,\n onSlotInput,\n onSlotKeyDown,\n onSlotPaste,\n inputRefs,\n } = useInputOTP();\n\n const char = value[index] || \"\";\n const isFocused = focusedIndex === index;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-border text-sm font-medium transition-all first:rounded-l-lg first:border-l last:rounded-r-lg bg-background\",\n isFocused && \"z-10 ring-2 ring-ring ring-offset-background border-ring\",\n disabled && \"cursor-not-allowed bg-muted/40\",\n className\n )}\n {...props}\n >\n <input\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={1}\n value={char}\n disabled={disabled}\n onFocus={() => setFocusedIndex(index)}\n onBlur={() => setFocusedIndex(null)}\n onChange={(e) => {\n const nextChar = e.target.value.slice(-1);\n onSlotInput(index, nextChar);\n }}\n onKeyDown={(e) => onSlotKeyDown(index, e)}\n onPaste={onSlotPaste}\n className=\"absolute inset-0 h-full w-full opacity-0 cursor-default disabled:cursor-not-allowed\"\n aria-label={`Digit ${index + 1}`}\n />\n {char}\n {isFocused && !char && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-pulse bg-foreground\" />\n </div>\n )}\n </div>\n );\n }\n);\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\nconst InputOTPSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(\"flex items-center text-muted-foreground px-1 text-sm font-bold\", className)}\n {...props}\n >\n -\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"]}
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var chunkCRTXVH5I_js = require('./chunk-CRTXVH5I.js');
4
+ var React = require('react');
5
+ var AccordionPrimitive = require('@radix-ui/react-accordion');
6
+ var lucideReact = require('lucide-react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+ var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
29
+
30
+ var Accordion = AccordionPrimitive__namespace.Root;
31
+ var AccordionItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
32
+ AccordionPrimitive__namespace.Item,
33
+ {
34
+ ref,
35
+ className: chunkCRTXVH5I_js.cn("border-b border-border", className),
36
+ ...props
37
+ }
38
+ ));
39
+ AccordionItem.displayName = "AccordionItem";
40
+ var AccordionTrigger = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Header, { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs(
41
+ AccordionPrimitive__namespace.Trigger,
42
+ {
43
+ ref,
44
+ className: chunkCRTXVH5I_js.cn(
45
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium",
46
+ "transition-all duration-200",
47
+ "hover:underline",
48
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
49
+ "[&[data-state=open]>svg]:rotate-180",
50
+ className
51
+ ),
52
+ ...props,
53
+ children: [
54
+ children,
55
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
56
+ ]
57
+ }
58
+ ) }));
59
+ AccordionTrigger.displayName = AccordionPrimitive__namespace.Trigger.displayName;
60
+ var AccordionContent = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
61
+ AccordionPrimitive__namespace.Content,
62
+ {
63
+ ref,
64
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
65
+ ...props,
66
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkCRTXVH5I_js.cn("pb-4 pt-0", className), children })
67
+ }
68
+ ));
69
+ AccordionContent.displayName = AccordionPrimitive__namespace.Content.displayName;
70
+
71
+ exports.Accordion = Accordion;
72
+ exports.AccordionContent = AccordionContent;
73
+ exports.AccordionItem = AccordionItem;
74
+ exports.AccordionTrigger = AccordionTrigger;
75
+ //# sourceMappingURL=chunk-JE5NGXPK.js.map
76
+ //# sourceMappingURL=chunk-JE5NGXPK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/accordion/index.tsx"],"names":["AccordionPrimitive","React","jsx","cn","jsxs","ChevronDown"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,SAAA,GAA+BA,6BAAA,CAAA;AAErC,IAAM,aAAA,GAAsBC,4BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWG,mBAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,IAChD,GAAG;AAAA;AACN,CACD;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAA,GAAyBF,gBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA,CAAoBF,6BAAA,CAAA,MAAA,EAAnB,EAA0B,WAAU,MAAA,EACnC,QAAA,kBAAAI,eAAA;AAAA,EAAoBJ,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWG,mBAAA;AAAA,MACT,mEAAA;AAAA,MACA,6BAAA;AAAA,MACA,iBAAA;AAAA,MACA,qGAAA;AAAA,MACA,qCAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDD,cAAA,CAACG,uBAAA,EAAA,EAAY,SAAA,EAAU,0EAAA,EAA2E;AAAA;AAAA;AACpG,CAAA,EACF,CACD;AACD,gBAAA,CAAiB,cAAiCL,6BAAA,CAAA,OAAA,CAAQ,WAAA;AAE1D,IAAM,gBAAA,GAAyBC,4BAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,2GAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAWG,oBAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD;AACD,gBAAA,CAAiB,cAAiCH,6BAAA,CAAA,OAAA,CAAQ,WAAA","file":"chunk-JE5NGXPK.js","sourcesContent":["import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b border-border\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium\",\n \"transition-all duration-200\",\n \"hover:underline\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"]}
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var chunkCRTXVH5I_js = require('./chunk-CRTXVH5I.js');
4
+ var React = require('react');
5
+ var SliderPrimitive = require('@radix-ui/react-slider');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+ var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
28
+
29
+ var Slider = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
30
+ SliderPrimitive__namespace.Root,
31
+ {
32
+ ref,
33
+ className: chunkCRTXVH5I_js.cn(
34
+ "relative flex w-full touch-none select-none items-center",
35
+ className
36
+ ),
37
+ ...props,
38
+ children: [
39
+ /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full bg-primary" }) }),
40
+ /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "block h-4 w-4 rounded-full border-2 border-primary bg-background shadow-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 cursor-pointer hover:scale-110" })
41
+ ]
42
+ }
43
+ ));
44
+ Slider.displayName = SliderPrimitive__namespace.Root.displayName;
45
+
46
+ exports.Slider = Slider;
47
+ //# sourceMappingURL=chunk-JJXQE6T2.js.map
48
+ //# sourceMappingURL=chunk-JJXQE6T2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/slider/index.tsx"],"names":["React","jsxs","SliderPrimitive","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAM,MAAA,GAAeA,4BAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,eAAA;AAAA,EAAiBC,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA;AAAA,MACT,0DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAAiBF,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,kEAAA,EAC/B,yCAAiBA,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAChE,CAAA;AAAA,sBACAE,cAAA,CAAiBF,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,sPAAA,EAAuP;AAAA;AAAA;AAC1R,CACD;AACD,MAAA,CAAO,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-JJXQE6T2.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../../lib/utils\";\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border-2 border-primary bg-background shadow-xs transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 cursor-pointer hover:scale-110\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"]}
@@ -0,0 +1,111 @@
1
+ 'use strict';
2
+
3
+ var chunkCRTXVH5I_js = require('./chunk-CRTXVH5I.js');
4
+ var React = require('react');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
+
27
+ var Table = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-auto rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
28
+ "table",
29
+ {
30
+ ref,
31
+ className: chunkCRTXVH5I_js.cn("w-full caption-bottom text-sm", className),
32
+ ...props
33
+ }
34
+ ) }));
35
+ Table.displayName = "Table";
36
+ var TableHeader = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("thead", { ref, className: chunkCRTXVH5I_js.cn("bg-muted/40 [&_tr]:border-b border-border", className), ...props }));
37
+ TableHeader.displayName = "TableHeader";
38
+ var TableBody = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
39
+ "tbody",
40
+ {
41
+ ref,
42
+ className: chunkCRTXVH5I_js.cn("[&_tr:last-child]:border-0", className),
43
+ ...props
44
+ }
45
+ ));
46
+ TableBody.displayName = "TableBody";
47
+ var TableFooter = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
48
+ "tfoot",
49
+ {
50
+ ref,
51
+ className: chunkCRTXVH5I_js.cn(
52
+ "border-t border-border bg-muted/50 font-medium [&>tr]:last-child:border-b-0",
53
+ className
54
+ ),
55
+ ...props
56
+ }
57
+ ));
58
+ TableFooter.displayName = "TableFooter";
59
+ var TableRow = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
60
+ "tr",
61
+ {
62
+ ref,
63
+ className: chunkCRTXVH5I_js.cn(
64
+ "border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
65
+ className
66
+ ),
67
+ ...props
68
+ }
69
+ ));
70
+ TableRow.displayName = "TableRow";
71
+ var TableHead = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
72
+ "th",
73
+ {
74
+ ref,
75
+ className: chunkCRTXVH5I_js.cn(
76
+ "h-11 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
77
+ className
78
+ ),
79
+ ...props
80
+ }
81
+ ));
82
+ TableHead.displayName = "TableHead";
83
+ var TableCell = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
84
+ "td",
85
+ {
86
+ ref,
87
+ className: chunkCRTXVH5I_js.cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
88
+ ...props
89
+ }
90
+ ));
91
+ TableCell.displayName = "TableCell";
92
+ var TableCaption = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
93
+ "caption",
94
+ {
95
+ ref,
96
+ className: chunkCRTXVH5I_js.cn("mt-4 text-sm text-muted-foreground", className),
97
+ ...props
98
+ }
99
+ ));
100
+ TableCaption.displayName = "TableCaption";
101
+
102
+ exports.Table = Table;
103
+ exports.TableBody = TableBody;
104
+ exports.TableCaption = TableCaption;
105
+ exports.TableCell = TableCell;
106
+ exports.TableFooter = TableFooter;
107
+ exports.TableHead = TableHead;
108
+ exports.TableHeader = TableHeader;
109
+ exports.TableRow = TableRow;
110
+ //# sourceMappingURL=chunk-JL7NJP6Q.js.map
111
+ //# sourceMappingURL=chunk-JL7NJP6Q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/table/index.tsx"],"names":["React","jsx","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAM,KAAA,GAAcA,gBAAA,CAAA,UAAA,CAGlB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,KAAA,CAAM,WAAA,GAAc,OAAA;AAEpB,IAAM,cAAoBF,gBAAA,CAAA,UAAA,CAGxB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,EAAG,GAAA,oCACzB,OAAA,EAAA,EAAM,GAAA,EAAU,WAAWE,mBAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA,EAAI,GAAG,OAAO,CACpG;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,SAAA,GAAkBF,4BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,IACpD,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,WAAA,GAAoBF,4BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA;AAAA,MACT,6EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,QAAA,GAAiBF,4BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA;AAAA,MACT,2FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,SAAA,GAAkBF,4BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA;AAAA,MACT,kGAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,SAAA,GAAkBF,4BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA,CAAG,gDAAA,EAAkD,SAAS,CAAA;AAAA,IACxE,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,YAAA,GAAqBF,4BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAWC,mBAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,IAC5D,GAAG;AAAA;AACN,CACD;AACD,YAAA,CAAa,WAAA,GAAc,cAAA","file":"chunk-JL7NJP6Q.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto rounded-lg border border-border\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"bg-muted/40 [&_tr]:border-b border-border\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t border-border bg-muted/50 font-medium [&>tr]:last-child:border-b-0\",\n className\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-11 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"]}
@@ -0,0 +1,40 @@
1
+ import { cn } from './chunk-UGOYALE6.mjs';
2
+ import { GripVertical } from 'lucide-react';
3
+ import { Panel, Group, Separator } from 'react-resizable-panels';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var ResizablePanelGroup = ({
7
+ className,
8
+ orientation = "horizontal",
9
+ ...props
10
+ }) => /* @__PURE__ */ jsx(
11
+ Group,
12
+ {
13
+ orientation,
14
+ className: cn(
15
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
16
+ className
17
+ ),
18
+ ...props
19
+ }
20
+ );
21
+ var ResizablePanel = Panel;
22
+ var ResizableHandle = ({
23
+ withHandle,
24
+ className,
25
+ ...props
26
+ }) => /* @__PURE__ */ jsx(
27
+ Separator,
28
+ {
29
+ className: cn(
30
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
31
+ className
32
+ ),
33
+ ...props,
34
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border bg-background shadow-xs", children: /* @__PURE__ */ jsx(GripVertical, { className: "h-2.5 w-2.5 text-muted-foreground" }) })
35
+ }
36
+ );
37
+
38
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
39
+ //# sourceMappingURL=chunk-JNPYZX2T.mjs.map
40
+ //# sourceMappingURL=chunk-JNPYZX2T.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/resizable/index.tsx"],"names":[],"mappings":";;;;;AAOA,IAAM,sBAAsB,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,GAAG;AACL,CAAA,qBACE,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAGF,IAAM,cAAA,GAAiB;AAEvB,IAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBAGE,GAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,2oBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,yGACb,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,mCAAA,EAAoC,CAAA,EAC9D;AAAA;AAEJ","file":"chunk-JNPYZX2T.mjs","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { GripVertical } from \"lucide-react\";\nimport { Group, Panel, Separator } from \"react-resizable-panels\";\nimport { cn } from \"../../lib/utils\";\n\nconst ResizablePanelGroup = ({\n className,\n orientation = \"horizontal\",\n ...props\n}: React.ComponentProps<typeof Group>) => (\n <Group\n orientation={orientation}\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n);\n\nconst ResizablePanel = Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof Separator> & {\n withHandle?: boolean;\n}) => (\n <Separator\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border bg-background shadow-xs\">\n <GripVertical className=\"h-2.5 w-2.5 text-muted-foreground\" />\n </div>\n )}\n </Separator>\n);\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n"]}
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ var chunkCRTXVH5I_js = require('./chunk-CRTXVH5I.js');
4
+ var React = require('react');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
+
27
+ var Textarea = React__namespace.forwardRef(
28
+ ({ className, label, error, hint, showCount, maxLength, id, value, onChange, ...props }, ref) => {
29
+ const [charCount, setCharCount] = React__namespace.useState(
30
+ typeof value === "string" ? value.length : 0
31
+ );
32
+ const generatedId = React__namespace.useId();
33
+ const textareaId = id ?? generatedId;
34
+ const handleChange = (e) => {
35
+ setCharCount(e.target.value.length);
36
+ onChange?.(e);
37
+ };
38
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-1.5", children: [
39
+ label && /* @__PURE__ */ jsxRuntime.jsx(
40
+ "label",
41
+ {
42
+ htmlFor: textareaId,
43
+ className: "text-sm font-medium leading-none text-foreground",
44
+ children: label
45
+ }
46
+ ),
47
+ /* @__PURE__ */ jsxRuntime.jsx(
48
+ "textarea",
49
+ {
50
+ id: textareaId,
51
+ ref,
52
+ value,
53
+ onChange: handleChange,
54
+ maxLength,
55
+ "aria-invalid": !!error,
56
+ "aria-describedby": error ? `${textareaId}-error` : hint ? `${textareaId}-hint` : void 0,
57
+ className: chunkCRTXVH5I_js.cn(
58
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm",
59
+ "text-foreground placeholder:text-muted-foreground",
60
+ "transition-colors duration-150 resize-y",
61
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
62
+ "disabled:cursor-not-allowed disabled:opacity-50",
63
+ error && "border-destructive focus-visible:ring-destructive",
64
+ className
65
+ ),
66
+ ...props
67
+ }
68
+ ),
69
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
70
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
71
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${textareaId}-error`, className: "text-xs text-destructive", role: "alert", children: error }),
72
+ hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${textareaId}-hint`, className: "text-xs text-muted-foreground", children: hint })
73
+ ] }),
74
+ showCount && maxLength && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground ml-auto", children: [
75
+ charCount,
76
+ "/",
77
+ maxLength
78
+ ] })
79
+ ] })
80
+ ] });
81
+ }
82
+ );
83
+ Textarea.displayName = "Textarea";
84
+
85
+ exports.Textarea = Textarea;
86
+ //# sourceMappingURL=chunk-KDX5YXQ5.js.map
87
+ //# sourceMappingURL=chunk-KDX5YXQ5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/textarea/index.tsx"],"names":["React","jsxs","jsx","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAM,QAAA,GAAiBA,gBAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,OAAO,IAAA,EAAM,SAAA,EAAW,SAAA,EAAW,EAAA,EAAI,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/F,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,gBAAA,CAAA,QAAA;AAAA,MACtC,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,CAAM,MAAA,GAAS;AAAA,KAC7C;AACA,IAAA,MAAM,cAAoBA,gBAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,aAAa,EAAA,IAAM,WAAA;AAEzB,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAA8C;AAClE,MAAA,YAAA,CAAa,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAClC,MAAA,QAAA,GAAW,CAAC,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACCC,cAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,UAAA;AAAA,UACT,SAAA,EAAU,kDAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEFA,cAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,UAAA;AAAA,UACJ,GAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA,EAAU,YAAA;AAAA,UACV,SAAA;AAAA,UACA,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,UAChB,kBAAA,EACE,QACI,CAAA,EAAG,UAAU,WACb,IAAA,GACA,CAAA,EAAG,UAAU,CAAA,KAAA,CAAA,GACb,MAAA;AAAA,UAEN,SAAA,EAAWC,mBAAA;AAAA,YACT,yFAAA;AAAA,YACA,mDAAA;AAAA,YACA,yCAAA;AAAA,YACA,qGAAA;AAAA,YACA,iDAAA;AAAA,YACA,KAAA,IAAS,mDAAA;AAAA,YACT;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA,OACN;AAAA,sBACAF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCC,cAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,UAAU,UAAU,SAAA,EAAU,0BAAA,EAA2B,IAAA,EAAK,OAAA,EACrE,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAED,IAAA,IAAQ,CAAC,KAAA,oBACRA,cAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,UAAU,CAAA,KAAA,CAAA,EAAS,SAAA,EAAU,+BAAA,EACpC,QAAA,EAAA,IAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QACC,SAAA,IAAa,SAAA,oBACZD,eAAA,CAAC,GAAA,EAAA,EAAE,WAAU,uCAAA,EACV,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,UAAU,GAAA;AAAA,UAAE;AAAA,SAAA,EACf;AAAA,OAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-KDX5YXQ5.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Label metni */\n label?: string;\n /** Hata mesajı */\n error?: string;\n /** Yardımcı metin */\n hint?: string;\n /** Karakter sayacı göster */\n showCount?: boolean;\n /** Maksimum karakter sayısı (showCount ile birlikte kullanılır) */\n maxLength?: number;\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, label, error, hint, showCount, maxLength, id, value, onChange, ...props }, ref) => {\n const [charCount, setCharCount] = React.useState(\n typeof value === \"string\" ? value.length : 0\n );\n const generatedId = React.useId();\n const textareaId = id ?? generatedId;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setCharCount(e.target.value.length);\n onChange?.(e);\n };\n\n return (\n <div className=\"w-full space-y-1.5\">\n {label && (\n <label\n htmlFor={textareaId}\n className=\"text-sm font-medium leading-none text-foreground\"\n >\n {label}\n </label>\n )}\n <textarea\n id={textareaId}\n ref={ref}\n value={value}\n onChange={handleChange}\n maxLength={maxLength}\n aria-invalid={!!error}\n aria-describedby={\n error\n ? `${textareaId}-error`\n : hint\n ? `${textareaId}-hint`\n : undefined\n }\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm\",\n \"text-foreground placeholder:text-muted-foreground\",\n \"transition-colors duration-150 resize-y\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n {...props}\n />\n <div className=\"flex items-center justify-between\">\n <div>\n {error && (\n <p id={`${textareaId}-error`} className=\"text-xs text-destructive\" role=\"alert\">\n {error}\n </p>\n )}\n {hint && !error && (\n <p id={`${textareaId}-hint`} className=\"text-xs text-muted-foreground\">\n {hint}\n </p>\n )}\n </div>\n {showCount && maxLength && (\n <p className=\"text-xs text-muted-foreground ml-auto\">\n {charCount}/{maxLength}\n </p>\n )}\n </div>\n </div>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n"]}