@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,75 @@
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 Input = React__namespace.forwardRef(
28
+ ({ className, type, leftIcon, rightIcon, error, label, hint, id, ...props }, ref) => {
29
+ const generatedId = React__namespace.useId();
30
+ const inputId = id ?? generatedId;
31
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full space-y-1.5", children: [
32
+ label && /* @__PURE__ */ jsxRuntime.jsx(
33
+ "label",
34
+ {
35
+ htmlFor: inputId,
36
+ className: "text-sm font-medium leading-none text-foreground",
37
+ children: label
38
+ }
39
+ ),
40
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center", children: [
41
+ leftIcon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-3 z-10 pointer-events-none flex items-center justify-center text-muted-foreground [&_svg]:h-4 [&_svg]:w-4 shrink-0", children: leftIcon }),
42
+ /* @__PURE__ */ jsxRuntime.jsx(
43
+ "input",
44
+ {
45
+ id: inputId,
46
+ type,
47
+ ref,
48
+ "aria-invalid": !!error,
49
+ "aria-describedby": error ? `${inputId}-error` : hint ? `${inputId}-hint` : void 0,
50
+ className: chunkCRTXVH5I_js.cn(
51
+ "flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm",
52
+ "text-foreground placeholder:text-muted-foreground",
53
+ "transition-colors duration-150",
54
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
55
+ "disabled:cursor-not-allowed disabled:opacity-50",
56
+ leftIcon && "!pl-9",
57
+ rightIcon && "!pr-9",
58
+ error && "border-destructive focus-visible:ring-destructive",
59
+ className
60
+ ),
61
+ ...props
62
+ }
63
+ ),
64
+ rightIcon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-3 z-10 flex items-center justify-center text-muted-foreground [&_svg]:h-4 [&_svg]:w-4 shrink-0", children: rightIcon })
65
+ ] }),
66
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${inputId}-error`, className: "text-xs text-destructive", role: "alert", children: error }),
67
+ hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${inputId}-hint`, className: "text-xs text-muted-foreground", children: hint })
68
+ ] });
69
+ }
70
+ );
71
+ Input.displayName = "Input";
72
+
73
+ exports.Input = Input;
74
+ //# sourceMappingURL=chunk-AJKFRN2S.js.map
75
+ //# sourceMappingURL=chunk-AJKFRN2S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/input/index.tsx"],"names":["React","jsxs","jsx","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAM,KAAA,GAAcA,gBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,KAAA,EAAO,IAAA,EAAM,EAAA,EAAI,GAAG,KAAA,IAAS,GAAA,KAAQ;AACnF,IAAA,MAAM,cAAoBA,gBAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,UAAU,EAAA,IAAM,WAAA;AAEtB,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,OAAA;AAAA,UACT,SAAA,EAAU,kDAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEFD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACZ,QAAA,EAAA;AAAA,QAAA,QAAA,oBACCC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kIAAA,EACZ,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,wBAEFA,cAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,OAAA;AAAA,YACJ,IAAA;AAAA,YACA,GAAA;AAAA,YACA,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,YAChB,kBAAA,EACE,QAAQ,CAAA,EAAG,OAAO,WAAW,IAAA,GAAO,CAAA,EAAG,OAAO,CAAA,KAAA,CAAA,GAAU,MAAA;AAAA,YAE1D,SAAA,EAAWC,mBAAA;AAAA,cACT,gFAAA;AAAA,cACA,mDAAA;AAAA,cACA,gCAAA;AAAA,cACA,qGAAA;AAAA,cACA,iDAAA;AAAA,cACA,QAAA,IAAY,OAAA;AAAA,cACZ,SAAA,IAAa,OAAA;AAAA,cACb,KAAA,IAAS,mDAAA;AAAA,cACT;AAAA,aACF;AAAA,YACC,GAAG;AAAA;AAAA,SACN;AAAA,QACC,SAAA,oBACCD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iHACZ,QAAA,EAAA,SAAA,EACH;AAAA,OAAA,EAEJ,CAAA;AAAA,MACC,KAAA,oBACCA,cAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA,MAAA,CAAA,EAAU,SAAA,EAAU,0BAAA,EAA2B,IAAA,EAAK,OAAA,EAClE,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,MAED,IAAA,IAAQ,CAAC,KAAA,oBACRA,cAAA,CAAC,GAAA,EAAA,EAAE,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA,KAAA,CAAA,EAAS,SAAA,EAAU,+BAAA,EACjC,QAAA,EAAA,IAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-AJKFRN2S.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n /** Sol taraf ikon veya element */\n leftIcon?: React.ReactNode;\n /** Sağ taraf ikon veya element */\n rightIcon?: React.ReactNode;\n /** Hata mesajı */\n error?: string;\n /** Label metni */\n label?: string;\n /** Yardımcı metin */\n hint?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, leftIcon, rightIcon, error, label, hint, id, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n return (\n <div className=\"w-full space-y-1.5\">\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-sm font-medium leading-none text-foreground\"\n >\n {label}\n </label>\n )}\n <div className=\"relative flex items-center\">\n {leftIcon && (\n <div className=\"absolute left-3 z-10 pointer-events-none flex items-center justify-center text-muted-foreground [&_svg]:h-4 [&_svg]:w-4 shrink-0\">\n {leftIcon}\n </div>\n )}\n <input\n id={inputId}\n type={type}\n ref={ref}\n aria-invalid={!!error}\n aria-describedby={\n error ? `${inputId}-error` : hint ? `${inputId}-hint` : undefined\n }\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm\",\n \"text-foreground placeholder:text-muted-foreground\",\n \"transition-colors duration-150\",\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 leftIcon && \"!pl-9\",\n rightIcon && \"!pr-9\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n {...props}\n />\n {rightIcon && (\n <div className=\"absolute right-3 z-10 flex items-center justify-center text-muted-foreground [&_svg]:h-4 [&_svg]:w-4 shrink-0\">\n {rightIcon}\n </div>\n )}\n </div>\n {error && (\n <p id={`${inputId}-error`} className=\"text-xs text-destructive\" role=\"alert\">\n {error}\n </p>\n )}\n {hint && !error && (\n <p id={`${inputId}-hint`} className=\"text-xs text-muted-foreground\">\n {hint}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport { Input };\n"]}
@@ -0,0 +1,43 @@
1
+ import { toggleVariants } from './chunk-AHSY7OBX.mjs';
2
+ import { cn } from './chunk-UGOYALE6.mjs';
3
+ import * as React from 'react';
4
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var ToggleGroupContext = React.createContext({
8
+ size: "default",
9
+ variant: "default"
10
+ });
11
+ var ToggleGroup = React.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx(
12
+ ToggleGroupPrimitive.Root,
13
+ {
14
+ ref,
15
+ className: cn("flex items-center justify-center gap-1", className),
16
+ ...props,
17
+ children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
18
+ }
19
+ ));
20
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
21
+ var ToggleGroupItem = React.forwardRef(({ className, children, variant, size, ...props }, ref) => {
22
+ const context = React.useContext(ToggleGroupContext);
23
+ return /* @__PURE__ */ jsx(
24
+ ToggleGroupPrimitive.Item,
25
+ {
26
+ ref,
27
+ className: cn(
28
+ toggleVariants({
29
+ variant: context.variant || variant,
30
+ size: context.size || size
31
+ }),
32
+ className
33
+ ),
34
+ ...props,
35
+ children
36
+ }
37
+ );
38
+ });
39
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
40
+
41
+ export { ToggleGroup, ToggleGroupItem };
42
+ //# sourceMappingURL=chunk-ATUA2ZTW.mjs.map
43
+ //# sourceMappingURL=chunk-ATUA2ZTW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/toggle-group/index.tsx"],"names":[],"mappings":";;;;;;AAQA,IAAM,qBAA2B,KAAA,CAAA,aAAA,CAE/B;AAAA,EACA,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAC,CAAA;AAED,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA,CAIxB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACnD,GAAA;AAAA,EAAsB,oBAAA,CAAA,IAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,IAChE,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA,CAAC,mBAAmB,QAAA,EAAnB,EAA4B,OAAO,EAAE,OAAA,EAAS,IAAA,EAAK,EACjD,QAAA,EACH;AAAA;AACF,CACD;AAED,WAAA,CAAY,cAAmC,oBAAA,CAAA,IAAA,CAAK,WAAA;AAEpD,IAAM,eAAA,GAAwB,KAAA,CAAA,UAAA,CAI5B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC3D,EAAA,MAAM,OAAA,GAAgB,iBAAW,kBAAkB,CAAA;AAEnD,EAAA,uBACE,GAAA;AAAA,IAAsB,oBAAA,CAAA,IAAA;AAAA,IAArB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe;AAAA,UACb,OAAA,EAAS,QAAQ,OAAA,IAAW,OAAA;AAAA,UAC5B,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,SACvB,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,eAAA,CAAgB,cAAmC,oBAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-ATUA2ZTW.mjs","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { toggleVariants } from \"../toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n"]}
@@ -0,0 +1,150 @@
1
+ 'use strict';
2
+
3
+ var chunkCRTXVH5I_js = require('./chunk-CRTXVH5I.js');
4
+ var React = require('react');
5
+ var classVarianceAuthority = require('class-variance-authority');
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
+
29
+ var timelineItemVariants = classVarianceAuthority.cva(
30
+ "relative flex gap-4 pb-8 last:pb-0 group",
31
+ {
32
+ variants: {
33
+ status: {
34
+ default: "[&_[data-timeline-connector]]:bg-border",
35
+ completed: "[&_[data-timeline-connector]]:bg-primary [&_[data-timeline-icon]]:border-primary [&_[data-timeline-icon]]:bg-primary [&_[data-timeline-icon]]:text-primary-foreground",
36
+ active: "[&_[data-timeline-connector]]:bg-border [&_[data-timeline-icon]]:border-primary [&_[data-timeline-icon]]:ring-4 [&_[data-timeline-icon]]:ring-primary/20",
37
+ pending: "[&_[data-timeline-connector]]:bg-border/40 [&_[data-timeline-icon]]:border-border/60 [&_[data-timeline-icon]]:text-muted-foreground",
38
+ error: "[&_[data-timeline-connector]]:bg-destructive/40 [&_[data-timeline-icon]]:border-destructive [&_[data-timeline-icon]]:text-destructive"
39
+ }
40
+ },
41
+ defaultVariants: {
42
+ status: "default"
43
+ }
44
+ }
45
+ );
46
+ var Timeline = React__namespace.forwardRef(
47
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
48
+ "ol",
49
+ {
50
+ ref,
51
+ className: chunkCRTXVH5I_js.cn("flex flex-col relative", className),
52
+ ...props
53
+ }
54
+ )
55
+ );
56
+ Timeline.displayName = "Timeline";
57
+ var TimelineItem = React__namespace.forwardRef(
58
+ ({ className, status, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
59
+ "li",
60
+ {
61
+ ref,
62
+ className: chunkCRTXVH5I_js.cn(timelineItemVariants({ status }), className),
63
+ ...props
64
+ }
65
+ )
66
+ );
67
+ TimelineItem.displayName = "TimelineItem";
68
+ var TimelineConnector = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
69
+ "div",
70
+ {
71
+ ref,
72
+ "data-timeline-connector": "",
73
+ className: chunkCRTXVH5I_js.cn(
74
+ "absolute left-3.5 top-7 -bottom-1 w-px bg-border group-last:hidden transition-colors",
75
+ className
76
+ ),
77
+ ...props
78
+ }
79
+ ));
80
+ TimelineConnector.displayName = "TimelineConnector";
81
+ var TimelineIcon = React__namespace.forwardRef(
82
+ ({ className, status, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
83
+ "div",
84
+ {
85
+ ref,
86
+ "data-timeline-icon": "",
87
+ className: chunkCRTXVH5I_js.cn(
88
+ "relative z-10 flex h-7 w-7 shrink-0 items-center justify-center rounded-full border border-border bg-background text-xs font-semibold shadow-xs transition-all",
89
+ status === "completed" && "border-primary bg-primary text-primary-foreground",
90
+ status === "active" && "border-primary ring-4 ring-primary/20 bg-background text-primary",
91
+ status === "error" && "border-destructive bg-destructive/10 text-destructive",
92
+ className
93
+ ),
94
+ ...props,
95
+ children: children || (status === "completed" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-3.5 w-3.5" }) : status === "active" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-2 w-2 rounded-full bg-primary animate-pulse" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-2.5 w-2.5 fill-current opacity-40" }))
96
+ }
97
+ )
98
+ );
99
+ TimelineIcon.displayName = "TimelineIcon";
100
+ var TimelineHeader = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
101
+ "div",
102
+ {
103
+ ref,
104
+ className: chunkCRTXVH5I_js.cn("flex items-center justify-between gap-2", className),
105
+ ...props
106
+ }
107
+ ));
108
+ TimelineHeader.displayName = "TimelineHeader";
109
+ var TimelineTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
110
+ "h4",
111
+ {
112
+ ref,
113
+ className: chunkCRTXVH5I_js.cn("text-xs font-semibold text-foreground tracking-tight", className),
114
+ ...props
115
+ }
116
+ ));
117
+ TimelineTitle.displayName = "TimelineTitle";
118
+ var TimelineTime = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
119
+ "time",
120
+ {
121
+ ref,
122
+ className: chunkCRTXVH5I_js.cn("text-[11px] text-muted-foreground", className),
123
+ ...props
124
+ }
125
+ ));
126
+ TimelineTime.displayName = "TimelineTime";
127
+ var TimelineDescription = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
128
+ "p",
129
+ {
130
+ ref,
131
+ className: chunkCRTXVH5I_js.cn("text-xs text-muted-foreground mt-1 leading-relaxed", className),
132
+ ...props
133
+ }
134
+ ));
135
+ TimelineDescription.displayName = "TimelineDescription";
136
+ var TimelineContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: chunkCRTXVH5I_js.cn("flex-1 pt-0.5", className), ...props }));
137
+ TimelineContent.displayName = "TimelineContent";
138
+
139
+ exports.Timeline = Timeline;
140
+ exports.TimelineConnector = TimelineConnector;
141
+ exports.TimelineContent = TimelineContent;
142
+ exports.TimelineDescription = TimelineDescription;
143
+ exports.TimelineHeader = TimelineHeader;
144
+ exports.TimelineIcon = TimelineIcon;
145
+ exports.TimelineItem = TimelineItem;
146
+ exports.TimelineTime = TimelineTime;
147
+ exports.TimelineTitle = TimelineTitle;
148
+ exports.timelineItemVariants = timelineItemVariants;
149
+ //# sourceMappingURL=chunk-AXKXHRRM.js.map
150
+ //# sourceMappingURL=chunk-AXKXHRRM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/timeline/index.tsx"],"names":["cva","React","jsx","cn","Check","Circle"],"mappings":"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","file":"chunk-AXKXHRRM.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst timelineItemVariants = cva(\n \"relative flex gap-4 pb-8 last:pb-0 group\",\n {\n variants: {\n status: {\n default: \"[&_[data-timeline-connector]]:bg-border\",\n completed: \"[&_[data-timeline-connector]]:bg-primary [&_[data-timeline-icon]]:border-primary [&_[data-timeline-icon]]:bg-primary [&_[data-timeline-icon]]:text-primary-foreground\",\n active: \"[&_[data-timeline-connector]]:bg-border [&_[data-timeline-icon]]:border-primary [&_[data-timeline-icon]]:ring-4 [&_[data-timeline-icon]]:ring-primary/20\",\n pending: \"[&_[data-timeline-connector]]:bg-border/40 [&_[data-timeline-icon]]:border-border/60 [&_[data-timeline-icon]]:text-muted-foreground\",\n error: \"[&_[data-timeline-connector]]:bg-destructive/40 [&_[data-timeline-icon]]:border-destructive [&_[data-timeline-icon]]:text-destructive\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n);\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLOListElement> {}\n\nconst Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\"flex flex-col relative\", className)}\n {...props}\n />\n )\n);\nTimeline.displayName = \"Timeline\";\n\nexport interface TimelineItemProps\n extends React.LiHTMLAttributes<HTMLLIElement>,\n VariantProps<typeof timelineItemVariants> {}\n\nconst TimelineItem = React.forwardRef<HTMLLIElement, TimelineItemProps>(\n ({ className, status, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(timelineItemVariants({ status }), className)}\n {...props}\n />\n )\n);\nTimelineItem.displayName = \"TimelineItem\";\n\nconst TimelineConnector = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-timeline-connector=\"\"\n className={cn(\n \"absolute left-3.5 top-7 -bottom-1 w-px bg-border group-last:hidden transition-colors\",\n className\n )}\n {...props}\n />\n));\nTimelineConnector.displayName = \"TimelineConnector\";\n\nexport interface TimelineIconProps extends React.HTMLAttributes<HTMLDivElement> {\n status?: \"default\" | \"completed\" | \"active\" | \"pending\" | \"error\";\n}\n\nconst TimelineIcon = React.forwardRef<HTMLDivElement, TimelineIconProps>(\n ({ className, status, children, ...props }, ref) => (\n <div\n ref={ref}\n data-timeline-icon=\"\"\n className={cn(\n \"relative z-10 flex h-7 w-7 shrink-0 items-center justify-center rounded-full border border-border bg-background text-xs font-semibold shadow-xs transition-all\",\n status === \"completed\" && \"border-primary bg-primary text-primary-foreground\",\n status === \"active\" && \"border-primary ring-4 ring-primary/20 bg-background text-primary\",\n status === \"error\" && \"border-destructive bg-destructive/10 text-destructive\",\n className\n )}\n {...props}\n >\n {children ||\n (status === \"completed\" ? (\n <Check className=\"h-3.5 w-3.5\" />\n ) : status === \"active\" ? (\n <span className=\"h-2 w-2 rounded-full bg-primary animate-pulse\" />\n ) : (\n <Circle className=\"h-2.5 w-2.5 fill-current opacity-40\" />\n ))}\n </div>\n )\n);\nTimelineIcon.displayName = \"TimelineIcon\";\n\nconst TimelineHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-between gap-2\", className)}\n {...props}\n />\n));\nTimelineHeader.displayName = \"TimelineHeader\";\n\nconst TimelineTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h4\n ref={ref}\n className={cn(\"text-xs font-semibold text-foreground tracking-tight\", className)}\n {...props}\n />\n));\nTimelineTitle.displayName = \"TimelineTitle\";\n\nconst TimelineTime = React.forwardRef<\n HTMLTimeElement,\n React.TimeHTMLAttributes<HTMLTimeElement>\n>(({ className, ...props }, ref) => (\n <time\n ref={ref}\n className={cn(\"text-[11px] text-muted-foreground\", className)}\n {...props}\n />\n));\nTimelineTime.displayName = \"TimelineTime\";\n\nconst TimelineDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-xs text-muted-foreground mt-1 leading-relaxed\", className)}\n {...props}\n />\n));\nTimelineDescription.displayName = \"TimelineDescription\";\n\nconst TimelineContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex-1 pt-0.5\", className)} {...props} />\n));\nTimelineContent.displayName = \"TimelineContent\";\n\nexport {\n Timeline,\n TimelineItem,\n TimelineConnector,\n TimelineIcon,\n TimelineHeader,\n TimelineTitle,\n TimelineTime,\n TimelineDescription,\n TimelineContent,\n timelineItemVariants,\n};\n"]}
@@ -0,0 +1,239 @@
1
+ 'use strict';
2
+
3
+ var chunkQ2PPWNO3_js = require('./chunk-Q2PPWNO3.js');
4
+ var chunkPYCBM7ZF_js = require('./chunk-PYCBM7ZF.js');
5
+ var chunkCRTXVH5I_js = require('./chunk-CRTXVH5I.js');
6
+ var React = require('react');
7
+ var lucideReact = require('lucide-react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
+
30
+ function formatBytes(bytes) {
31
+ if (bytes === 0) return "0 Bytes";
32
+ const k = 1024;
33
+ const sizes = ["Bytes", "KB", "MB", "GB"];
34
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
35
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
36
+ }
37
+ function getFileIcon(file) {
38
+ if (file.type.startsWith("image/")) {
39
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileImage, { className: "h-5 w-5 text-sky-400" });
40
+ }
41
+ if (file.type.includes("pdf") || file.type.includes("document") || file.type.includes("text")) {
42
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "h-5 w-5 text-indigo-400" });
43
+ }
44
+ if (file.type.includes("zip") || file.type.includes("rar") || file.type.includes("tar")) {
45
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileArchive, { className: "h-5 w-5 text-amber-400" });
46
+ }
47
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.File, { className: "h-5 w-5 text-muted-foreground" });
48
+ }
49
+ function FileUploader({
50
+ maxSizeMB = 5,
51
+ maxFiles = 5,
52
+ accept = "image/*,.pdf,.docx,.zip",
53
+ onChange,
54
+ className
55
+ }) {
56
+ const [files, setFiles] = React__namespace.useState([]);
57
+ const [isDragging, setIsDragging] = React__namespace.useState(false);
58
+ const fileInputRef = React__namespace.useRef(null);
59
+ const handleFiles = (incomingFiles) => {
60
+ const validFiles = [];
61
+ const maxSizeBytes = maxSizeMB * 1024 * 1024;
62
+ Array.from(incomingFiles).forEach((file) => {
63
+ if (files.length + validFiles.length >= maxFiles) return;
64
+ if (file.size > maxSizeBytes) {
65
+ validFiles.push({
66
+ id: Math.random().toString(36).substring(2, 9),
67
+ file,
68
+ progress: 0,
69
+ status: "error",
70
+ error: `Maksimum ${maxSizeMB}MB a\u015Famaz.`
71
+ });
72
+ } else {
73
+ validFiles.push({
74
+ id: Math.random().toString(36).substring(2, 9),
75
+ file,
76
+ progress: 0,
77
+ status: "uploading"
78
+ });
79
+ }
80
+ });
81
+ const updated = [...files, ...validFiles];
82
+ setFiles(updated);
83
+ if (onChange) {
84
+ onChange(updated.map((f) => f.file));
85
+ }
86
+ validFiles.forEach((item) => {
87
+ if (item.status === "uploading") {
88
+ let progress = 0;
89
+ const interval = setInterval(() => {
90
+ progress += Math.floor(Math.random() * 30) + 20;
91
+ if (progress >= 100) {
92
+ progress = 100;
93
+ clearInterval(interval);
94
+ setFiles(
95
+ (prev) => prev.map(
96
+ (f) => f.id === item.id ? { ...f, progress: 100, status: "completed" } : f
97
+ )
98
+ );
99
+ } else {
100
+ setFiles(
101
+ (prev) => prev.map((f) => f.id === item.id ? { ...f, progress } : f)
102
+ );
103
+ }
104
+ }, 300);
105
+ }
106
+ });
107
+ };
108
+ const handleDragOver = (e) => {
109
+ e.preventDefault();
110
+ setIsDragging(true);
111
+ };
112
+ const handleDragLeave = (e) => {
113
+ e.preventDefault();
114
+ setIsDragging(false);
115
+ };
116
+ const handleDrop = (e) => {
117
+ e.preventDefault();
118
+ setIsDragging(false);
119
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
120
+ handleFiles(e.dataTransfer.files);
121
+ }
122
+ };
123
+ const removeFile = (id) => {
124
+ const updated = files.filter((f) => f.id !== id);
125
+ setFiles(updated);
126
+ if (onChange) {
127
+ onChange(updated.map((f) => f.file));
128
+ }
129
+ };
130
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkCRTXVH5I_js.cn("space-y-4 w-full", className), children: [
131
+ /* @__PURE__ */ jsxRuntime.jsxs(
132
+ "div",
133
+ {
134
+ onDragOver: handleDragOver,
135
+ onDragLeave: handleDragLeave,
136
+ onDrop: handleDrop,
137
+ onClick: () => fileInputRef.current?.click(),
138
+ className: chunkCRTXVH5I_js.cn(
139
+ "group relative flex flex-col items-center justify-center rounded-xl border-2 border-dashed border-border bg-card p-6 text-center transition-all cursor-pointer hover:border-primary/50 hover:bg-accent/40",
140
+ isDragging && "border-primary bg-primary/5 ring-4 ring-primary/10"
141
+ ),
142
+ children: [
143
+ /* @__PURE__ */ jsxRuntime.jsx(
144
+ "input",
145
+ {
146
+ ref: fileInputRef,
147
+ type: "file",
148
+ multiple: true,
149
+ accept,
150
+ className: "hidden",
151
+ onChange: (e) => {
152
+ if (e.target.files) handleFiles(e.target.files);
153
+ }
154
+ }
155
+ ),
156
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-muted transition-transform group-hover:scale-110", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UploadCloud, { className: "h-6 w-6 text-primary" }) }),
157
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 space-y-1", children: [
158
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-foreground", children: "Dosya y\xFCklemek i\xE7in t\u0131klay\u0131n veya buraya s\xFCr\xFCkleyin" }),
159
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", children: [
160
+ "Desteklenenler: PNG, JPG, PDF, DOCX (Maks ",
161
+ maxSizeMB,
162
+ "MB, en fazla ",
163
+ maxFiles,
164
+ " dosya)"
165
+ ] })
166
+ ] })
167
+ ]
168
+ }
169
+ ),
170
+ files.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
171
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs font-medium text-muted-foreground px-1", children: [
172
+ "Y\xFCklenen Dosyalar (",
173
+ files.length,
174
+ "/",
175
+ maxFiles,
176
+ ")"
177
+ ] }),
178
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: files.map((fileItem) => {
179
+ const isImage = fileItem.file.type.startsWith("image/");
180
+ const previewUrl = isImage ? URL.createObjectURL(fileItem.file) : null;
181
+ return /* @__PURE__ */ jsxRuntime.jsxs(
182
+ "div",
183
+ {
184
+ className: "flex items-center gap-3 rounded-lg border border-border bg-card p-3 shadow-2xs transition-all",
185
+ children: [
186
+ previewUrl ? /* @__PURE__ */ jsxRuntime.jsx(
187
+ "img",
188
+ {
189
+ src: previewUrl,
190
+ alt: fileItem.file.name,
191
+ className: "h-10 w-10 rounded-md object-cover border border-border"
192
+ }
193
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-muted", children: getFileIcon(fileItem.file) }),
194
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0 space-y-1", children: [
195
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-xs", children: [
196
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium truncate text-foreground", children: fileItem.file.name }),
197
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground shrink-0 ml-2", children: formatBytes(fileItem.file.size) })
198
+ ] }),
199
+ fileItem.status === "uploading" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
200
+ /* @__PURE__ */ jsxRuntime.jsx(chunkQ2PPWNO3_js.Progress, { value: fileItem.progress, className: "h-1.5" }),
201
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[10px] text-muted-foreground text-right", children: [
202
+ "%",
203
+ fileItem.progress
204
+ ] })
205
+ ] }),
206
+ fileItem.status === "completed" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 text-[11px] text-emerald-500 font-medium", children: [
207
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "h-3.5 w-3.5" }),
208
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Y\xFCklendi" })
209
+ ] }),
210
+ fileItem.status === "error" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 text-[11px] text-destructive font-medium", children: [
211
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "h-3.5 w-3.5" }),
212
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: fileItem.error || "Y\xFCkleme hatas\u0131" })
213
+ ] })
214
+ ] }),
215
+ /* @__PURE__ */ jsxRuntime.jsx(
216
+ chunkPYCBM7ZF_js.Button,
217
+ {
218
+ variant: "ghost",
219
+ size: "icon",
220
+ className: "h-8 w-8 text-muted-foreground hover:text-foreground shrink-0",
221
+ onClick: (e) => {
222
+ e.stopPropagation();
223
+ removeFile(fileItem.id);
224
+ },
225
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" })
226
+ }
227
+ )
228
+ ]
229
+ },
230
+ fileItem.id
231
+ );
232
+ }) })
233
+ ] })
234
+ ] });
235
+ }
236
+
237
+ exports.FileUploader = FileUploader;
238
+ //# sourceMappingURL=chunk-BCOH5AWH.js.map
239
+ //# sourceMappingURL=chunk-BCOH5AWH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/blocks/file-uploader/index.tsx"],"names":["jsx","FileImage","FileText","FileArchive","FileIcon","React","cn","jsxs","UploadCloud","Progress","CheckCircle2","AlertCircle","Button","X"],"mappings":"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","file":"chunk-BCOH5AWH.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UploadCloud,\n X,\n FileText,\n FileImage,\n FileArchive,\n File as FileIcon,\n CheckCircle2,\n AlertCircle,\n} from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Progress } from \"../../components/progress\";\n\nexport interface FileItem {\n id: string;\n file: File;\n progress: number;\n status: \"uploading\" | \"completed\" | \"error\";\n error?: string;\n}\n\nexport interface FileUploaderProps {\n maxSizeMB?: number; // Varsayılan 5 MB\n maxFiles?: number; // Varsayılan 5 dosya\n accept?: string; // örn: \"image/*,.pdf,.zip\"\n onChange?: (files: File[]) => void;\n className?: string;\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n}\n\nfunction getFileIcon(file: File) {\n if (file.type.startsWith(\"image/\")) {\n return <FileImage className=\"h-5 w-5 text-sky-400\" />;\n }\n if (file.type.includes(\"pdf\") || file.type.includes(\"document\") || file.type.includes(\"text\")) {\n return <FileText className=\"h-5 w-5 text-indigo-400\" />;\n }\n if (file.type.includes(\"zip\") || file.type.includes(\"rar\") || file.type.includes(\"tar\")) {\n return <FileArchive className=\"h-5 w-5 text-amber-400\" />;\n }\n return <FileIcon className=\"h-5 w-5 text-muted-foreground\" />;\n}\n\nexport function FileUploader({\n maxSizeMB = 5,\n maxFiles = 5,\n accept = \"image/*,.pdf,.docx,.zip\",\n onChange,\n className,\n}: FileUploaderProps) {\n const [files, setFiles] = React.useState<FileItem[]>([]);\n const [isDragging, setIsDragging] = React.useState(false);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n const handleFiles = (incomingFiles: FileList | File[]) => {\n const validFiles: FileItem[] = [];\n const maxSizeBytes = maxSizeMB * 1024 * 1024;\n\n Array.from(incomingFiles).forEach((file) => {\n if (files.length + validFiles.length >= maxFiles) return;\n\n if (file.size > maxSizeBytes) {\n validFiles.push({\n id: Math.random().toString(36).substring(2, 9),\n file,\n progress: 0,\n status: \"error\",\n error: `Maksimum ${maxSizeMB}MB aşamaz.`,\n });\n } else {\n validFiles.push({\n id: Math.random().toString(36).substring(2, 9),\n file,\n progress: 0,\n status: \"uploading\",\n });\n }\n });\n\n const updated = [...files, ...validFiles];\n setFiles(updated);\n if (onChange) {\n onChange(updated.map((f) => f.file));\n }\n\n // Yükleme simülasyonu\n validFiles.forEach((item) => {\n if (item.status === \"uploading\") {\n let progress = 0;\n const interval = setInterval(() => {\n progress += Math.floor(Math.random() * 30) + 20;\n if (progress >= 100) {\n progress = 100;\n clearInterval(interval);\n setFiles((prev) =>\n prev.map((f) =>\n f.id === item.id ? { ...f, progress: 100, status: \"completed\" } : f\n )\n );\n } else {\n setFiles((prev) =>\n prev.map((f) => (f.id === item.id ? { ...f, progress } : f))\n );\n }\n }, 300);\n }\n });\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n handleFiles(e.dataTransfer.files);\n }\n };\n\n const removeFile = (id: string) => {\n const updated = files.filter((f) => f.id !== id);\n setFiles(updated);\n if (onChange) {\n onChange(updated.map((f) => f.file));\n }\n };\n\n return (\n <div className={cn(\"space-y-4 w-full\", className)}>\n {/* Sürükle Bırak Alanı */}\n <div\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => fileInputRef.current?.click()}\n className={cn(\n \"group relative flex flex-col items-center justify-center rounded-xl border-2 border-dashed border-border bg-card p-6 text-center transition-all cursor-pointer hover:border-primary/50 hover:bg-accent/40\",\n isDragging && \"border-primary bg-primary/5 ring-4 ring-primary/10\"\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n accept={accept}\n className=\"hidden\"\n onChange={(e) => {\n if (e.target.files) handleFiles(e.target.files);\n }}\n />\n\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-muted transition-transform group-hover:scale-110\">\n <UploadCloud className=\"h-6 w-6 text-primary\" />\n </div>\n\n <div className=\"mt-3 space-y-1\">\n <p className=\"text-sm font-semibold text-foreground\">\n Dosya yüklemek için tıklayın veya buraya sürükleyin\n </p>\n <p className=\"text-xs text-muted-foreground\">\n Desteklenenler: PNG, JPG, PDF, DOCX (Maks {maxSizeMB}MB, en fazla {maxFiles} dosya)\n </p>\n </div>\n </div>\n\n {/* Yüklenen Dosya Listesi */}\n {files.length > 0 && (\n <div className=\"space-y-2\">\n <p className=\"text-xs font-medium text-muted-foreground px-1\">\n Yüklenen Dosyalar ({files.length}/{maxFiles})\n </p>\n <div className=\"space-y-2\">\n {files.map((fileItem) => {\n const isImage = fileItem.file.type.startsWith(\"image/\");\n const previewUrl = isImage ? URL.createObjectURL(fileItem.file) : null;\n\n return (\n <div\n key={fileItem.id}\n className=\"flex items-center gap-3 rounded-lg border border-border bg-card p-3 shadow-2xs transition-all\"\n >\n {/* Dosya İkonu veya Görsel Önizleme */}\n {previewUrl ? (\n <img\n src={previewUrl}\n alt={fileItem.file.name}\n className=\"h-10 w-10 rounded-md object-cover border border-border\"\n />\n ) : (\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-muted\">\n {getFileIcon(fileItem.file)}\n </div>\n )}\n\n {/* Dosya Detayları & İlerleme Barı */}\n <div className=\"flex-1 min-w-0 space-y-1\">\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"font-medium truncate text-foreground\">\n {fileItem.file.name}\n </span>\n <span className=\"text-muted-foreground shrink-0 ml-2\">\n {formatBytes(fileItem.file.size)}\n </span>\n </div>\n\n {fileItem.status === \"uploading\" && (\n <div className=\"space-y-1\">\n <Progress value={fileItem.progress} className=\"h-1.5\" />\n <div className=\"text-[10px] text-muted-foreground text-right\">\n %{fileItem.progress}\n </div>\n </div>\n )}\n\n {fileItem.status === \"completed\" && (\n <div className=\"flex items-center gap-1 text-[11px] text-emerald-500 font-medium\">\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n <span>Yüklendi</span>\n </div>\n )}\n\n {fileItem.status === \"error\" && (\n <div className=\"flex items-center gap-1 text-[11px] text-destructive font-medium\">\n <AlertCircle className=\"h-3.5 w-3.5\" />\n <span>{fileItem.error || \"Yükleme hatası\"}</span>\n </div>\n )}\n </div>\n\n {/* Silme Butonu */}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground shrink-0\"\n onClick={(e) => {\n e.stopPropagation();\n removeFile(fileItem.id);\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}