@jarllyng/nostromo 3.1.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 (417) hide show
  1. package/dist/base.css +312 -0
  2. package/dist/chunk-2DNQXAMB.cjs +2 -0
  3. package/dist/chunk-2DNQXAMB.cjs.map +1 -0
  4. package/dist/chunk-2JQROMCM.js +2 -0
  5. package/dist/chunk-2JQROMCM.js.map +1 -0
  6. package/dist/chunk-3BNGK67W.js +2 -0
  7. package/dist/chunk-3BNGK67W.js.map +1 -0
  8. package/dist/chunk-3V3OIZWQ.cjs +2 -0
  9. package/dist/chunk-3V3OIZWQ.cjs.map +1 -0
  10. package/dist/chunk-44HISN45.js +2 -0
  11. package/dist/chunk-44HISN45.js.map +1 -0
  12. package/dist/chunk-4FSJEW7W.cjs +2 -0
  13. package/dist/chunk-4FSJEW7W.cjs.map +1 -0
  14. package/dist/chunk-4PN7OGLX.cjs +2 -0
  15. package/dist/chunk-4PN7OGLX.cjs.map +1 -0
  16. package/dist/chunk-4TYVEXRA.cjs +2 -0
  17. package/dist/chunk-4TYVEXRA.cjs.map +1 -0
  18. package/dist/chunk-4WFEVNXW.cjs +2 -0
  19. package/dist/chunk-4WFEVNXW.cjs.map +1 -0
  20. package/dist/chunk-55N2IT62.cjs +2 -0
  21. package/dist/chunk-55N2IT62.cjs.map +1 -0
  22. package/dist/chunk-5PVFLXPO.cjs +3 -0
  23. package/dist/chunk-5PVFLXPO.cjs.map +1 -0
  24. package/dist/chunk-6QAYHUNV.js +3 -0
  25. package/dist/chunk-6QAYHUNV.js.map +1 -0
  26. package/dist/chunk-7PPAI3MM.cjs +2 -0
  27. package/dist/chunk-7PPAI3MM.cjs.map +1 -0
  28. package/dist/chunk-7SPPGTBT.cjs +2 -0
  29. package/dist/chunk-7SPPGTBT.cjs.map +1 -0
  30. package/dist/chunk-7W456HZL.js +2 -0
  31. package/dist/chunk-7W456HZL.js.map +1 -0
  32. package/dist/chunk-7WEIVLG3.cjs +2 -0
  33. package/dist/chunk-7WEIVLG3.cjs.map +1 -0
  34. package/dist/chunk-7YFUAGIW.cjs +2 -0
  35. package/dist/chunk-7YFUAGIW.cjs.map +1 -0
  36. package/dist/chunk-ABA7B5DE.js +2 -0
  37. package/dist/chunk-ABA7B5DE.js.map +1 -0
  38. package/dist/chunk-AC2JBXHQ.js +2 -0
  39. package/dist/chunk-AC2JBXHQ.js.map +1 -0
  40. package/dist/chunk-AHRTNKXE.js +2 -0
  41. package/dist/chunk-AHRTNKXE.js.map +1 -0
  42. package/dist/chunk-AVTJE2O2.js +3 -0
  43. package/dist/chunk-AVTJE2O2.js.map +1 -0
  44. package/dist/chunk-B2BWBKZA.cjs +2 -0
  45. package/dist/chunk-B2BWBKZA.cjs.map +1 -0
  46. package/dist/chunk-BSUHBLZO.cjs +2 -0
  47. package/dist/chunk-BSUHBLZO.cjs.map +1 -0
  48. package/dist/chunk-BYV75TDY.cjs +2 -0
  49. package/dist/chunk-BYV75TDY.cjs.map +1 -0
  50. package/dist/chunk-BZF3ZOAN.js +3 -0
  51. package/dist/chunk-BZF3ZOAN.js.map +1 -0
  52. package/dist/chunk-CEMOHO3Z.js +2 -0
  53. package/dist/chunk-CEMOHO3Z.js.map +1 -0
  54. package/dist/chunk-COXN6XBA.js +2 -0
  55. package/dist/chunk-COXN6XBA.js.map +1 -0
  56. package/dist/chunk-CVOSWGQZ.js +2 -0
  57. package/dist/chunk-CVOSWGQZ.js.map +1 -0
  58. package/dist/chunk-EFCNLYYW.cjs +2 -0
  59. package/dist/chunk-EFCNLYYW.cjs.map +1 -0
  60. package/dist/chunk-EGQ2Q37R.cjs +2 -0
  61. package/dist/chunk-EGQ2Q37R.cjs.map +1 -0
  62. package/dist/chunk-EIXD3Y4R.js +2 -0
  63. package/dist/chunk-EIXD3Y4R.js.map +1 -0
  64. package/dist/chunk-EVRQYWZ3.cjs +2 -0
  65. package/dist/chunk-EVRQYWZ3.cjs.map +1 -0
  66. package/dist/chunk-FUENXWR7.cjs +2 -0
  67. package/dist/chunk-FUENXWR7.cjs.map +1 -0
  68. package/dist/chunk-G35BR7SK.cjs +2 -0
  69. package/dist/chunk-G35BR7SK.cjs.map +1 -0
  70. package/dist/chunk-G5ZSOVJY.cjs +2 -0
  71. package/dist/chunk-G5ZSOVJY.cjs.map +1 -0
  72. package/dist/chunk-G6TR5RGR.js +2 -0
  73. package/dist/chunk-G6TR5RGR.js.map +1 -0
  74. package/dist/chunk-GUJB555L.js +2 -0
  75. package/dist/chunk-GUJB555L.js.map +1 -0
  76. package/dist/chunk-HD3TMQPR.js +2 -0
  77. package/dist/chunk-HD3TMQPR.js.map +1 -0
  78. package/dist/chunk-HWZTMVQV.cjs +2 -0
  79. package/dist/chunk-HWZTMVQV.cjs.map +1 -0
  80. package/dist/chunk-IOX4WPJL.cjs +2 -0
  81. package/dist/chunk-IOX4WPJL.cjs.map +1 -0
  82. package/dist/chunk-ITRGJNWL.cjs +2 -0
  83. package/dist/chunk-ITRGJNWL.cjs.map +1 -0
  84. package/dist/chunk-J4VRJVTO.cjs +2 -0
  85. package/dist/chunk-J4VRJVTO.cjs.map +1 -0
  86. package/dist/chunk-JEHIMQQZ.js +2 -0
  87. package/dist/chunk-JEHIMQQZ.js.map +1 -0
  88. package/dist/chunk-JUOCEYUF.cjs +2 -0
  89. package/dist/chunk-JUOCEYUF.cjs.map +1 -0
  90. package/dist/chunk-JZROH43C.js +2 -0
  91. package/dist/chunk-JZROH43C.js.map +1 -0
  92. package/dist/chunk-K2JCGDU7.cjs +3 -0
  93. package/dist/chunk-K2JCGDU7.cjs.map +1 -0
  94. package/dist/chunk-LR4VUFOQ.js +2 -0
  95. package/dist/chunk-LR4VUFOQ.js.map +1 -0
  96. package/dist/chunk-LXQT7FH6.cjs +2 -0
  97. package/dist/chunk-LXQT7FH6.cjs.map +1 -0
  98. package/dist/chunk-LYVCB45L.js +2 -0
  99. package/dist/chunk-LYVCB45L.js.map +1 -0
  100. package/dist/chunk-M5IBD3KV.js +2 -0
  101. package/dist/chunk-M5IBD3KV.js.map +1 -0
  102. package/dist/chunk-MLJZU63I.cjs +2 -0
  103. package/dist/chunk-MLJZU63I.cjs.map +1 -0
  104. package/dist/chunk-MLSE5XSB.cjs +3 -0
  105. package/dist/chunk-MLSE5XSB.cjs.map +1 -0
  106. package/dist/chunk-MRZOLUSF.js +2 -0
  107. package/dist/chunk-MRZOLUSF.js.map +1 -0
  108. package/dist/chunk-MVCGR7JQ.js +2 -0
  109. package/dist/chunk-MVCGR7JQ.js.map +1 -0
  110. package/dist/chunk-NLD4R74T.js +2 -0
  111. package/dist/chunk-NLD4R74T.js.map +1 -0
  112. package/dist/chunk-OEN63W3G.cjs +2 -0
  113. package/dist/chunk-OEN63W3G.cjs.map +1 -0
  114. package/dist/chunk-OUWOPYAX.js +2 -0
  115. package/dist/chunk-OUWOPYAX.js.map +1 -0
  116. package/dist/chunk-OZ3RIKZO.cjs +2 -0
  117. package/dist/chunk-OZ3RIKZO.cjs.map +1 -0
  118. package/dist/chunk-PEYPRWZP.js +2 -0
  119. package/dist/chunk-PEYPRWZP.js.map +1 -0
  120. package/dist/chunk-PMNNV4ML.cjs +2 -0
  121. package/dist/chunk-PMNNV4ML.cjs.map +1 -0
  122. package/dist/chunk-PVHTEE5T.cjs +2 -0
  123. package/dist/chunk-PVHTEE5T.cjs.map +1 -0
  124. package/dist/chunk-Q6QMSAJR.js +2 -0
  125. package/dist/chunk-Q6QMSAJR.js.map +1 -0
  126. package/dist/chunk-QBAURT3I.js +2 -0
  127. package/dist/chunk-QBAURT3I.js.map +1 -0
  128. package/dist/chunk-QF5CRDZI.js +2 -0
  129. package/dist/chunk-QF5CRDZI.js.map +1 -0
  130. package/dist/chunk-RC2THAIA.js +2 -0
  131. package/dist/chunk-RC2THAIA.js.map +1 -0
  132. package/dist/chunk-RPRISB7O.cjs +2 -0
  133. package/dist/chunk-RPRISB7O.cjs.map +1 -0
  134. package/dist/chunk-SD4IIQ2I.cjs +2 -0
  135. package/dist/chunk-SD4IIQ2I.cjs.map +1 -0
  136. package/dist/chunk-SLGMKBST.js +2 -0
  137. package/dist/chunk-SLGMKBST.js.map +1 -0
  138. package/dist/chunk-TGPWW7FC.js +2 -0
  139. package/dist/chunk-TGPWW7FC.js.map +1 -0
  140. package/dist/chunk-TJFZAMBB.js +2 -0
  141. package/dist/chunk-TJFZAMBB.js.map +1 -0
  142. package/dist/chunk-UL6MF7ES.js +2 -0
  143. package/dist/chunk-UL6MF7ES.js.map +1 -0
  144. package/dist/chunk-V77N662N.cjs +2 -0
  145. package/dist/chunk-V77N662N.cjs.map +1 -0
  146. package/dist/chunk-VD6S2PE4.js +2 -0
  147. package/dist/chunk-VD6S2PE4.js.map +1 -0
  148. package/dist/chunk-VXMDVKAD.js +2 -0
  149. package/dist/chunk-VXMDVKAD.js.map +1 -0
  150. package/dist/chunk-WW2DDHCI.js +2 -0
  151. package/dist/chunk-WW2DDHCI.js.map +1 -0
  152. package/dist/chunk-XPIBRXTW.cjs +2 -0
  153. package/dist/chunk-XPIBRXTW.cjs.map +1 -0
  154. package/dist/chunk-XQUZ7DUN.js +2 -0
  155. package/dist/chunk-XQUZ7DUN.js.map +1 -0
  156. package/dist/chunk-YNSODGYK.js +2 -0
  157. package/dist/chunk-YNSODGYK.js.map +1 -0
  158. package/dist/chunk-ZC4HJSII.cjs +2 -0
  159. package/dist/chunk-ZC4HJSII.cjs.map +1 -0
  160. package/dist/chunk-ZEJAFIOC.js +2 -0
  161. package/dist/chunk-ZEJAFIOC.js.map +1 -0
  162. package/dist/chunk-ZQDFYSZB.cjs +2 -0
  163. package/dist/chunk-ZQDFYSZB.cjs.map +1 -0
  164. package/dist/chunk-ZYP2PDSX.cjs +2 -0
  165. package/dist/chunk-ZYP2PDSX.cjs.map +1 -0
  166. package/dist/components/core/accordion.cjs +2 -0
  167. package/dist/components/core/accordion.cjs.map +1 -0
  168. package/dist/components/core/accordion.d.cts +53 -0
  169. package/dist/components/core/accordion.d.ts +53 -0
  170. package/dist/components/core/accordion.js +2 -0
  171. package/dist/components/core/accordion.js.map +1 -0
  172. package/dist/components/core/alert.cjs +2 -0
  173. package/dist/components/core/alert.cjs.map +1 -0
  174. package/dist/components/core/alert.d.cts +29 -0
  175. package/dist/components/core/alert.d.ts +29 -0
  176. package/dist/components/core/alert.js +2 -0
  177. package/dist/components/core/alert.js.map +1 -0
  178. package/dist/components/core/avatar.cjs +2 -0
  179. package/dist/components/core/avatar.cjs.map +1 -0
  180. package/dist/components/core/avatar.d.cts +22 -0
  181. package/dist/components/core/avatar.d.ts +22 -0
  182. package/dist/components/core/avatar.js +2 -0
  183. package/dist/components/core/avatar.js.map +1 -0
  184. package/dist/components/core/badge.cjs +2 -0
  185. package/dist/components/core/badge.cjs.map +1 -0
  186. package/dist/components/core/badge.d.cts +43 -0
  187. package/dist/components/core/badge.d.ts +43 -0
  188. package/dist/components/core/badge.js +2 -0
  189. package/dist/components/core/badge.js.map +1 -0
  190. package/dist/components/core/breadcrumb.cjs +2 -0
  191. package/dist/components/core/breadcrumb.cjs.map +1 -0
  192. package/dist/components/core/breadcrumb.d.cts +43 -0
  193. package/dist/components/core/breadcrumb.d.ts +43 -0
  194. package/dist/components/core/breadcrumb.js +2 -0
  195. package/dist/components/core/breadcrumb.js.map +1 -0
  196. package/dist/components/core/button.cjs +2 -0
  197. package/dist/components/core/button.cjs.map +1 -0
  198. package/dist/components/core/button.d.cts +39 -0
  199. package/dist/components/core/button.d.ts +39 -0
  200. package/dist/components/core/button.js +2 -0
  201. package/dist/components/core/button.js.map +1 -0
  202. package/dist/components/core/calendar.cjs +2 -0
  203. package/dist/components/core/calendar.cjs.map +1 -0
  204. package/dist/components/core/calendar.d.cts +45 -0
  205. package/dist/components/core/calendar.d.ts +45 -0
  206. package/dist/components/core/calendar.js +2 -0
  207. package/dist/components/core/calendar.js.map +1 -0
  208. package/dist/components/core/card.cjs +2 -0
  209. package/dist/components/core/card.cjs.map +1 -0
  210. package/dist/components/core/card.d.cts +26 -0
  211. package/dist/components/core/card.d.ts +26 -0
  212. package/dist/components/core/card.js +2 -0
  213. package/dist/components/core/card.js.map +1 -0
  214. package/dist/components/core/charts-lazy.cjs +2 -0
  215. package/dist/components/core/charts-lazy.cjs.map +1 -0
  216. package/dist/components/core/charts-lazy.d.cts +31 -0
  217. package/dist/components/core/charts-lazy.d.ts +31 -0
  218. package/dist/components/core/charts-lazy.js +2 -0
  219. package/dist/components/core/charts-lazy.js.map +1 -0
  220. package/dist/components/core/charts.cjs +2 -0
  221. package/dist/components/core/charts.cjs.map +1 -0
  222. package/dist/components/core/charts.d.cts +35 -0
  223. package/dist/components/core/charts.d.ts +35 -0
  224. package/dist/components/core/charts.js +2 -0
  225. package/dist/components/core/charts.js.map +1 -0
  226. package/dist/components/core/checkbox.cjs +2 -0
  227. package/dist/components/core/checkbox.cjs.map +1 -0
  228. package/dist/components/core/checkbox.d.cts +31 -0
  229. package/dist/components/core/checkbox.d.ts +31 -0
  230. package/dist/components/core/checkbox.js +2 -0
  231. package/dist/components/core/checkbox.js.map +1 -0
  232. package/dist/components/core/data-table.cjs +2 -0
  233. package/dist/components/core/data-table.cjs.map +1 -0
  234. package/dist/components/core/data-table.d.cts +54 -0
  235. package/dist/components/core/data-table.d.ts +54 -0
  236. package/dist/components/core/data-table.js +2 -0
  237. package/dist/components/core/data-table.js.map +1 -0
  238. package/dist/components/core/dialog.cjs +2 -0
  239. package/dist/components/core/dialog.cjs.map +1 -0
  240. package/dist/components/core/dialog.d.cts +34 -0
  241. package/dist/components/core/dialog.d.ts +34 -0
  242. package/dist/components/core/dialog.js +2 -0
  243. package/dist/components/core/dialog.js.map +1 -0
  244. package/dist/components/core/error-boundary.cjs +2 -0
  245. package/dist/components/core/error-boundary.cjs.map +1 -0
  246. package/dist/components/core/error-boundary.d.cts +35 -0
  247. package/dist/components/core/error-boundary.d.ts +35 -0
  248. package/dist/components/core/error-boundary.js +2 -0
  249. package/dist/components/core/error-boundary.js.map +1 -0
  250. package/dist/components/core/error-message.cjs +2 -0
  251. package/dist/components/core/error-message.cjs.map +1 -0
  252. package/dist/components/core/error-message.d.cts +13 -0
  253. package/dist/components/core/error-message.d.ts +13 -0
  254. package/dist/components/core/error-message.js +2 -0
  255. package/dist/components/core/error-message.js.map +1 -0
  256. package/dist/components/core/helper-text.cjs +2 -0
  257. package/dist/components/core/helper-text.cjs.map +1 -0
  258. package/dist/components/core/helper-text.d.cts +13 -0
  259. package/dist/components/core/helper-text.d.ts +13 -0
  260. package/dist/components/core/helper-text.js +2 -0
  261. package/dist/components/core/helper-text.js.map +1 -0
  262. package/dist/components/core/icon.cjs +2 -0
  263. package/dist/components/core/icon.cjs.map +1 -0
  264. package/dist/components/core/icon.d.cts +19 -0
  265. package/dist/components/core/icon.d.ts +19 -0
  266. package/dist/components/core/icon.js +2 -0
  267. package/dist/components/core/icon.js.map +1 -0
  268. package/dist/components/core/input.cjs +2 -0
  269. package/dist/components/core/input.cjs.map +1 -0
  270. package/dist/components/core/input.d.cts +18 -0
  271. package/dist/components/core/input.d.ts +18 -0
  272. package/dist/components/core/input.js +2 -0
  273. package/dist/components/core/input.js.map +1 -0
  274. package/dist/components/core/label.cjs +2 -0
  275. package/dist/components/core/label.cjs.map +1 -0
  276. package/dist/components/core/label.d.cts +14 -0
  277. package/dist/components/core/label.d.ts +14 -0
  278. package/dist/components/core/label.js +2 -0
  279. package/dist/components/core/label.js.map +1 -0
  280. package/dist/components/core/pagination.cjs +2 -0
  281. package/dist/components/core/pagination.cjs.map +1 -0
  282. package/dist/components/core/pagination.d.cts +32 -0
  283. package/dist/components/core/pagination.d.ts +32 -0
  284. package/dist/components/core/pagination.js +2 -0
  285. package/dist/components/core/pagination.js.map +1 -0
  286. package/dist/components/core/progress.cjs +2 -0
  287. package/dist/components/core/progress.cjs.map +1 -0
  288. package/dist/components/core/progress.d.cts +44 -0
  289. package/dist/components/core/progress.d.ts +44 -0
  290. package/dist/components/core/progress.js +2 -0
  291. package/dist/components/core/progress.js.map +1 -0
  292. package/dist/components/core/radio-group.cjs +2 -0
  293. package/dist/components/core/radio-group.cjs.map +1 -0
  294. package/dist/components/core/radio-group.d.cts +71 -0
  295. package/dist/components/core/radio-group.d.ts +71 -0
  296. package/dist/components/core/radio-group.js +2 -0
  297. package/dist/components/core/radio-group.js.map +1 -0
  298. package/dist/components/core/select.cjs +2 -0
  299. package/dist/components/core/select.cjs.map +1 -0
  300. package/dist/components/core/select.d.cts +41 -0
  301. package/dist/components/core/select.d.ts +41 -0
  302. package/dist/components/core/select.js +2 -0
  303. package/dist/components/core/select.js.map +1 -0
  304. package/dist/components/core/separator.cjs +2 -0
  305. package/dist/components/core/separator.cjs.map +1 -0
  306. package/dist/components/core/separator.d.cts +16 -0
  307. package/dist/components/core/separator.d.ts +16 -0
  308. package/dist/components/core/separator.js +2 -0
  309. package/dist/components/core/separator.js.map +1 -0
  310. package/dist/components/core/skeleton.cjs +2 -0
  311. package/dist/components/core/skeleton.cjs.map +1 -0
  312. package/dist/components/core/skeleton.d.cts +46 -0
  313. package/dist/components/core/skeleton.d.ts +46 -0
  314. package/dist/components/core/skeleton.js +2 -0
  315. package/dist/components/core/skeleton.js.map +1 -0
  316. package/dist/components/core/switch.cjs +2 -0
  317. package/dist/components/core/switch.cjs.map +1 -0
  318. package/dist/components/core/switch.d.cts +21 -0
  319. package/dist/components/core/switch.d.ts +21 -0
  320. package/dist/components/core/switch.js +2 -0
  321. package/dist/components/core/switch.js.map +1 -0
  322. package/dist/components/core/table.cjs +2 -0
  323. package/dist/components/core/table.cjs.map +1 -0
  324. package/dist/components/core/table.d.cts +84 -0
  325. package/dist/components/core/table.d.ts +84 -0
  326. package/dist/components/core/table.js +2 -0
  327. package/dist/components/core/table.js.map +1 -0
  328. package/dist/components/core/tabs.cjs +2 -0
  329. package/dist/components/core/tabs.cjs.map +1 -0
  330. package/dist/components/core/tabs.d.cts +28 -0
  331. package/dist/components/core/tabs.d.ts +28 -0
  332. package/dist/components/core/tabs.js +2 -0
  333. package/dist/components/core/tabs.js.map +1 -0
  334. package/dist/components/core/textarea.cjs +2 -0
  335. package/dist/components/core/textarea.cjs.map +1 -0
  336. package/dist/components/core/textarea.d.cts +18 -0
  337. package/dist/components/core/textarea.d.ts +18 -0
  338. package/dist/components/core/textarea.js +2 -0
  339. package/dist/components/core/textarea.js.map +1 -0
  340. package/dist/components/core/toast.cjs +2 -0
  341. package/dist/components/core/toast.cjs.map +1 -0
  342. package/dist/components/core/toast.d.cts +50 -0
  343. package/dist/components/core/toast.d.ts +50 -0
  344. package/dist/components/core/toast.js +2 -0
  345. package/dist/components/core/toast.js.map +1 -0
  346. package/dist/components/core/tooltip.cjs +2 -0
  347. package/dist/components/core/tooltip.cjs.map +1 -0
  348. package/dist/components/core/tooltip.d.cts +68 -0
  349. package/dist/components/core/tooltip.d.ts +68 -0
  350. package/dist/components/core/tooltip.js +2 -0
  351. package/dist/components/core/tooltip.js.map +1 -0
  352. package/dist/components/marketing/features.cjs +2 -0
  353. package/dist/components/marketing/features.cjs.map +1 -0
  354. package/dist/components/marketing/features.d.cts +35 -0
  355. package/dist/components/marketing/features.d.ts +35 -0
  356. package/dist/components/marketing/features.js +2 -0
  357. package/dist/components/marketing/features.js.map +1 -0
  358. package/dist/components/marketing/gallery.cjs +2 -0
  359. package/dist/components/marketing/gallery.cjs.map +1 -0
  360. package/dist/components/marketing/gallery.d.cts +38 -0
  361. package/dist/components/marketing/gallery.d.ts +38 -0
  362. package/dist/components/marketing/gallery.js +2 -0
  363. package/dist/components/marketing/gallery.js.map +1 -0
  364. package/dist/components/marketing/hero.cjs +2 -0
  365. package/dist/components/marketing/hero.cjs.map +1 -0
  366. package/dist/components/marketing/hero.d.cts +31 -0
  367. package/dist/components/marketing/hero.d.ts +31 -0
  368. package/dist/components/marketing/hero.js +2 -0
  369. package/dist/components/marketing/hero.js.map +1 -0
  370. package/dist/components/marketing/logo-wall.cjs +2 -0
  371. package/dist/components/marketing/logo-wall.cjs.map +1 -0
  372. package/dist/components/marketing/logo-wall.d.cts +44 -0
  373. package/dist/components/marketing/logo-wall.d.ts +44 -0
  374. package/dist/components/marketing/logo-wall.js +2 -0
  375. package/dist/components/marketing/logo-wall.js.map +1 -0
  376. package/dist/components/marketing/pricing.cjs +2 -0
  377. package/dist/components/marketing/pricing.cjs.map +1 -0
  378. package/dist/components/marketing/pricing.d.cts +52 -0
  379. package/dist/components/marketing/pricing.d.ts +52 -0
  380. package/dist/components/marketing/pricing.js +2 -0
  381. package/dist/components/marketing/pricing.js.map +1 -0
  382. package/dist/components/marketing/testimonials.cjs +2 -0
  383. package/dist/components/marketing/testimonials.cjs.map +1 -0
  384. package/dist/components/marketing/testimonials.d.cts +34 -0
  385. package/dist/components/marketing/testimonials.d.ts +34 -0
  386. package/dist/components/marketing/testimonials.js +2 -0
  387. package/dist/components/marketing/testimonials.js.map +1 -0
  388. package/dist/index.cjs +2 -0
  389. package/dist/index.cjs.map +1 -0
  390. package/dist/index.css +2 -0
  391. package/dist/index.css.map +1 -0
  392. package/dist/index.d.cts +125 -0
  393. package/dist/index.d.ts +125 -0
  394. package/dist/index.js +2 -0
  395. package/dist/index.js.map +1 -0
  396. package/dist/lib/lazy.cjs +2 -0
  397. package/dist/lib/lazy.cjs.map +1 -0
  398. package/dist/lib/lazy.d.cts +43 -0
  399. package/dist/lib/lazy.d.ts +43 -0
  400. package/dist/lib/lazy.js +2 -0
  401. package/dist/lib/lazy.js.map +1 -0
  402. package/dist/lib/performance.cjs +2 -0
  403. package/dist/lib/performance.cjs.map +1 -0
  404. package/dist/lib/performance.d.cts +52 -0
  405. package/dist/lib/performance.d.ts +52 -0
  406. package/dist/lib/performance.js +2 -0
  407. package/dist/lib/performance.js.map +1 -0
  408. package/dist/tailwind.css +29 -0
  409. package/dist/themes/__tests__/themes.test.ts +46 -0
  410. package/dist/themes/index.ts +50 -0
  411. package/dist/themes/lv-426.css +342 -0
  412. package/dist/themes/mother.css +280 -0
  413. package/dist/themes/nostromo.css +315 -0
  414. package/dist/themes/sulaco.css +404 -0
  415. package/dist/themes/utils.ts +105 -0
  416. package/dist/tokens.css +212 -0
  417. package/package.json +321 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/label.tsx"],"names":["labelVariants","cva","Label","className","variant","size","weight","props","ref","cn"],"mappings":"uGAIA,IAAMA,EAAgBC,GAAAA,CACpB,wHAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CAAS,kBACT,KAAA,CAAO,uBAAA,CACP,KAAA,CAAO,kBAAA,CACP,OAAA,CAAS,kBAAA,CACT,QAAS,kBAAA,CACT,IAAA,CAAM,eACR,CAAA,CACA,IAAA,CAAM,CACJ,EAAA,CAAI,SAAA,CACJ,OAAA,CAAS,SAAA,CACT,EAAA,CAAI,WACN,EACA,MAAA,CAAQ,CACN,OAAQ,aAAA,CACR,MAAA,CAAQ,cACR,QAAA,CAAU,eAAA,CACV,IAAA,CAAM,WACR,CACF,CAAA,CACA,gBAAiB,CACf,OAAA,CAAS,UACT,IAAA,CAAM,SAAA,CACN,OAAQ,QACV,CACF,CACF,CAAA,CAMMC,CAAAA,CAAc,CAAA,CAAA,UAAA,CAClB,CAAC,CAAE,SAAA,CAAAC,IAAW,OAAA,CAAAC,CAAAA,CAAS,KAAAC,CAAAA,CAAM,MAAA,CAAAC,CAAAA,CAAQ,GAAGC,CAAM,CAAA,CAAGC,IAC/C,CAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,IAAKA,CAAAA,CACL,SAAA,CAAWC,EAAGT,CAAAA,CAAc,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,OAAAC,CAAO,CAAC,EAAGH,GAAS,CAAA,CAChE,GAAGI,CAAAA,CACN,CAEJ,EACAL,CAAAA,CAAM,WAAA,CAAc,OAAA","file":"chunk-LYVCB45L.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n error: 'text-destructive',\n success: 'text-success-600',\n warning: 'text-warning-600',\n info: 'text-info-600',\n },\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n weight: 'medium',\n },\n }\n);\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, variant, size, weight, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(labelVariants({ variant, size, weight }), className)}\n {...props}\n />\n )\n);\nLabel.displayName = 'Label';\n\nexport { Label, labelVariants };\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import t,{useState,useEffect,useCallback,useRef}from'react';import {cva}from'class-variance-authority';var E=cva("relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300",{variants:{variant:{default:"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl",success:"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl",error:"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl",warning:"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl",info:"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl"},position:{"top-left":"fixed top-4 left-4 z-50","top-center":"fixed top-4 left-1/2 -translate-x-1/2 z-50","top-right":"fixed top-4 right-4 z-50","bottom-left":"fixed bottom-4 left-4 z-50","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 z-50","bottom-right":"fixed bottom-4 right-4 z-50"},animation:{default:"animate-in slide-in-from-right-full duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",fade:"animate-in fade-in-0 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",position:"top-right",animation:"default"}}),m=cva("flex-shrink-0 w-5 h-5 transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",success:"text-success-600",error:"text-destructive",warning:"text-warning-600",info:"text-info-600"}},defaultVariants:{variant:"default"}}),M=t.createContext(void 0),I=()=>{let i=t.useContext(M);if(!i)throw new Error("useToast must be used within a ToastProvider");return i},X=({children:i})=>{let[d,r]=useState([]),o=useRef(new Map),e=useCallback(s=>{let a=o.current.get(s);a&&(clearTimeout(a),o.current.delete(s)),r(f=>f.filter(l=>l.id!==s));},[]),n=useRef(e);useEffect(()=>{n.current=e;},[e]);let u=useCallback(s=>{let a=Math.random().toString(36).substr(2,9),f={...s,id:a};if(r(l=>[...l,f]),s.duration!==0){let l=setTimeout(()=>{n.current(a),o.current.delete(a);},s.duration||5e3);o.current.set(a,l);}return a},[]),c=useCallback(()=>{o.current.forEach(s=>clearTimeout(s)),o.current.clear(),r([]);},[]);return useEffect(()=>{let s=o.current;return ()=>{s.forEach(a=>clearTimeout(a)),s.clear();}},[]),t.createElement(M.Provider,{value:{toasts:d,addToast:u,removeToast:e,clearToasts:c}},i,t.createElement(H,{toasts:d}))},H=({toasts:i})=>{if(i.length===0)return null;let d=i.reduce((r,o)=>{let e=o.position||"top-right";return r[e]||(r[e]=[]),r[e].push(o),r},{});return t.createElement("div",{className:"fixed inset-0 z-50 pointer-events-none"},Object.entries(d).map(([r,o])=>t.createElement("div",{key:r,className:"pointer-events-none"},o.map((e,n)=>{let{style:u,...c}=e;return t.createElement(S,{key:e.id,...c,style:{...u,transform:`translateY(${n*8}px) ${u?.transform||""}`,marginBottom:n<o.length-1?"8px":"0"}})}))))},V=t.forwardRef(({id:i,title:d,description:r,variant:o="default",position:e="top-right",animation:n="default",duration:u=5e3,onClose:c,action:s,className:a$1,children:f,appearDelay:l=10,animationMs:g=150,...x},k)=>{let[C,y]=useState(l<=0),[T,O]=useState(false);useEffect(()=>{if(l<=0)return;let b=window.setTimeout(()=>y(true),l);return ()=>clearTimeout(b)},[l]);let h=useCallback(()=>{O(true),window.setTimeout(()=>{c?.(),y(false);},g);},[c,g]);useEffect(()=>{if(u>0){let b=window.setTimeout(h,u);return ()=>clearTimeout(b)}},[u,h]);let B=()=>{switch(o){case "success":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}));case "error":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}));case "warning":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}));case "info":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}));default:return null}};return C?t.createElement("div",{ref:k,className:a(E({variant:o,position:e,animation:n}),T?"opacity-0":"opacity-100","pointer-events-auto",a$1),"data-visible":C?"true":"false","data-leaving":T?"true":"false",style:{transition:`all ${g}ms ease-in-out`,transform:T?"translateX(100%)":x.style?.transform||"translateX(0)",...x.style},...x},t.createElement("div",{className:"flex items-start space-x-3"},B(),t.createElement("div",{className:"flex-1 min-w-0"},d&&t.createElement("div",{className:"text-sm font-medium"},d),r&&t.createElement("div",{className:"mt-1 text-sm opacity-90"},r),f)),s&&t.createElement("button",{type:"button",onClick:s.onClick,className:"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"},s.label),t.createElement("button",{type:"button",onClick:h,className:"absolute top-2 right-2 p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500","aria-label":"Close notification"},t.createElement("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})))):null});V.displayName="Toast";var S=a$1(V),A=()=>{let{addToast:i,removeToast:d,clearToasts:r}=I();return {success:(e,n)=>i({variant:"success",title:"Success",description:e,...n}),error:(e,n)=>i({variant:"error",title:"Error",description:e,...n}),warning:(e,n)=>i({variant:"warning",title:"Warning",description:e,...n}),info:(e,n)=>i({variant:"info",title:"Info",description:e,...n}),custom:e=>i(e),dismiss:d,clear:r}};export{E as a,m as b,I as c,X as d,S as e,A as f};//# sourceMappingURL=chunk-M5IBD3KV.js.map
2
+ //# sourceMappingURL=chunk-M5IBD3KV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/toast.tsx"],"names":["toastVariants","cva","toastIconVariants","ToastContext","React","useToast","context","ToastProvider","children","toasts","setToasts","useState","timeoutRefs","useRef","removeToast","useCallback","id","timeoutId","prev","toast","removeToastRef","useEffect","addToast","newToast","clearToasts","refs","ToastContainer","toastsByPosition","acc","position","positionToasts","index","toastStyle","toastProps","Toast","ToastComponent","_id","title","description","variant","animation","duration","onClose","action","className","appearDelay","animationMs","props","ref","isVisible","setIsVisible","isLeaving","setIsLeaving","timer","handleClose","getIcon","cn","memo","useToastNotification","message","options"],"mappings":"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","file":"chunk-M5IBD3KV.js","sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Toast variants\nconst toastVariants = cva(\n \"relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300\",\n {\n variants: {\n variant: {\n default:\n \"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl\",\n success:\n \"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl\",\n error:\n \"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl\",\n warning:\n \"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl\",\n info: \"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl\",\n },\n position: {\n \"top-left\": \"fixed top-4 left-4 z-50\",\n \"top-center\": \"fixed top-4 left-1/2 -translate-x-1/2 z-50\",\n \"top-right\": \"fixed top-4 right-4 z-50\",\n \"bottom-left\": \"fixed bottom-4 left-4 z-50\",\n \"bottom-center\": \"fixed bottom-4 left-1/2 -translate-x-1/2 z-50\",\n \"bottom-right\": \"fixed bottom-4 right-4 z-50\",\n },\n animation: {\n default: \"animate-in slide-in-from-right-full duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n fade: \"animate-in fade-in-0 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"top-right\",\n animation: \"default\",\n },\n },\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 w-5 h-5 transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n success: \"text-success-600\",\n error: \"text-destructive\",\n warning: \"text-warning-600\",\n info: \"text-info-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n// Types\nexport interface ToastProps\n extends\n VariantProps<typeof toastVariants>,\n React.HTMLAttributes<HTMLDivElement> {\n id?: string;\n title?: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n action?: {\n label: string;\n onClick: () => void;\n };\n className?: string;\n children?: React.ReactNode;\n appearDelay?: number; // time in ms before first render becomes visible; default 10\n animationMs?: number; // exit animation duration; default 150\n}\n\nexport interface ToastContextType {\n toasts: ToastProps[];\n addToast: (toast: Omit<ToastProps, \"id\">) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\n// Toast Context\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined,\n);\n\nexport const useToast = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n// Toast Provider\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const timeoutRefs = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const removeToast = useCallback((id: string) => {\n // Clear timeout if it exists\n const timeoutId = timeoutRefs.current.get(id);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutRefs.current.delete(id);\n }\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const removeToastRef = useRef(removeToast);\n useEffect(() => {\n removeToastRef.current = removeToast;\n }, [removeToast]);\n\n const addToast = useCallback((toast: Omit<ToastProps, \"id\">) => {\n const id = Math.random().toString(36).substr(2, 9);\n const newToast = { ...toast, id };\n\n setToasts((prev) => [...prev, newToast]);\n\n // Auto remove toast after duration\n if (toast.duration !== 0) {\n const timeoutId = setTimeout(() => {\n removeToastRef.current(id);\n timeoutRefs.current.delete(id);\n }, toast.duration || 5000);\n timeoutRefs.current.set(id, timeoutId);\n }\n\n return id;\n }, []);\n\n const clearToasts = useCallback(() => {\n // Clear all timeouts\n timeoutRefs.current.forEach((timeoutId) => clearTimeout(timeoutId));\n timeoutRefs.current.clear();\n setToasts([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n const refs = timeoutRefs.current;\n return () => {\n refs.forEach((timeoutId) => clearTimeout(timeoutId));\n refs.clear();\n };\n }, []);\n\n return (\n <ToastContext.Provider\n value={{ toasts, addToast, removeToast, clearToasts }}\n >\n {children}\n <ToastContainer toasts={toasts} />\n </ToastContext.Provider>\n );\n};\n\n// Toast Container\nconst ToastContainer: React.FC<{ toasts: ToastProps[] }> = ({ toasts }) => {\n if (toasts.length === 0) return null;\n\n // Group toasts by position for stacking\n const toastsByPosition = toasts.reduce(\n (acc, toast) => {\n const position = toast.position || \"top-right\";\n if (!acc[position]) {\n acc[position] = [];\n }\n acc[position].push(toast);\n return acc;\n },\n {} as Record<string, ToastProps[]>,\n );\n\n return (\n <div className=\"fixed inset-0 z-50 pointer-events-none\">\n {Object.entries(toastsByPosition).map(([position, positionToasts]) => (\n <div key={position} className=\"pointer-events-none\">\n {positionToasts.map((toast, index) => {\n const { style: toastStyle, ...toastProps } = toast;\n return (\n <Toast\n key={toast.id}\n {...toastProps}\n style={{\n ...toastStyle,\n // Stack toasts with offset\n transform: `translateY(${index * 8}px) ${toastStyle?.transform || \"\"}`,\n marginBottom: index < positionToasts.length - 1 ? \"8px\" : \"0\",\n }}\n />\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n\n// Individual Toast Component\nconst ToastComponent = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n id: _id,\n title,\n description,\n variant = \"default\",\n position = \"top-right\",\n animation = \"default\",\n duration = 5000,\n onClose,\n action,\n className,\n children,\n appearDelay = 10,\n animationMs = 150,\n ...props\n },\n ref,\n ) => {\n const [isVisible, setIsVisible] = useState(appearDelay <= 0);\n const [isLeaving, setIsLeaving] = useState(false);\n\n useEffect(() => {\n if (appearDelay <= 0) {\n return;\n }\n const timer = window.setTimeout(() => setIsVisible(true), appearDelay);\n return () => clearTimeout(timer);\n }, [appearDelay]);\n\n const handleClose = useCallback(() => {\n setIsLeaving(true);\n window.setTimeout(() => {\n onClose?.();\n setIsVisible(false);\n }, animationMs);\n }, [onClose, animationMs]);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = window.setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [duration, handleClose]);\n\n const getIcon = () => {\n switch (variant) {\n case \"success\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"error\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"warning\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"info\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n default:\n return null;\n }\n };\n\n if (!isVisible) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n toastVariants({ variant, position, animation }),\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n \"pointer-events-auto\",\n className,\n )}\n data-visible={isVisible ? \"true\" : \"false\"}\n data-leaving={isLeaving ? \"true\" : \"false\"}\n style={{\n transition: `all ${animationMs}ms ease-in-out`,\n transform: isLeaving\n ? \"translateX(100%)\"\n : props.style?.transform || \"translateX(0)\",\n ...props.style,\n }}\n {...props}\n >\n <div className=\"flex items-start space-x-3\">\n {getIcon()}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"text-sm font-medium\">{title}</div>}\n {description && (\n <div className=\"mt-1 text-sm opacity-90\">{description}</div>\n )}\n {children}\n </div>\n </div>\n\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n >\n {action.label}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"absolute top-2 right-2 p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n aria-label=\"Close notification\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nToastComponent.displayName = \"Toast\";\n\n// Memoize Toast for performance optimization\nexport const Toast = memo(ToastComponent) as typeof ToastComponent;\n\n// Toast Hook for easy usage\nexport const useToastNotification = () => {\n const { addToast, removeToast, clearToasts } = useToast();\n\n const toast = {\n success: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"success\",\n title: \"Success\",\n description: message,\n ...options,\n }),\n\n error: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"error\",\n title: \"Error\",\n description: message,\n ...options,\n }),\n\n warning: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"warning\",\n title: \"Warning\",\n description: message,\n ...options,\n }),\n\n info: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"info\",\n title: \"Info\",\n description: message,\n ...options,\n }),\n\n custom: (toast: Omit<ToastProps, \"id\">) => addToast(toast),\n\n dismiss: removeToast,\n clear: clearToasts,\n };\n\n return toast;\n};\n\n// Export variants for external use\nexport { toastVariants, toastIconVariants };\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var e__namespace=/*#__PURE__*/_interopNamespace(e);var V=classVarianceAuthority.cva("grid gap-2",{variants:{orientation:{vertical:"grid-cols-1",horizontal:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4"}},defaultVariants:{orientation:"vertical"}}),w=classVarianceAuthority.cva("peer h-4 w-4 shrink-0 rounded-full border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200",{variants:{variant:{default:"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary",error:"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive",success:"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500"},size:{default:"h-4 w-4",sm:"h-3 w-3",lg:"h-5 w-5"}},defaultVariants:{variant:"default",size:"default"}}),E=e__namespace.forwardRef(({className:u,error:t,helperText:r,label:s,required:d,orientation:p,name:m,defaultValue:o,value:n,onValueChange:l,disabled:b,children:c,...f},v)=>{let g=e__namespace.useId(),h=s?`${g}-label`:void 0,R=r?`${g}-helper`:void 0,y=t?`${g}-error`:void 0,x=a=>{l&&l(a.target.value);};return e__namespace.createElement("div",{className:"space-y-2"},s&&e__namespace.createElement("label",{id:h,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},s,d&&e__namespace.createElement("span",{className:"text-error-500 ml-1"},"*")),e__namespace.createElement("div",{ref:v,className:chunkITRGJNWL_cjs.a(V({orientation:p,className:u})),role:"radiogroup","aria-labelledby":h,"aria-describedby":chunkITRGJNWL_cjs.a(R,y)||void 0,"aria-invalid":t,...f},e__namespace.Children.map(c,a=>{if(e__namespace.isValidElement(a)){let k=n!==void 0,P={name:m,disabled:!!(b??a.props.disabled),variant:t?"error":a.props.variant,...k?{checked:n===a.props.value}:{defaultChecked:o===a.props.value},onChange:x};return e__namespace.cloneElement(a,P)}return a})),r&&e__namespace.createElement("p",{id:R,className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",t&&"text-destructive")},r))});E.displayName="RadioGroup";var N=e__namespace.forwardRef(({className:u,variant:t,size:r,value:s,label:d,disabled:p,id:m,onChange:o,...n},l)=>{let b=e__namespace.useId(),c=m||b,f=v=>{o&&o(v);};return e__namespace.createElement("div",{className:"flex items-center space-x-2"},e__namespace.createElement("input",{type:"radio",className:chunkITRGJNWL_cjs.a(w({variant:t,size:r,className:u})),ref:l,id:c,value:s,disabled:p,onChange:f,...n}),d&&e__namespace.createElement("label",{htmlFor:c,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},d))});N.displayName="RadioItem";exports.a=V;exports.b=w;exports.c=E;exports.d=N;//# sourceMappingURL=chunk-MLJZU63I.cjs.map
2
+ //# sourceMappingURL=chunk-MLJZU63I.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/radio-group.tsx"],"names":["radioGroupVariants","cva","radioItemVariants","RadioGroup","e","className","error","helperText","label","required","orientation","name","defaultValue","value","onValueChange","disabled","children","props","ref","radioGroupId","labelId","helperTextId","errorId","handleChange","event","cn","child","isControlled","childProps","RadioItem","variant","radioSize","id","onChange","generatedId","radioId"],"mappings":"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","file":"chunk-MLJZU63I.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst radioGroupVariants = cva(\"grid gap-2\", {\n variants: {\n orientation: {\n vertical: \"grid-cols-1\",\n horizontal: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n});\n\nconst radioItemVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-full border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200\",\n {\n variants: {\n variant: {\n default:\n \"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n error:\n \"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive\",\n success:\n \"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500\",\n },\n size: {\n default: \"h-4 w-4\",\n sm: \"h-3 w-3\",\n lg: \"h-5 w-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface RadioGroupProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof radioGroupVariants> {\n /**\n * Whether the radio group is in an error state\n * @default false\n */\n error?: boolean;\n /**\n * Helper text to display below the radio group\n */\n helperText?: string;\n /**\n * Label text for the radio group\n */\n label?: string;\n /**\n * Whether the radio group is required\n * @default false\n */\n required?: boolean;\n /**\n * The name attribute for all radio buttons in the group\n */\n name?: string;\n /**\n * The default value of the radio group\n */\n defaultValue?: string;\n /**\n * The controlled value of the radio group\n */\n value?: string;\n /**\n * Callback fired when the value changes\n */\n onValueChange?: (value: string) => void;\n /**\n * Whether the radio group is disabled\n * @default false\n */\n disabled?: boolean;\n}\n\nexport interface RadioItemProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof radioItemVariants> {\n /**\n * The value of the radio item\n */\n value: string;\n /**\n * The label for the radio item\n */\n label?: string;\n /**\n * Whether the radio item is disabled\n * @default false\n */\n disabled?: boolean;\n}\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n className,\n error,\n helperText,\n label,\n required,\n orientation,\n name,\n defaultValue,\n value,\n onValueChange,\n disabled,\n children,\n ...props\n },\n ref,\n ) => {\n const radioGroupId = React.useId();\n const labelId = label ? `${radioGroupId}-label` : undefined;\n const helperTextId = helperText ? `${radioGroupId}-helper` : undefined;\n const errorId = error ? `${radioGroupId}-error` : undefined;\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onValueChange) {\n onValueChange(event.target.value);\n }\n };\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label\n id={labelId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n {required && <span className=\"text-error-500 ml-1\">*</span>}\n </label>\n )}\n <div\n ref={ref}\n className={cn(radioGroupVariants({ orientation, className }))}\n role=\"radiogroup\"\n aria-labelledby={labelId}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n {...props}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement<RadioItemProps>(child)) {\n // Use controlled mode if value is provided, otherwise use uncontrolled\n const isControlled = value !== undefined;\n\n const childProps: Partial<RadioItemProps> = {\n name,\n disabled: Boolean(disabled ?? child.props.disabled),\n variant: error ? \"error\" : child.props.variant,\n ...(isControlled\n ? { checked: value === child.props.value }\n : { defaultChecked: defaultValue === child.props.value }),\n onChange: handleChange,\n };\n\n return React.cloneElement(child, childProps);\n }\n return child;\n })}\n </div>\n {helperText && (\n <p\n id={helperTextId}\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-destructive\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nconst RadioItem = React.forwardRef<HTMLInputElement, RadioItemProps>(\n (\n {\n className,\n variant,\n size: radioSize,\n value,\n label,\n disabled,\n id,\n onChange,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"radio\"\n className={cn(\n radioItemVariants({ variant, size: radioSize, className }),\n )}\n ref={ref}\n id={radioId}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n {...props}\n />\n {label && (\n <label\n htmlFor={radioId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\nRadioItem.displayName = \"RadioItem\";\n\nexport { RadioGroup, RadioItem, radioGroupVariants, radioItemVariants };\n"]}
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),n=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var n__default=/*#__PURE__*/_interopDefault(n);var L=classVarianceAuthority.cva("border border-border rounded-md overflow-hidden",{variants:{variant:{default:"bg-card",outlined:"border-2 border-border",filled:"bg-muted",ghost:"border-transparent bg-transparent"},size:{sm:"text-sm",md:"text-base",lg:"text-lg"}},defaultVariants:{variant:"default",size:"md"}}),z=classVarianceAuthority.cva("border-b border-border last:border-b-0",{variants:{variant:{default:"",outlined:"border-border",filled:"border-border",ghost:"border-transparent"}},defaultVariants:{variant:"default"}}),B=classVarianceAuthority.cva("flex w-full items-center justify-between py-4 px-6 text-left font-medium transition-colors hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset disabled:opacity-50 disabled:cursor-not-allowed",{variants:{variant:{default:"text-foreground",outlined:"text-foreground",filled:"text-foreground",ghost:"text-foreground"},size:{sm:"py-3 px-4 text-sm",md:"py-4 px-6 text-base",lg:"py-5 px-8 text-lg"}},defaultVariants:{variant:"default",size:"md"}}),K=classVarianceAuthority.cva("overflow-hidden transition-all duration-200 ease-in-out",{variants:{size:{sm:"text-sm",md:"text-base",lg:"text-lg"}},defaultVariants:{size:"md"}}),R=classVarianceAuthority.cva("h-4 w-4 shrink-0 transition-transform duration-200",{variants:{open:{true:"rotate-180",false:"rotate-0"}},defaultVariants:{open:false}}),E=n__default.default.createContext(void 0),N=n__default.default.createContext(null),T=()=>{let t=n__default.default.useContext(E);if(!t)throw new Error("Accordion components must be used within an Accordion");return t},P=()=>{let t=n__default.default.useContext(N);if(!t)throw new Error("Accordion components must be used within an AccordionItem");return t},S=n__default.default.forwardRef(({children:t,type:a="single",collapsible:c=true,value:l,defaultValue:i,onValueChange:o,variant:u="default",size:s="md",className:r,...f},g)=>{let[y,x]=n.useState(()=>i!==void 0?i:a==="single"?"":[]),p=l!==void 0,A=p?l:y,m=n.useCallback(e=>{p||x(e),o?.(e);},[p,o]),d={type:a,value:A,onValueChange:m,variant:u||"default",size:s||"md"};return n__default.default.createElement(E.Provider,{value:d},n__default.default.createElement("div",{ref:g,className:chunkITRGJNWL_cjs.a(L({variant:u,size:s}),r),"data-accordion-root":"true",...f},t))});S.displayName="Accordion";var $=n__default.default.forwardRef(({value:t,children:a,variant:c="default",className:l,disabled:i=false,...o},u)=>{let{variant:s,value:r,type:f,onValueChange:g}=T(),y=c==="default"?s:c,x=n__default.default.useId(),p=`accordion-trigger-${t}-${x}`,A=`accordion-content-${t}-${x}`,m=f==="single"?r===t:Array.isArray(r)&&r.includes(t),d=n.useCallback(()=>{if(!i)if(f==="single")g(m?"":t);else {let C=Array.isArray(r)?r:[];g(m?C.filter(I=>I!==t):[...C,t]);}},[i,m,f,t,r,g]),e={open:m,toggle:d,triggerId:p,contentId:A,value:t,disabled:i};return n__default.default.createElement(N.Provider,{value:e},n__default.default.createElement("div",{ref:u,className:chunkITRGJNWL_cjs.a(z({variant:y}),i&&"opacity-50 cursor-not-allowed",l),"data-value":t,"data-disabled":i,...o},a))});$.displayName="AccordionItem";var O=n__default.default.forwardRef(({children:t,variant:a="default",size:c="md",className:l,disabled:i=false,...o},u)=>{let{open:s,toggle:r,triggerId:f,contentId:g,disabled:y}=P(),{variant:x,size:p}=T(),A=a==="default"?x:a||"default",m=c==="md"?p:c||"md",d=y||i||false;return n__default.default.createElement("button",{...o,ref:u,type:"button",id:f,"aria-controls":g,"aria-expanded":s,"aria-disabled":d,disabled:d,"data-state":s?"open":"closed","data-accordion-trigger":"true",onClick:e=>{"onClick"in o&&o.onClick&&o.onClick(e),!d&&r();},onKeyDown:e=>{if("onKeyDown"in o&&o.onKeyDown&&o.onKeyDown(e),!d){if(e.key==="Enter"||e.key===" "){e.preventDefault(),e.stopPropagation(),r();return}if(e.key==="ArrowDown"||e.key==="ArrowUp"||e.key==="Home"||e.key==="End"){e.preventDefault();let C=e.currentTarget.closest('[data-accordion-root="true"]');if(!C)return;let b=Array.from(C.querySelectorAll('[data-accordion-trigger="true"]')).filter(D=>!D.disabled),M=e.currentTarget,V=b.indexOf(M);if(V===-1)return;let w;if(e.key==="ArrowDown")w=(V+1)%b.length;else if(e.key==="ArrowUp")w=(V-1+b.length)%b.length;else if(e.key==="Home")w=0;else if(e.key==="End")w=b.length-1;else return;b[w]?.focus();}}},className:chunkITRGJNWL_cjs.a(B({variant:A,size:m}),d&&"opacity-50 cursor-not-allowed",l)},n__default.default.createElement("span",{className:"flex-1"},t),n__default.default.createElement("svg",{className:chunkITRGJNWL_cjs.a(R({open:s})),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},n__default.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})))});O.displayName="AccordionTrigger";var j=n__default.default.forwardRef(({children:t,size:a="md",className:c,...l},i)=>{let{open:o,contentId:u,triggerId:s}=P(),{size:r}=T();return n__default.default.createElement("div",{...l,ref:i,id:u,role:"region","aria-labelledby":s,hidden:!o,"data-state":o?"open":"closed",className:chunkITRGJNWL_cjs.a(K({size:a==="md"?r:a}),"overflow-hidden transition-all duration-200 ease-in-out",c)},n__default.default.createElement("div",{className:"px-6 py-4"},t))});j.displayName="AccordionContent";
2
+ exports.a=L;exports.b=z;exports.c=B;exports.d=K;exports.e=R;exports.f=S;exports.g=$;exports.h=O;exports.i=j;//# sourceMappingURL=chunk-MLSE5XSB.cjs.map
3
+ //# sourceMappingURL=chunk-MLSE5XSB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/accordion.tsx"],"names":["accordionVariants","cva","accordionItemVariants","accordionTriggerVariants","accordionContentVariants","accordionChevronVariants","AccordionContext","React","AccordionItemContext","useAccordionContext","context","useAccordionItemContext","Accordion","children","type","_collapsible","controlledValue","defaultValue","onValueChange","variant","size","className","props","ref","internalValue","setInternalValue","useState","isControlled","value","handleValueChange","useCallback","newValue","contextValue","cn","AccordionItem","disabled","contextVariant","accordionValue","finalVariant","baseId","triggerId","contentId","isOpen","handleToggle","currentValue","v","itemContextValue","AccordionTrigger","open","toggle","itemDisabled","contextSize","finalSize","finalDisabled","root","enabled","btn","current","idx","nextIdx","AccordionContent"],"mappings":"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","file":"chunk-MLSE5XSB.cjs","sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\n// Accordion variants\nconst accordionVariants = cva(\n 'border border-border rounded-md overflow-hidden',\n {\n variants: {\n variant: {\n default: 'bg-card',\n outlined: 'border-2 border-border',\n filled: 'bg-muted',\n ghost: 'border-transparent bg-transparent'\n },\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'md'\n }\n }\n);\n\nconst accordionItemVariants = cva(\n 'border-b border-border last:border-b-0',\n {\n variants: {\n variant: {\n default: '',\n outlined: 'border-border',\n filled: 'border-border',\n ghost: 'border-transparent'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n }\n);\n\nconst accordionTriggerVariants = cva(\n 'flex w-full items-center justify-between py-4 px-6 text-left font-medium transition-colors hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n default: 'text-foreground',\n outlined: 'text-foreground',\n filled: 'text-foreground',\n ghost: 'text-foreground'\n },\n size: {\n sm: 'py-3 px-4 text-sm',\n md: 'py-4 px-6 text-base',\n lg: 'py-5 px-8 text-lg'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'md'\n }\n }\n);\n\nconst accordionContentVariants = cva(\n 'overflow-hidden transition-all duration-200 ease-in-out',\n {\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n);\n\nconst accordionChevronVariants = cva(\n 'h-4 w-4 shrink-0 transition-transform duration-200',\n {\n variants: {\n open: {\n true: 'rotate-180',\n false: 'rotate-0'\n }\n },\n defaultVariants: {\n open: false\n }\n }\n);\n\n// Types\nexport interface AccordionProps extends VariantProps<typeof accordionVariants> {\n children: React.ReactNode;\n type?: 'single' | 'multiple';\n collapsible?: boolean;\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n className?: string;\n}\n\nexport interface AccordionItemProps extends VariantProps<typeof accordionItemVariants> {\n value: string;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n}\n\nexport interface AccordionTriggerProps extends VariantProps<typeof accordionTriggerVariants>, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'> {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n}\n\nexport interface AccordionContentProps extends VariantProps<typeof accordionContentVariants> {\n children: React.ReactNode;\n className?: string;\n}\n\n// Accordion Context\ninterface AccordionContextType {\n type: 'single' | 'multiple';\n value: string | string[];\n onValueChange: (value: string | string[]) => void;\n variant: 'default' | 'outlined' | 'filled' | 'ghost';\n size: 'sm' | 'md' | 'lg';\n}\n\n// Accordion Item Context\ninterface AccordionItemContextType {\n open: boolean;\n toggle: () => void;\n triggerId: string;\n contentId: string;\n value: string;\n disabled: boolean;\n}\n\nconst AccordionContext = React.createContext<AccordionContextType | undefined>(undefined);\nconst AccordionItemContext = React.createContext<AccordionItemContextType | null>(null);\n\nconst useAccordionContext = () => {\n const context = React.useContext(AccordionContext);\n if (!context) {\n throw new Error('Accordion components must be used within an Accordion');\n }\n return context;\n};\n\nconst useAccordionItemContext = () => {\n const context = React.useContext(AccordionItemContext);\n if (!context) {\n throw new Error('Accordion components must be used within an AccordionItem');\n }\n return context;\n};\n\n// Main Accordion Component\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\n ({\n children,\n type = 'single',\n collapsible: _collapsible = true,\n value: controlledValue,\n defaultValue,\n onValueChange,\n variant = 'default',\n size = 'md',\n className,\n ...props\n }, ref) => {\n const [internalValue, setInternalValue] = useState<string | string[]>(() => {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n return type === 'single' ? '' : [];\n });\n \n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n \n const handleValueChange = useCallback((newValue: string | string[]) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n }, [isControlled, onValueChange]);\n\n const contextValue: AccordionContextType = {\n type,\n value,\n onValueChange: handleValueChange,\n variant: variant || 'default',\n size: size || 'md'\n };\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(accordionVariants({ variant, size }), className)}\n data-accordion-root=\"true\"\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n }\n);\n\nAccordion.displayName = 'Accordion';\n\n// Accordion Item Component\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({\n value,\n children,\n variant = 'default',\n className,\n disabled = false,\n ...props\n }, ref) => {\n const { variant: contextVariant, value: accordionValue, type, onValueChange } = useAccordionContext();\n const finalVariant = variant === 'default' ? contextVariant : variant;\n \n // Stable IDs using useId\n const baseId = React.useId();\n const triggerId = `accordion-trigger-${value}-${baseId}`;\n const contentId = `accordion-content-${value}-${baseId}`;\n \n // Determine if this item is open\n const isOpen = type === 'single' \n ? accordionValue === value \n : Array.isArray(accordionValue) && accordionValue.includes(value);\n \n \n const handleToggle = useCallback(() => {\n if (disabled) return;\n \n if (type === 'single') {\n // Toggle: if currently open, close it; if closed, open it\n onValueChange(isOpen ? '' : value);\n } else {\n const currentValue = Array.isArray(accordionValue) ? accordionValue : [];\n if (isOpen) {\n onValueChange(currentValue.filter(v => v !== value));\n } else {\n onValueChange([...currentValue, value]);\n }\n }\n }, [disabled, isOpen, type, value, accordionValue, onValueChange]);\n\n const itemContextValue: AccordionItemContextType = {\n open: isOpen,\n toggle: handleToggle,\n triggerId,\n contentId,\n value,\n disabled\n };\n\n return (\n <AccordionItemContext.Provider value={itemContextValue}>\n <div\n ref={ref}\n className={cn(\n accordionItemVariants({ variant: finalVariant }),\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n data-value={value}\n data-disabled={disabled}\n {...props}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n }\n);\n\nAccordionItem.displayName = 'AccordionItem';\n\n// Accordion Trigger Component\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n ({\n children,\n variant = 'default',\n size = 'md',\n className,\n disabled = false,\n ...props\n }, ref) => {\n const { open, toggle, triggerId, contentId, disabled: itemDisabled } = useAccordionItemContext();\n const { variant: contextVariant, size: contextSize } = useAccordionContext();\n \n const finalVariant = variant === 'default' ? contextVariant : variant || 'default';\n const finalSize = size === 'md' ? contextSize : size || 'md';\n const finalDisabled = itemDisabled || disabled || false;\n\n return (\n <button\n {...props}\n ref={ref}\n type=\"button\"\n id={triggerId}\n aria-controls={contentId}\n aria-expanded={open}\n aria-disabled={finalDisabled}\n disabled={finalDisabled}\n data-state={open ? 'open' : 'closed'}\n data-accordion-trigger=\"true\"\n onClick={(e) => {\n if ('onClick' in props && props.onClick) {\n props.onClick(e as React.MouseEvent<HTMLButtonElement>);\n }\n if (finalDisabled) return;\n toggle();\n }}\n onKeyDown={(e) => {\n if ('onKeyDown' in props && props.onKeyDown) {\n props.onKeyDown(e as React.KeyboardEvent<HTMLButtonElement>);\n }\n if (finalDisabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n toggle();\n return;\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Home' || e.key === 'End') {\n e.preventDefault();\n const root = (e.currentTarget as HTMLElement).closest('[data-accordion-root=\"true\"]');\n if (!root) return;\n const triggers = Array.from(root.querySelectorAll<HTMLButtonElement>('[data-accordion-trigger=\"true\"]'));\n const enabled = triggers.filter(btn => !btn.disabled);\n const current = e.currentTarget as HTMLButtonElement;\n const idx = enabled.indexOf(current);\n if (idx === -1) return;\n \n let nextIdx: number;\n if (e.key === 'ArrowDown') {\n nextIdx = (idx + 1) % enabled.length;\n } else if (e.key === 'ArrowUp') {\n nextIdx = (idx - 1 + enabled.length) % enabled.length;\n } else if (e.key === 'Home') {\n nextIdx = 0;\n } else if (e.key === 'End') {\n nextIdx = enabled.length - 1;\n } else {\n return;\n }\n \n enabled[nextIdx]?.focus();\n }\n }}\n className={cn(\n accordionTriggerVariants({ variant: finalVariant, size: finalSize }),\n finalDisabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n <span className=\"flex-1\">{children}</span>\n <svg\n className={cn(accordionChevronVariants({ open }))}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n );\n }\n);\n\nAccordionTrigger.displayName = 'AccordionTrigger';\n\n// Accordion Content Component\nexport const AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n ({\n children,\n size = 'md',\n className,\n ...props\n }, ref) => {\n const { open, contentId, triggerId } = useAccordionItemContext();\n const { size: contextSize } = useAccordionContext();\n \n const finalSize = size === 'md' ? contextSize : size;\n\n return (\n <div\n {...props}\n ref={ref}\n id={contentId}\n role=\"region\"\n aria-labelledby={triggerId}\n hidden={!open}\n data-state={open ? 'open' : 'closed'}\n className={cn(\n accordionContentVariants({ size: finalSize }), \n 'overflow-hidden transition-all duration-200 ease-in-out',\n className\n )}\n >\n <div className=\"px-6 py-4\">\n {children}\n </div>\n </div>\n );\n }\n);\n\nAccordionContent.displayName = 'AccordionContent';\n\n// Export variants for external use\nexport { accordionVariants, accordionItemVariants, accordionTriggerVariants, accordionContentVariants, accordionChevronVariants };"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import s,{useState,useRef,useCallback,useEffect}from'react';import {cva}from'class-variance-authority';var Y=cva("absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200",{variants:{variant:{default:"bg-popover text-popover-foreground border border-border",light:"bg-popover text-popover-foreground border border-border",dark:"bg-popover text-popover-foreground border border-border",success:"bg-success text-success-foreground",warning:"bg-warning text-warning-foreground",error:"bg-destructive text-destructive-foreground",info:"bg-info text-info-foreground"},size:{sm:"text-xs px-2 py-1",md:"text-sm px-3 py-2",lg:"text-base px-4 py-3"},placement:{top:"bottom-full left-1/2 -translate-x-1/2 mb-2","top-start":"bottom-full left-0 mb-2","top-end":"bottom-full right-0 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2","bottom-start":"top-full left-0 mt-2","bottom-end":"top-full right-0 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2","left-start":"right-full top-0 mr-2","left-end":"right-full bottom-0 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2","right-start":"left-full top-0 ml-2","right-end":"left-full bottom-0 ml-2"}},defaultVariants:{variant:"default",size:"md",placement:"top"}}),Z=cva("absolute w-2 h-2 rotate-45",{variants:{variant:{default:"bg-popover border border-border",light:"bg-popover border border-border",dark:"bg-popover border border-border",success:"bg-success-500",warning:"bg-warning-500",error:"bg-destructive",info:"bg-info-500"},placement:{top:"top-full left-1/2 -translate-x-1/2 -translate-y-1/2","top-start":"top-full left-4 -translate-y-1/2","top-end":"top-full right-4 -translate-y-1/2",bottom:"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2","bottom-start":"bottom-full left-4 translate-y-1/2","bottom-end":"bottom-full right-4 translate-y-1/2",left:"left-full top-1/2 -translate-x-1/2 -translate-y-1/2","left-start":"left-full top-4 -translate-x-1/2","left-end":"left-full bottom-4 -translate-x-1/2",right:"right-full top-1/2 translate-x-1/2 -translate-y-1/2","right-start":"right-full top-4 translate-x-1/2","right-end":"right-full bottom-4 translate-x-1/2"}},defaultVariants:{variant:"default",placement:"top"}}),S=s.createContext(void 0),$=()=>{let c=s.useContext(S);if(!c)throw new Error("Tooltip components must be used within a Tooltip");return c},q=s.forwardRef(({children:c,content:h,trigger:T="hover",open:i,onOpenChange:f,delayDuration:e=700,skipDelayDuration:v=300,disabled:d=false,className:x,contentClassName:u,sideOffset:M=4,alignOffset:C=0,avoidCollisions:E=true,collisionBoundary:w,collisionPadding:o=8,hideWhenDetached:R=false,sticky:L="partial",updatePositionDeps:H,closeOnBlur:D=true,...a$1},N)=>{let[t,l]=useState(false),g=useRef(null),n=useRef(null),r=i!==void 0,y=r?i:t,p=useCallback(_=>{d||(r||l(_),f?.(_));},[d,r,f]),m=useCallback(()=>{g.current!=null&&(clearTimeout(g.current),g.current=null),n.current!=null&&(clearTimeout(n.current),n.current=null);},[]),W=useCallback(()=>{m(),p(true);},[m,p]),B=useCallback(()=>{m(),p(false);},[m,p]),V=useCallback(()=>{m(),!d&&(e>0?g.current=window.setTimeout(()=>{p(true);},e):p(true));},[m,d,e,p]),z=useCallback(()=>{m(),v>0?n.current=window.setTimeout(()=>{p(false);},v):p(false);},[m,v,p]),G=useCallback(()=>{y?z():V();},[y,V,z]),J=useCallback(()=>{y?B():W();},[y,W,B]);useEffect(()=>()=>{m();},[m]);let Q={open:y,setOpen:p,trigger:T,delayDuration:e,skipDelayDuration:v,openNow:W,closeNow:B,openWithDelay:V,closeWithDelay:z,toggleWithDelay:G,toggleNow:J,closeOnBlur:D},U=y===true;return s.createElement(S.Provider,{value:Q},s.createElement("div",{ref:N,className:a("relative inline-block",x),"data-open":y,...a$1},c,U?s.createElement(O,{className:u||"",sideOffset:M,alignOffset:C,avoidCollisions:E,collisionBoundary:w||null,collisionPadding:o,hideWhenDetached:R,sticky:L,updatePositionDeps:H||[],variant:a$1.variant,size:a$1.size,placement:a$1.placement},h):null))});q.displayName="Tooltip";var A=s.forwardRef(({children:c,asChild:h=true,className:T,...i},f)=>{let{trigger:e,openNow:v,closeNow:d,openWithDelay:x,closeWithDelay:u,toggleNow:M,closeOnBlur:C}=$(),E=useRef(null),w={ref:o=>{E.current=o,typeof f=="function"?f(o):f&&(f.current=o);},className:a(T),"data-tooltip-trigger":true,onMouseEnter:o=>{i.onMouseEnter?.(o),e==="hover"&&x();},onMouseLeave:o=>{i.onMouseLeave?.(o),e==="hover"&&u();},onPointerEnter:o=>{i.onPointerEnter?.(o),e==="hover"&&x();},onPointerLeave:o=>{i.onPointerLeave?.(o),e==="hover"&&u();},onClick:o=>{i.onClick?.(o),e==="click"&&M();},onFocus:o=>{i.onFocus?.(o),e==="focus"&&v();},onBlur:o=>{i.onBlur?.(o),C&&d();},onKeyDown:o=>{i.onKeyDown?.(o),o.key==="Escape"&&d();}};return h&&s.isValidElement(c)?s.cloneElement(c,{...c.props||{},...w}):s.createElement("span",{...w,tabIndex:e==="focus"?0:void 0,role:e==="click"?"button":void 0},c)});A.displayName="TooltipTrigger";var O=s.forwardRef(({children:c,variant:h="default",size:T="md",placement:i="top",className:f,sideOffset:e=4,alignOffset:v=0,avoidCollisions:d=true,collisionBoundary:x,collisionPadding:u=8,hideWhenDetached:M=false,sticky:C="partial",updatePositionDeps:E,...w},o)=>{let R=useRef(null),[L,H]=useState({top:0,left:0}),D=useCallback(()=>{if(!R.current)return;let a=R.current,N=a.parentElement?.querySelector("[data-tooltip-trigger]");if(!N)return;let t=N.getBoundingClientRect(),l=a.getBoundingClientRect(),g={width:window.innerWidth,height:window.innerHeight},n=0,r=0;switch(i){case "top":n=t.top-l.height-e,r=t.left+t.width/2-l.width/2;break;case "top-start":n=t.top-l.height-e,r=t.left;break;case "top-end":n=t.top-l.height-e,r=t.right-l.width;break;case "bottom":n=t.bottom+e,r=t.left+t.width/2-l.width/2;break;case "bottom-start":n=t.bottom+e,r=t.left;break;case "bottom-end":n=t.bottom+e,r=t.right-l.width;break;case "left":n=t.top+t.height/2-l.height/2,r=t.left-l.width-e;break;case "left-start":n=t.top,r=t.left-l.width-e;break;case "left-end":n=t.bottom-l.height,r=t.left-l.width-e;break;case "right":n=t.top+t.height/2-l.height/2,r=t.right+e;break;case "right-start":n=t.top,r=t.right+e;break;case "right-end":n=t.bottom-l.height,r=t.right+e;break}d&&(r<u?r=u:r+l.width>g.width-u&&(r=g.width-l.width-u),n<u?n=u:n+l.height>g.height-u&&(n=g.height-l.height-u)),H({top:n,left:r});},[i,e,d,u]);return s.useLayoutEffect(()=>{D();let a=()=>D();return window.addEventListener("resize",a),window.addEventListener("scroll",a),()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",a);}},[D,E]),s.createElement("div",{ref:a=>{R.current=a,typeof o=="function"?o(a):o&&(o.current=a);},role:"tooltip","data-tooltip-instance":"nostromo",className:a(Y({variant:h,size:T,placement:i}),f),style:{position:"fixed",top:L.top,left:L.left,zIndex:50},...w},c,s.createElement("div",{className:a(Z({variant:h,placement:i}))}))});O.displayName="TooltipContent";var tt=({children:c,delayDuration:h=700,skipDelayDuration:T=300,defaultOpen:i=false})=>s.createElement("div",{"data-tooltip-provider":true},c),F=a$1(q);F.Trigger=A;F.Content=O;F.Provider=tt;export{Y as a,Z as b,A as c,O as d,tt as e,F as f};//# sourceMappingURL=chunk-MRZOLUSF.js.map
2
+ //# sourceMappingURL=chunk-MRZOLUSF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/tooltip.tsx"],"names":["tooltipVariants","cva","arrowVariants","TooltipContext","React","useTooltipContext","context","TooltipComponent","children","content","trigger","controlledOpen","onOpenChange","delayDuration","skipDelayDuration","disabled","className","contentClassName","sideOffset","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","hideWhenDetached","sticky","updatePositionDeps","closeOnBlur","props","ref","internalOpen","setInternalOpen","useState","delayTimerRef","useRef","skipDelayTimerRef","isControlled","open","setOpen","useCallback","newOpen","clearTimers","openNow","closeNow","openWithDelay","closeWithDelay","toggleWithDelay","toggleNow","useEffect","contextValue","shouldRenderContent","cn","TooltipContent","TooltipTrigger","asChild","triggerRef","triggerProps","node","e","variant","size","placement","_alignOffset","_collisionBoundary","_hideWhenDetached","_sticky","contentRef","position","setPosition","updatePosition","triggerRect","contentRect","viewport","top","left","handleResize","TooltipProvider","_delayDuration","_skipDelayDuration","_defaultOpen","Tooltip","memo"],"mappings":"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","file":"chunk-MRZOLUSF.js","sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Tooltip variants\nconst tooltipVariants = cva(\n \"absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground border border-border\",\n light: \"bg-popover text-popover-foreground border border-border\",\n dark: \"bg-popover text-popover-foreground border border-border\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n error: \"bg-destructive text-destructive-foreground\",\n info: \"bg-info text-info-foreground\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-2\",\n lg: \"text-base px-4 py-3\",\n },\n placement: {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n \"left-start\": \"right-full top-0 mr-2\",\n \"left-end\": \"right-full bottom-0 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n \"right-start\": \"left-full top-0 ml-2\",\n \"right-end\": \"left-full bottom-0 ml-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n placement: \"top\",\n },\n },\n);\n\nconst arrowVariants = cva(\"absolute w-2 h-2 rotate-45\", {\n variants: {\n variant: {\n default: \"bg-popover border border-border\",\n light: \"bg-popover border border-border\",\n dark: \"bg-popover border border-border\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-destructive\",\n info: \"bg-info-500\",\n },\n placement: {\n top: \"top-full left-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"top-start\": \"top-full left-4 -translate-y-1/2\",\n \"top-end\": \"top-full right-4 -translate-y-1/2\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2\",\n \"bottom-start\": \"bottom-full left-4 translate-y-1/2\",\n \"bottom-end\": \"bottom-full right-4 translate-y-1/2\",\n left: \"left-full top-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"left-start\": \"left-full top-4 -translate-x-1/2\",\n \"left-end\": \"left-full bottom-4 -translate-x-1/2\",\n right: \"right-full top-1/2 translate-x-1/2 -translate-y-1/2\",\n \"right-start\": \"right-full top-4 translate-x-1/2\",\n \"right-end\": \"right-full bottom-4 translate-x-1/2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n placement: \"top\",\n },\n});\n\n// Types\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n children: React.ReactNode;\n content: React.ReactNode;\n trigger?: \"hover\" | \"click\" | \"focus\" | \"manual\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n closeOnBlur?: boolean;\n}\n\nexport interface TooltipContentProps extends VariantProps<\n typeof tooltipVariants\n> {\n children: React.ReactNode;\n className?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n}\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\n// Tooltip Context\ninterface TooltipContextType {\n open: boolean;\n setOpen: (open: boolean) => void;\n trigger: \"hover\" | \"click\" | \"focus\" | \"manual\";\n delayDuration: number;\n skipDelayDuration: number;\n openNow: () => void;\n closeNow: () => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n toggleWithDelay: () => void;\n toggleNow: () => void;\n closeOnBlur: boolean;\n}\n\nconst TooltipContext = React.createContext<TooltipContextType | undefined>(\n undefined,\n);\n\nconst useTooltipContext = () => {\n const context = React.useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within a Tooltip\");\n }\n return context;\n};\n\n// Main Tooltip Component\nconst TooltipComponent = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n trigger = \"hover\",\n open: controlledOpen,\n onOpenChange,\n delayDuration = 700,\n skipDelayDuration = 300,\n disabled = false,\n className,\n contentClassName,\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached = false,\n sticky = \"partial\",\n updatePositionDeps,\n closeOnBlur = true,\n ...props\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const delayTimerRef = useRef<number | ReturnType<typeof setTimeout> | null>(\n null,\n );\n const skipDelayTimerRef = useRef<\n number | ReturnType<typeof setTimeout> | null\n >(null);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (disabled) return;\n\n if (isControlled) {\n onOpenChange?.(newOpen);\n } else {\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen); // notify i uncontrolled\n }\n },\n [disabled, isControlled, onOpenChange],\n );\n\n // --- Tooltip open/close/toggle helpers ---\n const clearTimers = useCallback(() => {\n if (delayTimerRef.current != null) {\n clearTimeout(delayTimerRef.current);\n delayTimerRef.current = null;\n }\n if (skipDelayTimerRef.current != null) {\n clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = null;\n }\n }, []);\n\n const openNow = useCallback(() => {\n clearTimers();\n setOpen(true);\n }, [clearTimers, setOpen]);\n\n const closeNow = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n const openWithDelay = useCallback(() => {\n clearTimers();\n if (disabled) return;\n if (delayDuration > 0) {\n delayTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n } else {\n setOpen(true);\n }\n }, [clearTimers, disabled, delayDuration, setOpen]);\n\n const closeWithDelay = useCallback(() => {\n clearTimers();\n if (skipDelayDuration > 0) {\n skipDelayTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n }, skipDelayDuration);\n } else {\n setOpen(false);\n }\n }, [clearTimers, skipDelayDuration, setOpen]);\n\n const toggleWithDelay = useCallback(() => {\n if (open) {\n closeWithDelay();\n } else {\n openWithDelay();\n }\n }, [open, openWithDelay, closeWithDelay]);\n\n const toggleNow = useCallback(() => {\n if (open) closeNow();\n else openNow();\n }, [open, openNow, closeNow]);\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n clearTimers();\n };\n }, [clearTimers]);\n\n const contextValue: TooltipContextType = {\n open,\n setOpen,\n trigger,\n delayDuration,\n skipDelayDuration,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleWithDelay,\n toggleNow,\n closeOnBlur,\n };\n\n // Only render the TooltipContent when open is true (and no pending close timer),\n // to help guard against duplicate tooltips in StrictMode/rapid toggles.\n const shouldRenderContent = open === true;\n\n return (\n <TooltipContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n data-open={open}\n {...props}\n >\n {children}\n {shouldRenderContent ? (\n <TooltipContent\n className={contentClassName || \"\"}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary || null}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n updatePositionDeps={updatePositionDeps || []}\n variant={props.variant}\n size={props.size}\n placement={props.placement}\n >\n {content}\n </TooltipContent>\n ) : null}\n </div>\n </TooltipContext.Provider>\n );\n },\n);\n\nTooltipComponent.displayName = \"Tooltip\";\n\n// Note: Tooltip memoization and subcomponent attachment happens at end of file\n\n// Tooltip Trigger Component\nexport const TooltipTrigger = React.forwardRef<\n HTMLElement,\n TooltipTriggerProps\n>(({ children, asChild = true, className, ...props }, ref) => {\n const {\n trigger,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleNow,\n closeOnBlur,\n } = useTooltipContext();\n const triggerRef = useRef<HTMLElement>(null);\n\n const triggerProps = {\n ref: (node: HTMLElement) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n className: cn(className),\n \"data-tooltip-trigger\": true,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n // Call external handler first\n props.onMouseEnter?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") {\n openWithDelay();\n }\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") closeWithDelay();\n },\n onPointerEnter: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerEnter?.(e);\n if (trigger === \"hover\") openWithDelay();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerLeave?.(e);\n if (trigger === \"hover\") closeWithDelay();\n },\n onClick: (e: React.MouseEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onClick?.(e);\n if (trigger === \"click\") toggleNow();\n },\n onFocus: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onFocus?.(e);\n if (trigger === \"focus\") openNow();\n },\n onBlur: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onBlur?.(e);\n if (closeOnBlur) closeNow();\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onKeyDown?.(e);\n if (e.key === \"Escape\") closeNow();\n },\n };\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs -- cloneElement merges triggerProps (incl. ref) onto the child; the ref is not read here\n return React.cloneElement(children, {\n ...(children.props || {}),\n ...triggerProps,\n });\n }\n\n return (\n <span\n {...triggerProps}\n tabIndex={trigger === \"focus\" ? 0 : undefined}\n role={trigger === \"click\" ? \"button\" : undefined}\n >\n {children}\n </span>\n );\n});\n\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n// Tooltip Content Component\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n TooltipContentProps\n>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n placement = \"top\",\n className,\n sideOffset = 4,\n alignOffset: _alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary: _collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached: _hideWhenDetached = false,\n sticky: _sticky = \"partial\",\n updatePositionDeps,\n ...props\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const updatePosition = useCallback(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const trigger = content.parentElement?.querySelector(\n \"[data-tooltip-trigger]\",\n ) as HTMLElement;\n\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate position based on placement\n switch (placement) {\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"top-start\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.left;\n break;\n case \"top-end\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"bottom\":\n top = triggerRect.bottom + sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.left;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"left\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-start\":\n top = triggerRect.top;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"right\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-start\":\n top = triggerRect.top;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.right + sideOffset;\n break;\n }\n\n // Apply collision detection if enabled\n if (avoidCollisions) {\n // Horizontal collision detection\n if (left < collisionPadding) {\n left = collisionPadding;\n } else if (\n left + contentRect.width >\n viewport.width - collisionPadding\n ) {\n left = viewport.width - contentRect.width - collisionPadding;\n }\n\n // Vertical collision detection\n if (top < collisionPadding) {\n top = collisionPadding;\n } else if (\n top + contentRect.height >\n viewport.height - collisionPadding\n ) {\n top = viewport.height - contentRect.height - collisionPadding;\n }\n }\n\n setPosition({ top, left });\n }, [placement, sideOffset, avoidCollisions, collisionPadding]);\n\n React.useLayoutEffect(() => {\n updatePosition();\n\n const handleResize = () => updatePosition();\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleResize);\n };\n }, [updatePosition, updatePositionDeps]);\n\n return (\n <div\n ref={(node) => {\n (\n contentRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }}\n role=\"tooltip\"\n data-tooltip-instance=\"nostromo\"\n className={cn(tooltipVariants({ variant, size, placement }), className)}\n style={{\n position: \"fixed\",\n top: position.top,\n left: position.left,\n zIndex: 50,\n }}\n {...props}\n >\n {children}\n <div className={cn(arrowVariants({ variant, placement }))} />\n </div>\n );\n },\n);\n\nTooltipContent.displayName = \"TooltipContent\";\n\n// Tooltip Provider for global configuration\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n defaultOpen?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration: _delayDuration = 700,\n skipDelayDuration: _skipDelayDuration = 300,\n defaultOpen: _defaultOpen = false,\n}) => {\n return <div data-tooltip-provider>{children}</div>;\n};\n\n// Memoize Tooltip for performance optimization (after all subcomponents are defined)\nconst Tooltip = memo(TooltipComponent) as typeof TooltipComponent & {\n Trigger: typeof TooltipTrigger;\n Content: typeof TooltipContent;\n Provider: typeof TooltipProvider;\n};\n\n// Attach subcomponents to Tooltip for compound component pattern\nTooltip.Trigger = TooltipTrigger;\nTooltip.Content = TooltipContent;\nTooltip.Provider = TooltipProvider;\n\n// Export variants and Tooltip for external use\nexport { Tooltip, tooltipVariants, arrowVariants };\n"]}
@@ -0,0 +1,2 @@
1
+ import*as r from'react';var n=class extends r.Component{constructor(e){super(e),this.state={hasError:false,error:void 0,errorInfo:void 0};}static getDerivedStateFromError(e){return {hasError:true,error:e,errorInfo:void 0}}componentDidCatch(e,o){this.props.onError?.(e,o),this.setState({error:e,errorInfo:o});}resetError=()=>{this.setState({hasError:false,error:void 0,errorInfo:void 0});};render(){if(this.state.hasError){if(this.props.fallback){let e=this.props.fallback;return r.createElement(e,{error:this.state.error,resetError:this.resetError})}return r.createElement("div",{className:"flex min-h-[200px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/5 p-6"},r.createElement("div",{className:"text-center"},r.createElement("h2",{className:"text-lg font-semibold text-destructive mb-2"},"Something went wrong"),r.createElement("p",{className:"text-sm text-muted-foreground mb-4"},"An unexpected error occurred. Please try again."),r.createElement("button",{onClick:this.resetError,className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"},"Try again")),typeof window<"u"&&window.location?.hostname==="localhost"&&this.state.error&&r.createElement("details",{className:"mt-4 w-full max-w-md"},r.createElement("summary",{className:"cursor-pointer text-sm font-medium text-muted-foreground"},"Error Details (Development)"),r.createElement("pre",{className:"mt-2 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground"},this.state.error.toString(),this.state.errorInfo?.componentStack)))}return this.props.children}};function i(){let[t,e]=r.useState(null),o=r.useCallback(()=>{e(null);},[]),s=r.useCallback(a=>{e(a);},[]);return r.useEffect(()=>{if(t)throw t},[t]),{captureError:s,resetError:o}}export{n as a,i as b};//# sourceMappingURL=chunk-MVCGR7JQ.js.map
2
+ //# sourceMappingURL=chunk-MVCGR7JQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/error-boundary.tsx"],"names":["ErrorBoundary","props","error","errorInfo","FallbackComponent","useErrorHandler","setError","resetError","captureError"],"mappings":"wBAkBO,IAAMA,CAAAA,CAAN,cAAkC,WAAkD,CACzF,WAAA,CAAYC,CAAAA,CAA2B,CACrC,KAAA,CAAMA,CAAK,EACX,IAAA,CAAK,KAAA,CAAQ,CAAE,QAAA,CAAU,KAAA,CAAO,KAAA,CAAO,MAAA,CAAW,SAAA,CAAW,MAAU,EACzE,CAEA,OAAO,wBAAA,CAAyBC,CAAAA,CAAkC,CAEhE,OAAO,CAAE,QAAA,CAAU,IAAA,CAAM,KAAA,CAAAA,CAAAA,CAAO,SAAA,CAAW,MAAU,CACvD,CAES,iBAAA,CAAkBA,CAAAA,CAAcC,CAAAA,CAA4B,CAOnE,IAAA,CAAK,KAAA,CAAM,OAAA,GAAUD,CAAAA,CAAOC,CAAS,CAAA,CAGrC,IAAA,CAAK,QAAA,CAAS,CAAE,MAAAD,CAAAA,CAAO,SAAA,CAAAC,CAAU,CAAC,EACpC,CAEA,UAAA,CAAa,IAAM,CACjB,IAAA,CAAK,QAAA,CAAS,CAAE,QAAA,CAAU,KAAA,CAAO,MAAO,MAAA,CAAW,SAAA,CAAW,MAAU,CAAC,EAC3E,CAAA,CAES,MAAA,EAAS,CAChB,GAAI,IAAA,CAAK,KAAA,CAAM,QAAA,CAAU,CAEvB,GAAI,KAAK,KAAA,CAAM,QAAA,CAAU,CACvB,IAAMC,CAAAA,CAAoB,IAAA,CAAK,KAAA,CAAM,QAAA,CACrC,OAAO,CAAA,CAAA,aAAA,CAACA,CAAAA,CAAA,CAAkB,KAAA,CAAO,IAAA,CAAK,MAAM,KAAA,CAAO,UAAA,CAAY,IAAA,CAAK,UAAA,CAAY,CAClF,CAGA,OACE,CAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sHAAA,CAAA,CACb,CAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eACb,CAAA,CAAA,aAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,6CAAA,CAAA,CAA8C,sBAE5D,CAAA,CACA,gBAAC,GAAA,CAAA,CAAE,SAAA,CAAU,oCAAA,CAAA,CAAqC,iDAElD,CAAA,CACA,CAAA,CAAA,aAAA,CAAC,UACC,OAAA,CAAS,IAAA,CAAK,UAAA,CACd,SAAA,CAAU,6OAAA,CAAA,CACX,WAED,CACF,CAAA,CACC,OAAO,MAAA,CAAW,GAAA,EAAe,MAAA,CAAO,QAAA,EAAU,QAAA,GAAa,aAAe,IAAA,CAAK,KAAA,CAAM,KAAA,EACxF,CAAA,CAAA,aAAA,CAAC,SAAA,CAAA,CAAQ,SAAA,CAAU,sBAAA,CAAA,CACjB,CAAA,CAAA,aAAA,CAAC,SAAA,CAAA,CAAQ,SAAA,CAAU,0DAAA,CAAA,CAA2D,6BAE9E,CAAA,CACA,CAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,uEAAA,CAAA,CACZ,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,QAAA,EAAS,CAC1B,IAAA,CAAK,KAAA,CAAM,SAAA,EAAW,cACzB,CACF,CAEJ,CAEJ,CAEA,OAAO,IAAA,CAAK,KAAA,CAAM,QACpB,CACF,EAKO,SAASC,CAAAA,EAAkB,CAChC,GAAM,CAACH,CAAAA,CAAOI,CAAQ,CAAA,CAAU,WAAuB,IAAI,CAAA,CAErDC,CAAAA,CAAmB,CAAA,CAAA,WAAA,CAAY,IAAM,CACzCD,CAAAA,CAAS,IAAI,EACf,CAAA,CAAG,EAAE,CAAA,CAECE,CAAAA,CAAqB,cAAaN,CAAAA,EAAiB,CACvDI,CAAAA,CAASJ,CAAK,EAChB,CAAA,CAAG,EAAE,CAAA,CAEL,OAAM,CAAA,CAAA,SAAA,CAAU,IAAM,CACpB,GAAIA,EAEF,MAAMA,CAEV,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEH,CAAE,YAAA,CAAAM,CAAAA,CAAc,UAAA,CAAAD,CAAW,CACpC","file":"chunk-MVCGR7JQ.js","sourcesContent":["import * as React from 'react';\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | undefined;\n errorInfo: React.ErrorInfo | undefined;\n}\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n fallback?: React.ComponentType<{ error: Error | undefined; resetError: () => void }> | undefined;\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n}\n\n/**\n * ErrorBoundary component that catches JavaScript errors anywhere in the child component tree,\n * logs those errors, and displays a fallback UI instead of the component tree that crashed.\n */\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: undefined, errorInfo: undefined };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI\n return { hasError: true, error, errorInfo: undefined };\n }\n\n override componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n // Log the error to console in development\n if (typeof window !== 'undefined' && window.location?.hostname === 'localhost') {\n console.error('ErrorBoundary caught an error:', error, errorInfo);\n }\n\n // Call the onError callback if provided\n this.props.onError?.(error, errorInfo);\n\n // Update state with error info\n this.setState({ error, errorInfo });\n }\n\n resetError = () => {\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\n };\n\n override render() {\n if (this.state.hasError) {\n // Render custom fallback UI if provided\n if (this.props.fallback) {\n const FallbackComponent = this.props.fallback;\n return <FallbackComponent error={this.state.error} resetError={this.resetError} />;\n }\n\n // Default fallback UI\n return (\n <div className=\"flex min-h-[200px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/5 p-6\">\n <div className=\"text-center\">\n <h2 className=\"text-lg font-semibold text-destructive mb-2\">\n Something went wrong\n </h2>\n <p className=\"text-sm text-muted-foreground mb-4\">\n An unexpected error occurred. Please try again.\n </p>\n <button\n onClick={this.resetError}\n className=\"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n >\n Try again\n </button>\n </div>\n {typeof window !== 'undefined' && window.location?.hostname === 'localhost' && this.state.error && (\n <details className=\"mt-4 w-full max-w-md\">\n <summary className=\"cursor-pointer text-sm font-medium text-muted-foreground\">\n Error Details (Development)\n </summary>\n <pre className=\"mt-2 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground\">\n {this.state.error.toString()}\n {this.state.errorInfo?.componentStack}\n </pre>\n </details>\n )}\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Hook version of ErrorBoundary for functional components\n */\nexport function useErrorHandler() {\n const [error, setError] = React.useState<Error | null>(null);\n\n const resetError = React.useCallback(() => {\n setError(null);\n }, []);\n\n const captureError = React.useCallback((error: Error) => {\n setError(error);\n }, []);\n\n React.useEffect(() => {\n if (error) {\n \n throw error;\n }\n }, [error]);\n\n return { captureError, resetError };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import e from'react';import {cva}from'class-variance-authority';var C=cva("relative overflow-hidden rounded-full bg-muted",{variants:{size:{sm:"h-1",md:"h-2",lg:"h-3",xl:"h-4"},variant:{default:"bg-muted",primary:"bg-primary/10",success:"bg-success-100",warning:"bg-warning-100",error:"bg-error-100",energy:"bg-gradient-to-r from-cyan-100 to-blue-100",health:"bg-gradient-to-r from-green-100 to-emerald-100",alien:"bg-gradient-to-r from-purple-100 to-pink-100"}},defaultVariants:{size:"md",variant:"default"}}),M=cva("h-full transition-all duration-500 ease-out rounded-full",{variants:{variant:{default:"bg-primary",primary:"bg-primary",success:"bg-success-600",warning:"bg-warning-600",error:"bg-error-600",energy:"bg-gradient-to-r from-cyan-500 to-blue-500 shadow-lg shadow-cyan-500/25",health:"bg-gradient-to-r from-green-500 to-emerald-500 shadow-lg shadow-green-500/25",alien:"bg-gradient-to-r from-purple-500 to-pink-500 shadow-lg shadow-purple-500/25"},animated:{true:"animate-pulse",false:""},glow:{true:"shadow-lg",false:""}},defaultVariants:{variant:"default",animated:false,glow:false}}),y=cva("text-sm font-medium transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",primary:"text-primary",success:"text-success-700",warning:"text-warning-700",error:"text-error-700",energy:"text-cyan-700",health:"text-green-700",alien:"text-purple-700"}},defaultVariants:{variant:"default"}}),x=e.forwardRef(({className:d,value:i,max:u=100,showLabel:m=false,label:n,size:s,variant:r,animated:p=false,glow:c=false,indeterminate:a$1=false,...f},b)=>{let l=Math.min(Math.max(i/u*100,0),100),t=n||`${Math.round(l)}%`;return e.createElement("div",{className:"w-full"},(m||n)&&e.createElement("div",{className:"mb-2 flex justify-between items-center"},e.createElement("span",{className:a(y({variant:r}))},n||"Progress"),m&&e.createElement("span",{className:a(y({variant:r}))},t)),e.createElement("div",{ref:b,className:a(C({size:s,variant:r}),d),role:"progressbar","aria-valuenow":a$1?void 0:i,"aria-valuemin":0,"aria-valuemax":u,"aria-label":n||"Progress",...f},e.createElement("div",{className:a(M({variant:r,animated:p,glow:c}),a$1&&"animate-pulse w-1/3 absolute left-0"),style:a$1?{}:{width:`${l}%`,transition:"width 0.5s ease-out"}}),c&&e.createElement("div",{className:a("absolute inset-0 rounded-full opacity-30 blur-sm",r==="energy"&&"bg-gradient-to-r from-cyan-400 to-blue-400",r==="health"&&"bg-gradient-to-r from-green-400 to-emerald-400",r==="alien"&&"bg-gradient-to-r from-purple-400 to-pink-400",r==="primary"&&"bg-brand-400",r==="success"&&"bg-success-400",r==="warning"&&"bg-warning-400",r==="error"&&"bg-error-400"),style:{width:`${l}%`,transition:"width 0.5s ease-out"}})))});x.displayName="Progress";var E=a$1(x),_=cva("relative inline-flex items-center justify-center",{variants:{size:{sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16",xl:"w-20 h-20"}},defaultVariants:{size:"md"}}),L=cva("transform -rotate-90",{variants:{size:{sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16",xl:"w-20 h-20"}},defaultVariants:{size:"md"}}),v=e.forwardRef(({className:d,value:i,max:u=100,showLabel:m=false,label:n,size:s,variant:r="default",animated:p=false,glow:c=false,strokeWidth:a$1=2,...f},b)=>{let l=Math.min(Math.max(i/u*100,0),100),t=s==="sm"?14:s==="md"?20:s==="lg"?28:36,h=2*Math.PI*t,P=h,k=h-l/100*h,N=()=>{switch(r){case "primary":return "stroke-primary";case "success":return "stroke-success";case "warning":return "stroke-warning";case "error":return "stroke-error";case "energy":return "stroke-cyan-500";case "health":return "stroke-green-500";case "alien":return "stroke-purple-500";default:return "stroke-primary"}},V=()=>{if(!c)return "";switch(r){case "energy":return "drop-shadow-[0_0_8px_rgba(6,182,212,0.5)]";case "health":return "drop-shadow-[0_0_8px_rgba(34,197,94,0.5)]";case "alien":return "drop-shadow-[0_0_8px_rgba(168,85,247,0.5)]";default:return "drop-shadow-[0_0_8px_rgba(59,130,246,0.5)]"}};return e.createElement("div",{ref:b,className:a(_({size:s}),d),role:"progressbar","aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":u,"aria-label":n||"Circular progress",...f},e.createElement("svg",{className:a(L({size:s})),viewBox:`0 0 ${t*2+a$1*2} ${t*2+a$1*2}`},e.createElement("circle",{cx:t+a$1,cy:t+a$1,r:t,stroke:"currentColor",strokeWidth:a$1,fill:"none",className:"text-muted"}),e.createElement("circle",{cx:t+a$1,cy:t+a$1,r:t,stroke:"currentColor",strokeWidth:a$1,fill:"none",strokeLinecap:"round",strokeDasharray:P,strokeDashoffset:k,className:a(N(),V(),p&&"animate-pulse","transition-all duration-500 ease-out")})),m&&e.createElement("div",{className:"absolute inset-0 flex items-center justify-center"},e.createElement("span",{className:a("text-xs font-medium",s==="sm"&&"text-xs",s==="md"&&"text-sm",s==="lg"&&"text-base",s==="xl"&&"text-lg",y({variant:r}))},n||`${Math.round(l)}%`)))});v.displayName="CircularProgress";var j=a$1(v);export{C as a,M as b,y as c,E as d,j as e};//# sourceMappingURL=chunk-NLD4R74T.js.map
2
+ //# sourceMappingURL=chunk-NLD4R74T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/progress.tsx"],"names":["progressVariants","cva","progressBarVariants","progressLabelVariants","ProgressComponent","React","className","value","max","showLabel","label","size","variant","animated","glow","indeterminate","props","ref","percentage","displayLabel","cn","Progress","memo","circularProgressVariants","circularProgressSvgVariants","CircularProgressComponent","strokeWidth","radius","circumference","strokeDasharray","strokeDashoffset","getStrokeColor","getGlowFilter","CircularProgress"],"mappings":"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","file":"chunk-NLD4R74T.js","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\nconst progressVariants = cva(\"relative overflow-hidden rounded-full bg-muted\", {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n success: \"bg-success-100\",\n warning: \"bg-warning-100\",\n error: \"bg-error-100\",\n energy: \"bg-gradient-to-r from-cyan-100 to-blue-100\",\n health: \"bg-gradient-to-r from-green-100 to-emerald-100\",\n alien: \"bg-gradient-to-r from-purple-100 to-pink-100\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n});\n\nconst progressBarVariants = cva(\n \"h-full transition-all duration-500 ease-out rounded-full\",\n {\n variants: {\n variant: {\n default: \"bg-primary\",\n primary: \"bg-primary\",\n success: \"bg-success-600\",\n warning: \"bg-warning-600\",\n error: \"bg-error-600\",\n energy:\n \"bg-gradient-to-r from-cyan-500 to-blue-500 shadow-lg shadow-cyan-500/25\",\n health:\n \"bg-gradient-to-r from-green-500 to-emerald-500 shadow-lg shadow-green-500/25\",\n alien:\n \"bg-gradient-to-r from-purple-500 to-pink-500 shadow-lg shadow-purple-500/25\",\n },\n animated: {\n true: \"animate-pulse\",\n false: \"\",\n },\n glow: {\n true: \"shadow-lg\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n animated: false,\n glow: false,\n },\n },\n);\n\nconst progressLabelVariants = cva(\n \"text-sm font-medium transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n primary: \"text-primary\",\n success: \"text-success-700\",\n warning: \"text-warning-700\",\n error: \"text-error-700\",\n energy: \"text-cyan-700\",\n health: \"text-green-700\",\n alien: \"text-purple-700\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ProgressProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n value: number;\n max?: number;\n showLabel?: boolean;\n label?: string;\n animated?: boolean;\n glow?: boolean;\n indeterminate?: boolean;\n}\n\nconst ProgressComponent = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n className,\n value,\n max = 100,\n showLabel = false,\n label,\n size,\n variant,\n animated = false,\n glow = false,\n indeterminate = false,\n ...props\n },\n ref,\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const displayLabel = label || `${Math.round(percentage)}%`;\n\n return (\n <div className=\"w-full\">\n {(showLabel || label) && (\n <div className=\"mb-2 flex justify-between items-center\">\n <span className={cn(progressLabelVariants({ variant }))}>\n {label || \"Progress\"}\n </span>\n {showLabel && (\n <span className={cn(progressLabelVariants({ variant }))}>\n {displayLabel}\n </span>\n )}\n </div>\n )}\n\n <div\n ref={ref}\n className={cn(progressVariants({ size, variant }), className)}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label || \"Progress\"}\n {...props}\n >\n <div\n className={cn(\n progressBarVariants({ variant, animated, glow }),\n indeterminate && \"animate-pulse w-1/3 absolute left-0\",\n )}\n style={\n indeterminate\n ? {}\n : {\n width: `${percentage}%`,\n transition: \"width 0.5s ease-out\",\n }\n }\n />\n\n {/* Sci-fi glow effect */}\n {glow && (\n <div\n className={cn(\n \"absolute inset-0 rounded-full opacity-30 blur-sm\",\n variant === \"energy\" &&\n \"bg-gradient-to-r from-cyan-400 to-blue-400\",\n variant === \"health\" &&\n \"bg-gradient-to-r from-green-400 to-emerald-400\",\n variant === \"alien\" &&\n \"bg-gradient-to-r from-purple-400 to-pink-400\",\n variant === \"primary\" && \"bg-brand-400\",\n variant === \"success\" && \"bg-success-400\",\n variant === \"warning\" && \"bg-warning-400\",\n variant === \"error\" && \"bg-error-400\",\n )}\n style={{\n width: `${percentage}%`,\n transition: \"width 0.5s ease-out\",\n }}\n />\n )}\n </div>\n </div>\n );\n },\n);\n\nProgressComponent.displayName = \"Progress\";\n\n// Memoize Progress for performance optimization\nconst Progress = memo(ProgressComponent) as typeof ProgressComponent;\n\n// Circular Progress Component\nconst circularProgressVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n sm: \"w-8 h-8\",\n md: \"w-12 h-12\",\n lg: \"w-16 h-16\",\n xl: \"w-20 h-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst circularProgressSvgVariants = cva(\"transform -rotate-90\", {\n variants: {\n size: {\n sm: \"w-8 h-8\",\n md: \"w-12 h-12\",\n lg: \"w-16 h-16\",\n xl: \"w-20 h-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport interface CircularProgressProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof circularProgressVariants> {\n value: number;\n max?: number;\n showLabel?: boolean;\n label?: string;\n variant?:\n | \"default\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"energy\"\n | \"health\"\n | \"alien\";\n animated?: boolean;\n glow?: boolean;\n strokeWidth?: number;\n}\n\nconst CircularProgressComponent = React.forwardRef<\n HTMLDivElement,\n CircularProgressProps\n>(\n (\n {\n className,\n value,\n max = 100,\n showLabel = false,\n label,\n size,\n variant = \"default\",\n animated = false,\n glow = false,\n strokeWidth = 2,\n ...props\n },\n ref,\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const radius =\n size === \"sm\" ? 14 : size === \"md\" ? 20 : size === \"lg\" ? 28 : 36;\n const circumference = 2 * Math.PI * radius;\n const strokeDasharray = circumference;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n const getStrokeColor = () => {\n switch (variant) {\n case \"primary\":\n return \"stroke-primary\";\n case \"success\":\n return \"stroke-success\";\n case \"warning\":\n return \"stroke-warning\";\n case \"error\":\n return \"stroke-error\";\n case \"energy\":\n return \"stroke-cyan-500\";\n case \"health\":\n return \"stroke-green-500\";\n case \"alien\":\n return \"stroke-purple-500\";\n default:\n return \"stroke-primary\";\n }\n };\n\n const getGlowFilter = () => {\n if (!glow) return \"\";\n switch (variant) {\n case \"energy\":\n return \"drop-shadow-[0_0_8px_rgba(6,182,212,0.5)]\";\n case \"health\":\n return \"drop-shadow-[0_0_8px_rgba(34,197,94,0.5)]\";\n case \"alien\":\n return \"drop-shadow-[0_0_8px_rgba(168,85,247,0.5)]\";\n default:\n return \"drop-shadow-[0_0_8px_rgba(59,130,246,0.5)]\";\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(circularProgressVariants({ size }), className)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label || \"Circular progress\"}\n {...props}\n >\n <svg\n className={cn(circularProgressSvgVariants({ size }))}\n viewBox={`0 0 ${radius * 2 + strokeWidth * 2} ${radius * 2 + strokeWidth * 2}`}\n >\n {/* Background circle */}\n <circle\n cx={radius + strokeWidth}\n cy={radius + strokeWidth}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n fill=\"none\"\n className=\"text-muted\"\n />\n\n {/* Progress circle */}\n <circle\n cx={radius + strokeWidth}\n cy={radius + strokeWidth}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray={strokeDasharray}\n strokeDashoffset={strokeDashoffset}\n className={cn(\n getStrokeColor(),\n getGlowFilter(),\n animated && \"animate-pulse\",\n \"transition-all duration-500 ease-out\",\n )}\n />\n </svg>\n\n {/* Center label */}\n {showLabel && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span\n className={cn(\n \"text-xs font-medium\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n size === \"lg\" && \"text-base\",\n size === \"xl\" && \"text-lg\",\n progressLabelVariants({ variant }),\n )}\n >\n {label || `${Math.round(percentage)}%`}\n </span>\n </div>\n )}\n </div>\n );\n },\n);\n\nCircularProgressComponent.displayName = \"CircularProgress\";\n\n// Memoize CircularProgress for performance optimization\nconst CircularProgress = memo(\n CircularProgressComponent,\n) as typeof CircularProgressComponent;\n\nexport {\n Progress,\n CircularProgress,\n progressVariants,\n progressBarVariants,\n progressLabelVariants,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var f=classVarianceAuthority.cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),b=classVarianceAuthority.cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),v=classVarianceAuthority.cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),y=classVarianceAuthority.cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}}),h=({plans:c,title:s,subtitle:o,columns:l,variant:u,className:g,showYearly:a=false,onToggleBilling:m,...p})=>{let x=(t,d="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:d,minimumFractionDigits:0}).format(t);return r__default.default.createElement("section",{className:chunkITRGJNWL_cjs.a(f({variant:u}),g),...p},r__default.default.createElement("div",{className:"container mx-auto px-4"},(s||o)&&r__default.default.createElement("div",{className:"text-center mb-12"},s&&r__default.default.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},s),o&&r__default.default.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8"},o),m&&r__default.default.createElement("div",{className:"flex items-center justify-center gap-4 mb-8"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!a&&"text-foreground font-medium")},"Monthly"),r__default.default.createElement("button",{onClick:()=>m(!a),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",a?"translate-x-6":"translate-x-1")})),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",a&&"text-foreground font-medium")},"Yearly",r__default.default.createElement("span",{className:"ml-1 text-xs text-success-600"},"(Save 20%)")))),r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(b({columns:l}))},c.map((t,d)=>r__default.default.createElement("div",{key:t.id||d,className:chunkITRGJNWL_cjs.a(v({variant:t.popular?"popular":"default"}),t.popular&&"scale-105")},t.badge&&r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(y({variant:t.badge.variant}))},t.badge.text),r__default.default.createElement("div",{className:"text-center mb-6"},r__default.default.createElement("h3",{className:"text-2xl font-bold mb-2"},t.name),t.description&&r__default.default.createElement("p",{className:"text-muted-foreground text-sm mb-4"},t.description),r__default.default.createElement("div",{className:"mb-4"},r__default.default.createElement("span",{className:"text-4xl font-bold"},x(a&&t.price.yearly?t.price.yearly:t.price.monthly,t.currency)),r__default.default.createElement("span",{className:"text-muted-foreground ml-1"},"/",t.period||(a?"year":"month")))),r__default.default.createElement("ul",{className:"space-y-3 mb-8"},t.features.map(n=>r__default.default.createElement("li",{key:n.id,className:"flex items-center gap-3"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("w-5 h-5 rounded-full flex items-center justify-center text-xs",n.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},n.included?"\u2713":"\u2717"),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!n.included&&"text-muted-foreground line-through")},n.name)))),r__default.default.createElement("button",{className:chunkITRGJNWL_cjs.a("w-full py-3 px-4 rounded-lg font-medium transition-colors",t.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:t.cta.onClick},t.cta.text))))))};exports.a=h;//# sourceMappingURL=chunk-OEN63W3G.cjs.map
2
+ //# sourceMappingURL=chunk-OEN63W3G.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","Pricing","plans","title","subtitle","columns","variant","className","showYearly","onToggleBilling","props","formatPrice","price","currency","React","cn","plan","idx","feature"],"mappings":"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","file":"chunk-OEN63W3G.cjs","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst pricingVariants = cva(\n 'py-16 md:py-24',\n {\n variants: {\n variant: {\n default: 'bg-background',\n muted: 'bg-muted/30',\n accent: 'bg-accent/10',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingGridVariants = cva(\n 'grid gap-8',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1 max-w-md mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto',\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n);\n\nconst pricingCardVariants = cva(\n 'relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'border-border',\n accent: 'border-accent/20 bg-accent/5',\n popular: 'border-primary/20 bg-primary/5 ring-2 ring-primary/10',\n muted: 'border-muted bg-muted/20',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingBadgeVariants = cva(\n 'absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n accent: 'bg-accent text-accent-foreground',\n success: 'bg-success-100 text-success-800',\n warning: 'bg-warning-100 text-warning-800',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>['variant'];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>['columns'];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n ...props\n}) => {\n const formatPrice = (price: number, currency = 'USD') => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto mb-8\">\n {subtitle}\n </p>\n )}\n \n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-8\">\n <span className={cn('text-sm', !showYearly && 'text-foreground font-medium')}>\n Monthly\n </span>\n <button\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n 'inline-block h-4 w-4 transform rounded-full bg-background transition-transform',\n showYearly ? 'translate-x-6' : 'translate-x-1'\n )}\n />\n </button>\n <span className={cn('text-sm', showYearly && 'text-foreground font-medium')}>\n Yearly\n <span className=\"ml-1 text-xs text-success-600\">\n (Save 20%)\n </span>\n </span>\n </div>\n )}\n </div>\n )}\n \n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({ \n variant: plan.popular ? 'popular' : 'default' \n }),\n plan.popular && 'scale-105'\n )}\n >\n {plan.badge && (\n <div className={cn(pricingBadgeVariants({ variant: plan.badge.variant }))}>\n {plan.badge.text}\n </div>\n )}\n \n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n showYearly && plan.price.yearly \n ? plan.price.yearly \n : plan.price.monthly,\n plan.currency\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{plan.period || (showYearly ? 'year' : 'month')}\n </span>\n </div>\n </div>\n \n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n 'w-5 h-5 rounded-full flex items-center justify-center text-xs',\n feature.included\n ? 'bg-success-100 text-success-600'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {feature.included ? '✓' : '✗'}\n </span>\n <span className={cn(\n 'text-sm',\n !feature.included && 'text-muted-foreground line-through'\n )}>\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n \n <button\n className={cn(\n 'w-full py-3 px-4 rounded-lg font-medium transition-colors',\n plan.popular\n ? 'bg-primary text-primary-foreground hover:bg-primary/90'\n : 'bg-muted text-muted-foreground hover:bg-muted/80'\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1}from'./chunk-AC2JBXHQ.js';import*as e from'react';import*as a from'@radix-ui/react-switch';import {cva}from'class-variance-authority';var v=cva("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted",{variants:{variant:{default:"data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted focus-visible:ring-ring",error:"data-[state=checked]:bg-destructive data-[state=unchecked]:bg-destructive/20 focus-visible:ring-destructive",success:"data-[state=checked]:bg-success data-[state=unchecked]:bg-success-100 focus-visible:ring-success"},size:{sm:"h-4 w-7",default:"h-6 w-11",lg:"h-8 w-14"}},defaultVariants:{variant:"default",size:"default"}}),w=cva("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",{variants:{size:{sm:"h-3 w-3 data-[state=checked]:translate-x-3",default:"h-5 w-5 data-[state=checked]:translate-x-5",lg:"h-7 w-7 data-[state=checked]:translate-x-6"}},defaultVariants:{size:"default"}}),k=e.forwardRef(({className:u,children:x,label:c,helperText:r,error:i,required:n,variant:h,size:d,id:m,...f},p)=>{let b=e.useId(),s=m||b,o=r?`${s}-helper`:void 0,g=i?`${s}-error`:void 0;return e.createElement("div",{className:"flex items-center space-x-2"},e.createElement(a.Root,{ref:p,id:s,className:a$1(v({variant:i?"error":h||"default",size:d}),u),"aria-describedby":a$1(o,g)||void 0,"aria-invalid":i,"aria-required":n,...f},e.createElement(a.Thumb,{className:a$1(w({size:d}))})),e.createElement("div",{className:"grid gap-1.5 leading-none"},c&&e.createElement("label",{htmlFor:s,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},c,n&&e.createElement("span",{className:"text-error-500 ml-1"},"*")),r&&e.createElement("p",{id:o,className:a$1("text-sm text-muted-foreground",i&&"text-destructive")},r)))});k.displayName=a.Root.displayName;export{v as a,w as b,k as c};//# sourceMappingURL=chunk-OUWOPYAX.js.map
2
+ //# sourceMappingURL=chunk-OUWOPYAX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/switch.tsx"],"names":["switchVariants","cva","switchThumbVariants","Switch","className","_children","label","helperText","error","required","variant","size","id","props","ref","generatedId","switchId","helperTextId","errorId","cn"],"mappings":"uJAKA,IAAMA,CAAAA,CAAiBC,IACrB,4VAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CACE,yFAAA,CACF,KAAA,CACE,6GAAA,CACF,OAAA,CACE,kGACJ,EACA,IAAA,CAAM,CACJ,GAAI,SAAA,CACJ,OAAA,CAAS,WACT,EAAA,CAAI,UACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,EAEMC,CAAAA,CAAsBD,GAAAA,CAC1B,4KAAA,CACA,CACE,QAAA,CAAU,CACR,KAAM,CACJ,EAAA,CAAI,6CACJ,OAAA,CAAS,4CAAA,CACT,GAAI,4CACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,IAAA,CAAM,SACR,CACF,CACF,EAYME,CAAAA,CAAe,CAAA,CAAA,UAAA,CAInB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAUC,CAAAA,CACV,KAAA,CAAAC,EACA,UAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,EAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,IACG,CACH,IAAMC,EAAoB,CAAA,CAAA,KAAA,EAAM,CAC1BC,CAAAA,CAAWJ,CAAAA,EAAMG,CAAAA,CACjBE,CAAAA,CAAeV,EAAa,CAAA,EAAGS,CAAQ,UAAY,MAAA,CACnDE,CAAAA,CAAUV,EAAQ,CAAA,EAAGQ,CAAQ,CAAA,MAAA,CAAA,CAAW,MAAA,CAI9C,OACE,CAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CAAA,CACb,gBAAiB,CAAA,CAAA,IAAA,CAAhB,CACC,IAAKF,CAAAA,CACL,EAAA,CAAIE,CAAAA,CACJ,SAAA,CAAWG,GAAAA,CACTnB,CAAAA,CAAe,CAAE,OAAA,CARHQ,CAAAA,CAAQ,QAAUE,CAAAA,EAAW,SAAA,CAQF,KAAAC,CAAK,CAAC,CAAA,CAC/CP,CACF,CAAA,CACA,kBAAA,CAAkBe,IAAGF,CAAAA,CAAcC,CAAO,GAAK,MAAA,CAC/C,cAAA,CAAcV,EACd,eAAA,CAAeC,CAAAA,CACd,GAAGI,CAAAA,CAAAA,CAEJ,CAAA,CAAA,aAAA,CAAiB,CAAA,CAAA,KAAA,CAAhB,CACC,SAAA,CAAWM,GAAAA,CAAGjB,EAAoB,CAAE,IAAA,CAAAS,CAAK,CAAC,CAAC,CAAA,CAC7C,CACF,CAAA,CACA,CAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,2BAAA,CAAA,CACZL,GACC,CAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,QAASU,CAAAA,CACT,SAAA,CAAU,4FAAA,CAAA,CAETV,CAAAA,CACAG,CAAAA,EAAY,CAAA,CAAA,aAAA,CAAC,QAAK,SAAA,CAAU,qBAAA,CAAA,CAAsB,GAAC,CACtD,CAAA,CAEDF,GACC,CAAA,CAAA,aAAA,CAAC,GAAA,CAAA,CACC,EAAA,CAAIU,CAAAA,CACJ,SAAA,CAAWE,GAAAA,CACT,gCACAX,CAAAA,EAAS,kBACX,CAAA,CAAA,CAECD,CACH,CAEJ,CACF,CAEJ,CACF,EACAJ,CAAAA,CAAO,WAAA,CAA8B,CAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-OUWOPYAX.js","sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchVariants = cva(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted\",\n {\n variants: {\n variant: {\n default:\n \"data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted focus-visible:ring-ring\",\n error:\n \"data-[state=checked]:bg-destructive data-[state=unchecked]:bg-destructive/20 focus-visible:ring-destructive\",\n success:\n \"data-[state=checked]:bg-success data-[state=unchecked]:bg-success-100 focus-visible:ring-success\",\n },\n size: {\n sm: \"h-4 w-7\",\n default: \"h-6 w-11\",\n lg: \"h-8 w-14\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3 data-[state=checked]:translate-x-3\",\n default: \"h-5 w-5 data-[state=checked]:translate-x-5\",\n lg: \"h-7 w-7 data-[state=checked]:translate-x-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\nexport interface SwitchProps\n extends\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>,\n VariantProps<typeof switchVariants> {\n label?: string;\n helperText?: string;\n error?: boolean;\n required?: boolean;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(\n (\n {\n className,\n children: _children,\n label,\n helperText,\n error,\n required,\n variant,\n size,\n id,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const switchId = id || generatedId;\n const helperTextId = helperText ? `${switchId}-helper` : undefined;\n const errorId = error ? `${switchId}-error` : undefined;\n\n const switchVariant = error ? \"error\" : variant || \"default\";\n\n return (\n <div className=\"flex items-center space-x-2\">\n <SwitchPrimitive.Root\n ref={ref}\n id={switchId}\n className={cn(\n switchVariants({ variant: switchVariant, size }),\n className,\n )}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n aria-required={required}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(switchThumbVariants({ size }))}\n />\n </SwitchPrimitive.Root>\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n {required && <span className=\"text-error-500 ml-1\">*</span>}\n </label>\n )}\n {helperText && (\n <p\n id={helperTextId}\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-destructive\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n </div>\n );\n },\n);\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n\nexport { Switch, switchVariants, switchThumbVariants };\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var e__default=/*#__PURE__*/_interopDefault(e);var c=classVarianceAuthority.cva("animate-pulse rounded-md bg-muted",{variants:{variant:{default:"bg-muted",light:"bg-muted/50",dark:"bg-muted",primary:"bg-primary/10",success:"bg-success-200",warning:"bg-warning-200",error:"bg-error-200"},size:{xs:"h-2",sm:"h-3",md:"h-4",lg:"h-6",xl:"h-8","2xl":"h-12","3xl":"h-16"},shape:{rectangle:"rounded-md",circle:"rounded-full",square:"rounded-lg",pill:"rounded-full"},animation:{pulse:"animate-pulse",wave:"animate-wave",none:"animate-none"}},defaultVariants:{variant:"default",size:"md",shape:"rectangle",animation:"pulse"}}),N=e__default.default.forwardRef(({className:n,children:s,width:a,height:r,variant:t="default",size:o="md",shape:i="rectangle",animation:d="pulse",loading:u=true,...f},h)=>{if(!u&&s)return e__default.default.createElement(e__default.default.Fragment,null,s);let p={width:a||void 0,height:r||void 0};return e__default.default.createElement("div",{ref:h,className:chunkITRGJNWL_cjs.a(c({variant:t,size:o,shape:i,animation:d}),n),style:p,"aria-label":"Loading content",role:"status",...f})});N.displayName="Skeleton";var l=chunk7SPPGTBT_cjs.a(N),k=e__default.default.forwardRef(({className:n,lines:s=3,lastLineWidth:a="75%",spacing:r="md",variant:t="default",animation:o="pulse",loading:i=true,...d},u)=>i?e__default.default.createElement("div",{ref:u,className:chunkITRGJNWL_cjs.a("space-y-2",{none:"space-y-0",sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}[r],n),"aria-label":"Loading text content",role:"status",...d},Array.from({length:s},(h,p)=>e__default.default.createElement("div",{key:p,className:chunkITRGJNWL_cjs.a(c({variant:t,animation:o}),"h-4 rounded-md",p===s-1&&"w-3/4"),style:{width:p===s-1?a:"100%"}}))):null);k.displayName="SkeletonText";var v=e__default.default.forwardRef(({className:n,size:s="md",variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={xs:"h-6 w-6",sm:"h-8 w-8",md:"h-10 w-10",lg:"h-12 w-12",xl:"h-16 w-16","2xl":"h-20 w-20"};return e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a(c({variant:a,animation:r}),"rounded-full",d[s],n),"aria-label":"Loading avatar",role:"status",...o})});v.displayName="SkeletonAvatar";var g=e__default.default.forwardRef(({className:n,size:s="md",variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={sm:"h-8 px-3",md:"h-10 px-4",lg:"h-12 px-6"},u={default:"bg-muted",primary:"bg-primary/10",secondary:"bg-secondary",outline:"bg-muted/50 border border-border",ghost:"bg-muted/50"},f=a||"default";return e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a(c({animation:r}),"rounded-md",d[s],u[f],n),"aria-label":"Loading button",role:"status",...o})});g.displayName="SkeletonButton";var y=e__default.default.forwardRef(({className:n,showAvatar:s=true,showActions:a=true,variant:r="default",animation:t="pulse",loading:o=true,...i},d)=>o?e__default.default.createElement("div",{ref:d,className:chunkITRGJNWL_cjs.a("p-6 border border-border rounded-lg bg-card",n),"aria-label":"Loading card content",role:"status",...i},e__default.default.createElement("div",{className:"space-y-4"},e__default.default.createElement("div",{className:"flex items-center space-x-3"},s&&e__default.default.createElement(v,{size:"md",variant:r,animation:t}),e__default.default.createElement("div",{className:"flex-1 space-y-2"},e__default.default.createElement(l,{className:"h-4 w-3/4",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-3 w-1/2",variant:r,animation:t}))),e__default.default.createElement("div",{className:"space-y-2"},e__default.default.createElement(l,{className:"h-4 w-full",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-4 w-5/6",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-4 w-4/5",variant:r,animation:t})),a&&e__default.default.createElement("div",{className:"flex space-x-2 pt-4"},e__default.default.createElement(g,{size:"sm",animation:t}),e__default.default.createElement(g,{size:"sm",animation:t})))):null);y.displayName="SkeletonCard";var S=e__default.default.forwardRef(({className:n,variant:s="default",animation:a="pulse",loading:r=true,...t},o)=>r?e__default.default.createElement("div",{ref:o,className:chunkITRGJNWL_cjs.a("space-y-3",n),"aria-label":"Loading table content",role:"status",...t},e__default.default.createElement("div",{className:"grid grid-cols-4 gap-4"},e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a})),Array.from({length:5},(i,d)=>e__default.default.createElement("div",{key:d,className:"grid grid-cols-4 gap-4"},e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a})))):null);S.displayName="SkeletonTable";var w=e__default.default.forwardRef(({className:n,items:s=5,variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>t?e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a("space-y-3",n),"aria-label":"Loading list content",role:"status",...o},Array.from({length:s},(d,u)=>e__default.default.createElement("div",{key:u,className:"flex items-center space-x-3"},e__default.default.createElement(v,{size:"sm",variant:a,animation:r}),e__default.default.createElement("div",{className:"flex-1 space-y-2"},e__default.default.createElement(l,{className:"h-4 w-3/4",variant:a,animation:r}),e__default.default.createElement(l,{className:"h-3 w-1/2",variant:a,animation:r}))))):null);w.displayName="SkeletonList";exports.a=c;exports.b=l;exports.c=k;exports.d=v;exports.e=g;exports.f=y;exports.g=S;exports.h=w;//# sourceMappingURL=chunk-OZ3RIKZO.cjs.map
2
+ //# sourceMappingURL=chunk-OZ3RIKZO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/skeleton.tsx"],"names":["skeletonVariants","cva","SkeletonComponent","React","className","children","width","height","variant","size","shape","animation","loading","props","ref","style","cn","Skeleton","memo","SkeletonText","lines","lastLineWidth","spacing","_","index","SkeletonAvatar","sizeClasses","SkeletonButton","variantClasses","finalVariant","SkeletonCard","showAvatar","showActions","SkeletonTable","SkeletonList","items"],"mappings":"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","file":"chunk-OZ3RIKZO.cjs","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Skeleton variants\nconst skeletonVariants = cva(\"animate-pulse rounded-md bg-muted\", {\n variants: {\n variant: {\n default: \"bg-muted\",\n light: \"bg-muted/50\",\n dark: \"bg-muted\",\n primary: \"bg-primary/10\",\n success: \"bg-success-200\",\n warning: \"bg-warning-200\",\n error: \"bg-error-200\",\n },\n size: {\n xs: \"h-2\",\n sm: \"h-3\",\n md: \"h-4\",\n lg: \"h-6\",\n xl: \"h-8\",\n \"2xl\": \"h-12\",\n \"3xl\": \"h-16\",\n },\n shape: {\n rectangle: \"rounded-md\",\n circle: \"rounded-full\",\n square: \"rounded-lg\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"animate-wave\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n shape: \"rectangle\",\n animation: \"pulse\",\n },\n});\n\n// Types\nexport interface SkeletonProps extends VariantProps<typeof skeletonVariants> {\n className?: string;\n children?: React.ReactNode;\n width?: string | number;\n height?: string | number;\n lines?: number;\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n loading?: boolean;\n}\n\nexport interface SkeletonTextProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n lines?: number;\n lastLineWidth?: string | number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n}\n\nexport interface SkeletonButtonProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\" | \"variant\"\n> {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\n}\n\nexport interface SkeletonCardProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n showAvatar?: boolean;\n showActions?: boolean;\n}\n\n// Main Skeleton Component\nconst SkeletonComponent = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n children,\n width,\n height,\n variant = \"default\",\n size = \"md\",\n shape = \"rectangle\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n const style = {\n width: width || undefined,\n height: height || undefined,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, size, shape, animation }),\n className,\n )}\n style={style}\n aria-label=\"Loading content\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonComponent.displayName = \"Skeleton\";\n\n// Memoize Skeleton for performance optimization\nexport const Skeleton = memo(SkeletonComponent) as typeof SkeletonComponent;\n\n// Skeleton Text Component\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n className,\n lines = 3,\n lastLineWidth = \"75%\",\n spacing = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const spacingClasses = {\n none: \"space-y-0\",\n sm: \"space-y-1\",\n md: \"space-y-2\",\n lg: \"space-y-3\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-2\", spacingClasses[spacing], className)}\n aria-label=\"Loading text content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: lines }, (_, index) => (\n <div\n key={index}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"h-4 rounded-md\",\n index === lines - 1 && \"w-3/4\",\n )}\n style={{\n width: index === lines - 1 ? lastLineWidth : \"100%\",\n }}\n />\n ))}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nexport const SkeletonAvatar = React.forwardRef<\n HTMLDivElement,\n SkeletonAvatarProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"rounded-full\",\n sizeClasses[size],\n className,\n )}\n aria-label=\"Loading avatar\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nexport const SkeletonButton = React.forwardRef<\n HTMLDivElement,\n SkeletonButtonProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n sm: \"h-8 px-3\",\n md: \"h-10 px-4\",\n lg: \"h-12 px-6\",\n };\n\n const variantClasses = {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary\",\n outline: \"bg-muted/50 border border-border\",\n ghost: \"bg-muted/50\",\n };\n\n const finalVariant = variant || \"default\";\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ animation }),\n \"rounded-md\",\n sizeClasses[size],\n variantClasses[finalVariant],\n className,\n )}\n aria-label=\"Loading button\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Card Component\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n className,\n showAvatar = true,\n showActions = true,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"p-6 border border-border rounded-lg bg-card\", className)}\n aria-label=\"Loading card content\"\n role=\"status\"\n {...props}\n >\n <div className=\"space-y-4\">\n {/* Header with avatar and title */}\n <div className=\"flex items-center space-x-3\">\n {showAvatar && (\n <SkeletonAvatar\n size=\"md\"\n variant={variant}\n animation={animation}\n />\n )}\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-2\">\n <Skeleton\n className=\"h-4 w-full\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-5/6\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-4/5\"\n variant={variant}\n animation={animation}\n />\n </div>\n\n {/* Actions */}\n {showActions && (\n <div className=\"flex space-x-2 pt-4\">\n <SkeletonButton size=\"sm\" animation={animation} />\n <SkeletonButton size=\"sm\" animation={animation} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Table Component\nexport const SkeletonTable = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading table content\"\n role=\"status\"\n {...props}\n >\n {/* Header */}\n <div className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n\n {/* Rows */}\n {Array.from({ length: 5 }, (_, index) => (\n <div key={index} className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonTable.displayName = \"SkeletonTable\";\n\n// Skeleton List Component\nexport const SkeletonList = React.forwardRef<\n HTMLDivElement,\n SkeletonProps & { items?: number }\n>(\n (\n {\n className,\n items = 5,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading list content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: items }, (_, index) => (\n <div key={index} className=\"flex items-center space-x-3\">\n <SkeletonAvatar size=\"sm\" variant={variant} animation={animation} />\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonList.displayName = \"SkeletonList\";\n\n// Export variants for external use\nexport { skeletonVariants };\n"]}