@jarllyng/nostromo 3.1.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/base.css +0 -48
  2. package/dist/chunk-2DNQXAMB.cjs +1 -0
  3. package/dist/chunk-2HYJSYQX.js +3 -0
  4. package/dist/chunk-2HYJSYQX.js.map +1 -0
  5. package/dist/chunk-2JQROMCM.js +1 -0
  6. package/dist/chunk-35I2BJC3.js +3 -0
  7. package/dist/chunk-35I2BJC3.js.map +1 -0
  8. package/dist/chunk-35RWQSO2.cjs +3 -0
  9. package/dist/chunk-35RWQSO2.cjs.map +1 -0
  10. package/dist/chunk-3BNGK67W.js +1 -0
  11. package/dist/chunk-3QVQ2TNE.cjs +3 -0
  12. package/dist/chunk-3QVQ2TNE.cjs.map +1 -0
  13. package/dist/chunk-3V3OIZWQ.cjs +1 -0
  14. package/dist/chunk-44HISN45.js +1 -0
  15. package/dist/chunk-4FSJEW7W.cjs +1 -0
  16. package/dist/chunk-55N2IT62.cjs +1 -0
  17. package/dist/chunk-5PVFLXPO.cjs +1 -0
  18. package/dist/{chunk-ZC4HJSII.cjs → chunk-5Z3MYAVM.cjs} +3 -2
  19. package/dist/{chunk-ZC4HJSII.cjs.map → chunk-5Z3MYAVM.cjs.map} +1 -1
  20. package/dist/chunk-6QAYHUNV.js +1 -0
  21. package/dist/chunk-7PPAI3MM.cjs +1 -0
  22. package/dist/chunk-7SPPGTBT.cjs +1 -0
  23. package/dist/chunk-7WEIVLG3.cjs +1 -0
  24. package/dist/chunk-7YFUAGIW.cjs +1 -0
  25. package/dist/chunk-ABA7B5DE.js +1 -0
  26. package/dist/chunk-AC2JBXHQ.js +1 -0
  27. package/dist/chunk-AHRTNKXE.js +1 -0
  28. package/dist/chunk-AVTJE2O2.js +1 -0
  29. package/dist/{chunk-ZQDFYSZB.cjs → chunk-AYEM2M4H.cjs} +3 -2
  30. package/dist/{chunk-ZQDFYSZB.cjs.map → chunk-AYEM2M4H.cjs.map} +1 -1
  31. package/dist/chunk-BL2TM4YT.js +3 -0
  32. package/dist/chunk-BL2TM4YT.js.map +1 -0
  33. package/dist/chunk-BYV75TDY.cjs +1 -0
  34. package/dist/{chunk-BSUHBLZO.cjs → chunk-BZ5ZCZJX.cjs} +3 -2
  35. package/dist/{chunk-BSUHBLZO.cjs.map → chunk-BZ5ZCZJX.cjs.map} +1 -1
  36. package/dist/chunk-BZF3ZOAN.js +1 -0
  37. package/dist/chunk-C7HZAQBX.cjs +3 -0
  38. package/dist/chunk-C7HZAQBX.cjs.map +1 -0
  39. package/dist/chunk-CEMOHO3Z.js +1 -0
  40. package/dist/chunk-COXN6XBA.js +1 -0
  41. package/dist/chunk-DNTPD3PJ.js +3 -0
  42. package/dist/chunk-DNTPD3PJ.js.map +1 -0
  43. package/dist/chunk-EFCNLYYW.cjs +1 -0
  44. package/dist/chunk-EVRQYWZ3.cjs +1 -0
  45. package/dist/chunk-FUENXWR7.cjs +1 -0
  46. package/dist/chunk-G35BR7SK.cjs +1 -0
  47. package/dist/chunk-HD3TMQPR.js +1 -0
  48. package/dist/{chunk-TGPWW7FC.js → chunk-HRJXPCGF.js} +3 -2
  49. package/dist/{chunk-TGPWW7FC.js.map → chunk-HRJXPCGF.js.map} +1 -1
  50. package/dist/chunk-HWZTMVQV.cjs +1 -0
  51. package/dist/chunk-IOX4WPJL.cjs +1 -0
  52. package/dist/chunk-ITRGJNWL.cjs +1 -0
  53. package/dist/chunk-J4VRJVTO.cjs +1 -0
  54. package/dist/chunk-JCETHQ55.cjs +3 -0
  55. package/dist/chunk-JCETHQ55.cjs.map +1 -0
  56. package/dist/chunk-JEHIMQQZ.js +1 -0
  57. package/dist/chunk-JUOCEYUF.cjs +1 -0
  58. package/dist/chunk-K2JCGDU7.cjs +1 -0
  59. package/dist/chunk-LR4VUFOQ.js +1 -0
  60. package/dist/chunk-LXQT7FH6.cjs +1 -0
  61. package/dist/chunk-LYVCB45L.js +1 -0
  62. package/dist/chunk-MDXW6IRM.cjs +3 -0
  63. package/dist/chunk-MDXW6IRM.cjs.map +1 -0
  64. package/dist/chunk-MLJZU63I.cjs +1 -0
  65. package/dist/chunk-MLSE5XSB.cjs +1 -0
  66. package/dist/chunk-MOPCE5RA.js +3 -0
  67. package/dist/chunk-MOPCE5RA.js.map +1 -0
  68. package/dist/chunk-MVCGR7JQ.js +1 -0
  69. package/dist/chunk-MY2KMTUS.js +3 -0
  70. package/dist/chunk-MY2KMTUS.js.map +1 -0
  71. package/dist/chunk-NBX6FKCA.cjs +3 -0
  72. package/dist/chunk-NBX6FKCA.cjs.map +1 -0
  73. package/dist/chunk-NC27D5Y3.cjs +3 -0
  74. package/dist/chunk-NC27D5Y3.cjs.map +1 -0
  75. package/dist/chunk-NLD4R74T.js +1 -0
  76. package/dist/chunk-NPSIDFOF.cjs +3 -0
  77. package/dist/chunk-NPSIDFOF.cjs.map +1 -0
  78. package/dist/chunk-OEN63W3G.cjs +1 -0
  79. package/dist/chunk-OUWOPYAX.js +1 -0
  80. package/dist/chunk-PMNNV4ML.cjs +1 -0
  81. package/dist/chunk-Q6QMSAJR.js +1 -0
  82. package/dist/chunk-QBAURT3I.js +1 -0
  83. package/dist/chunk-QKM5LPRW.js +3 -0
  84. package/dist/chunk-QKM5LPRW.js.map +1 -0
  85. package/dist/chunk-RC2THAIA.js +1 -0
  86. package/dist/chunk-SVWQWRPZ.js +3 -0
  87. package/dist/chunk-SVWQWRPZ.js.map +1 -0
  88. package/dist/chunk-UIEGBT4T.js +3 -0
  89. package/dist/chunk-UIEGBT4T.js.map +1 -0
  90. package/dist/chunk-UL6MF7ES.js +1 -0
  91. package/dist/{chunk-4WFEVNXW.cjs → chunk-V45EOCAD.cjs} +3 -2
  92. package/dist/chunk-V45EOCAD.cjs.map +1 -0
  93. package/dist/chunk-V77N662N.cjs +1 -0
  94. package/dist/chunk-VD6S2PE4.js +1 -0
  95. package/dist/chunk-VNDL67OG.cjs +3 -0
  96. package/dist/chunk-VNDL67OG.cjs.map +1 -0
  97. package/dist/chunk-WK6LNC2E.cjs +3 -0
  98. package/dist/chunk-WK6LNC2E.cjs.map +1 -0
  99. package/dist/{chunk-M5IBD3KV.js → chunk-WO3KCAN6.js} +3 -2
  100. package/dist/{chunk-M5IBD3KV.js.map → chunk-WO3KCAN6.js.map} +1 -1
  101. package/dist/chunk-WW2DDHCI.js +1 -0
  102. package/dist/{chunk-7W456HZL.js → chunk-XJJJEWSU.js} +3 -2
  103. package/dist/{chunk-7W456HZL.js.map → chunk-XJJJEWSU.js.map} +1 -1
  104. package/dist/chunk-XLZJ6HBL.js +3 -0
  105. package/dist/chunk-XLZJ6HBL.js.map +1 -0
  106. package/dist/chunk-XPIBRXTW.cjs +1 -0
  107. package/dist/chunk-XQUZ7DUN.js +1 -0
  108. package/dist/chunk-XRVHMGMD.js +3 -0
  109. package/dist/chunk-XRVHMGMD.js.map +1 -0
  110. package/dist/chunk-YNSODGYK.js +1 -0
  111. package/dist/chunk-ZEJAFIOC.js +1 -0
  112. package/dist/components/core/accordion.cjs +1 -0
  113. package/dist/components/core/accordion.js +1 -0
  114. package/dist/components/core/alert.cjs +1 -0
  115. package/dist/components/core/alert.d.cts +1 -1
  116. package/dist/components/core/alert.d.ts +1 -1
  117. package/dist/components/core/alert.js +1 -0
  118. package/dist/components/core/avatar.cjs +1 -0
  119. package/dist/components/core/avatar.js +1 -0
  120. package/dist/components/core/badge.cjs +1 -0
  121. package/dist/components/core/badge.d.cts +2 -2
  122. package/dist/components/core/badge.d.ts +2 -2
  123. package/dist/components/core/badge.js +1 -0
  124. package/dist/components/core/breadcrumb.cjs +2 -1
  125. package/dist/components/core/breadcrumb.d.cts +10 -4
  126. package/dist/components/core/breadcrumb.d.ts +10 -4
  127. package/dist/components/core/breadcrumb.js +2 -1
  128. package/dist/components/core/button.cjs +1 -0
  129. package/dist/components/core/button.d.cts +2 -2
  130. package/dist/components/core/button.d.ts +2 -2
  131. package/dist/components/core/button.js +1 -0
  132. package/dist/components/core/calendar.cjs +2 -1
  133. package/dist/components/core/calendar.js +2 -1
  134. package/dist/components/core/card.cjs +1 -0
  135. package/dist/components/core/card.js +1 -0
  136. package/dist/components/core/charts-lazy.cjs +2 -1
  137. package/dist/components/core/charts-lazy.js +2 -1
  138. package/dist/components/core/charts.cjs +2 -1
  139. package/dist/components/core/charts.js +2 -1
  140. package/dist/components/core/checkbox.cjs +2 -1
  141. package/dist/components/core/checkbox.d.cts +1 -1
  142. package/dist/components/core/checkbox.d.ts +1 -1
  143. package/dist/components/core/checkbox.js +2 -1
  144. package/dist/components/core/data-table.cjs +2 -1
  145. package/dist/components/core/data-table.d.cts +2 -2
  146. package/dist/components/core/data-table.d.ts +2 -2
  147. package/dist/components/core/data-table.js +2 -1
  148. package/dist/components/core/dialog.cjs +2 -1
  149. package/dist/components/core/dialog.d.cts +21 -3
  150. package/dist/components/core/dialog.d.ts +21 -3
  151. package/dist/components/core/dialog.js +2 -1
  152. package/dist/components/core/error-boundary.cjs +1 -0
  153. package/dist/components/core/error-boundary.d.cts +1 -1
  154. package/dist/components/core/error-boundary.d.ts +1 -1
  155. package/dist/components/core/error-boundary.js +1 -0
  156. package/dist/components/core/error-message.cjs +1 -0
  157. package/dist/components/core/error-message.d.cts +1 -1
  158. package/dist/components/core/error-message.d.ts +1 -1
  159. package/dist/components/core/error-message.js +1 -0
  160. package/dist/components/core/helper-text.cjs +1 -0
  161. package/dist/components/core/helper-text.d.cts +1 -1
  162. package/dist/components/core/helper-text.d.ts +1 -1
  163. package/dist/components/core/helper-text.js +1 -0
  164. package/dist/components/core/icon.cjs +2 -1
  165. package/dist/components/core/icon.d.cts +3 -3
  166. package/dist/components/core/icon.d.ts +3 -3
  167. package/dist/components/core/icon.js +2 -1
  168. package/dist/components/core/input.cjs +1 -0
  169. package/dist/components/core/input.d.cts +1 -1
  170. package/dist/components/core/input.d.ts +1 -1
  171. package/dist/components/core/input.js +1 -0
  172. package/dist/components/core/label.cjs +1 -0
  173. package/dist/components/core/label.d.cts +1 -1
  174. package/dist/components/core/label.d.ts +1 -1
  175. package/dist/components/core/label.js +1 -0
  176. package/dist/components/core/pagination.cjs +1 -0
  177. package/dist/components/core/pagination.d.cts +1 -1
  178. package/dist/components/core/pagination.d.ts +1 -1
  179. package/dist/components/core/pagination.js +1 -0
  180. package/dist/components/core/progress.cjs +1 -0
  181. package/dist/components/core/progress.d.cts +3 -3
  182. package/dist/components/core/progress.d.ts +3 -3
  183. package/dist/components/core/progress.js +1 -0
  184. package/dist/components/core/radio-group.cjs +1 -0
  185. package/dist/components/core/radio-group.d.cts +1 -1
  186. package/dist/components/core/radio-group.d.ts +1 -1
  187. package/dist/components/core/radio-group.js +1 -0
  188. package/dist/components/core/select.cjs +1 -0
  189. package/dist/components/core/select.d.cts +3 -3
  190. package/dist/components/core/select.d.ts +3 -3
  191. package/dist/components/core/select.js +1 -0
  192. package/dist/components/core/separator.cjs +2 -1
  193. package/dist/components/core/separator.js +2 -1
  194. package/dist/components/core/skeleton.cjs +2 -1
  195. package/dist/components/core/skeleton.d.cts +1 -1
  196. package/dist/components/core/skeleton.d.ts +1 -1
  197. package/dist/components/core/skeleton.js +2 -1
  198. package/dist/components/core/switch.cjs +1 -0
  199. package/dist/components/core/switch.d.cts +1 -1
  200. package/dist/components/core/switch.d.ts +1 -1
  201. package/dist/components/core/switch.js +1 -0
  202. package/dist/components/core/table.cjs +2 -1
  203. package/dist/components/core/table.d.cts +11 -1
  204. package/dist/components/core/table.d.ts +11 -1
  205. package/dist/components/core/table.js +2 -1
  206. package/dist/components/core/tabs.cjs +1 -0
  207. package/dist/components/core/tabs.js +1 -0
  208. package/dist/components/core/textarea.cjs +2 -1
  209. package/dist/components/core/textarea.d.cts +1 -1
  210. package/dist/components/core/textarea.d.ts +1 -1
  211. package/dist/components/core/textarea.js +2 -1
  212. package/dist/components/core/toast.cjs +2 -1
  213. package/dist/components/core/toast.d.cts +2 -2
  214. package/dist/components/core/toast.d.ts +2 -2
  215. package/dist/components/core/toast.js +2 -1
  216. package/dist/components/core/tooltip.cjs +2 -1
  217. package/dist/components/core/tooltip.d.cts +2 -2
  218. package/dist/components/core/tooltip.d.ts +2 -2
  219. package/dist/components/core/tooltip.js +2 -1
  220. package/dist/components/marketing/features.cjs +1 -0
  221. package/dist/components/marketing/features.d.cts +2 -2
  222. package/dist/components/marketing/features.d.ts +2 -2
  223. package/dist/components/marketing/features.js +1 -0
  224. package/dist/components/marketing/gallery.cjs +1 -0
  225. package/dist/components/marketing/gallery.d.cts +1 -1
  226. package/dist/components/marketing/gallery.d.ts +1 -1
  227. package/dist/components/marketing/gallery.js +1 -0
  228. package/dist/components/marketing/hero.cjs +1 -0
  229. package/dist/components/marketing/hero.js +1 -0
  230. package/dist/components/marketing/logo-wall.cjs +1 -0
  231. package/dist/components/marketing/logo-wall.js +1 -0
  232. package/dist/components/marketing/pricing.cjs +1 -0
  233. package/dist/components/marketing/pricing.d.cts +1 -1
  234. package/dist/components/marketing/pricing.d.ts +1 -1
  235. package/dist/components/marketing/pricing.js +1 -0
  236. package/dist/components/marketing/testimonials.cjs +1 -0
  237. package/dist/components/marketing/testimonials.d.cts +1 -1
  238. package/dist/components/marketing/testimonials.d.ts +1 -1
  239. package/dist/components/marketing/testimonials.js +1 -0
  240. package/dist/index.cjs +2 -1
  241. package/dist/index.cjs.map +1 -1
  242. package/dist/index.css +1 -1
  243. package/dist/index.css.map +1 -1
  244. package/dist/index.d.cts +3 -3
  245. package/dist/index.d.ts +3 -3
  246. package/dist/index.js +2 -1
  247. package/dist/index.js.map +1 -1
  248. package/dist/lib/lazy.cjs +1 -0
  249. package/dist/lib/lazy.d.cts +3 -3
  250. package/dist/lib/lazy.d.ts +3 -3
  251. package/dist/lib/lazy.js +1 -0
  252. package/dist/lib/performance.cjs +1 -0
  253. package/dist/lib/performance.js +1 -0
  254. package/dist/themes/lv-426.css +48 -52
  255. package/dist/themes/mother.css +52 -58
  256. package/dist/themes/nostromo.css +35 -30
  257. package/dist/themes/sulaco.css +47 -51
  258. package/dist/tokens.css +1 -1
  259. package/package.json +4 -3
  260. package/dist/chunk-4PN7OGLX.cjs +0 -2
  261. package/dist/chunk-4PN7OGLX.cjs.map +0 -1
  262. package/dist/chunk-4TYVEXRA.cjs +0 -2
  263. package/dist/chunk-4TYVEXRA.cjs.map +0 -1
  264. package/dist/chunk-4WFEVNXW.cjs.map +0 -1
  265. package/dist/chunk-B2BWBKZA.cjs +0 -2
  266. package/dist/chunk-B2BWBKZA.cjs.map +0 -1
  267. package/dist/chunk-CVOSWGQZ.js +0 -2
  268. package/dist/chunk-CVOSWGQZ.js.map +0 -1
  269. package/dist/chunk-EGQ2Q37R.cjs +0 -2
  270. package/dist/chunk-EGQ2Q37R.cjs.map +0 -1
  271. package/dist/chunk-EIXD3Y4R.js +0 -2
  272. package/dist/chunk-EIXD3Y4R.js.map +0 -1
  273. package/dist/chunk-G5ZSOVJY.cjs +0 -2
  274. package/dist/chunk-G5ZSOVJY.cjs.map +0 -1
  275. package/dist/chunk-G6TR5RGR.js +0 -2
  276. package/dist/chunk-G6TR5RGR.js.map +0 -1
  277. package/dist/chunk-GUJB555L.js +0 -2
  278. package/dist/chunk-GUJB555L.js.map +0 -1
  279. package/dist/chunk-JZROH43C.js +0 -2
  280. package/dist/chunk-JZROH43C.js.map +0 -1
  281. package/dist/chunk-MRZOLUSF.js +0 -2
  282. package/dist/chunk-MRZOLUSF.js.map +0 -1
  283. package/dist/chunk-OZ3RIKZO.cjs +0 -2
  284. package/dist/chunk-OZ3RIKZO.cjs.map +0 -1
  285. package/dist/chunk-PEYPRWZP.js +0 -2
  286. package/dist/chunk-PEYPRWZP.js.map +0 -1
  287. package/dist/chunk-PVHTEE5T.cjs +0 -2
  288. package/dist/chunk-PVHTEE5T.cjs.map +0 -1
  289. package/dist/chunk-QF5CRDZI.js +0 -2
  290. package/dist/chunk-QF5CRDZI.js.map +0 -1
  291. package/dist/chunk-RPRISB7O.cjs +0 -2
  292. package/dist/chunk-RPRISB7O.cjs.map +0 -1
  293. package/dist/chunk-SD4IIQ2I.cjs +0 -2
  294. package/dist/chunk-SD4IIQ2I.cjs.map +0 -1
  295. package/dist/chunk-SLGMKBST.js +0 -2
  296. package/dist/chunk-SLGMKBST.js.map +0 -1
  297. package/dist/chunk-TJFZAMBB.js +0 -2
  298. package/dist/chunk-TJFZAMBB.js.map +0 -1
  299. package/dist/chunk-VXMDVKAD.js +0 -2
  300. package/dist/chunk-VXMDVKAD.js.map +0 -1
  301. package/dist/chunk-ZYP2PDSX.cjs +0 -2
  302. package/dist/chunk-ZYP2PDSX.cjs.map +0 -1
@@ -1 +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-ZC4HJSII.cjs","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"]}
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-5Z3MYAVM.cjs","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-ring\"\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-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\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"]}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import {a}from'./chunk-AC2JBXHQ.js';import n,{useState,useCallback}from'react';import {cva}from'class-variance-authority';var L=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=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=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=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=cva("h-4 w-4 shrink-0 transition-transform duration-200",{variants:{open:{true:"rotate-180",false:"rotate-0"}},defaultVariants:{open:false}}),E=n.createContext(void 0),N=n.createContext(null),T=()=>{let t=n.useContext(E);if(!t)throw new Error("Accordion components must be used within an Accordion");return t},P=()=>{let t=n.useContext(N);if(!t)throw new Error("Accordion components must be used within an AccordionItem");return t},S=n.forwardRef(({children:t,type:a$1="single",collapsible:c=true,value:l,defaultValue:i,onValueChange:o,variant:u="default",size:s="md",className:r,...f},g)=>{let[y,x]=useState(()=>i!==void 0?i:a$1==="single"?"":[]),p=l!==void 0,A=p?l:y,m=useCallback(e=>{p||x(e),o?.(e);},[p,o]),d={type:a$1,value:A,onValueChange:m,variant:u||"default",size:s||"md"};return n.createElement(E.Provider,{value:d},n.createElement("div",{ref:g,className:a(L({variant:u,size:s}),r),"data-accordion-root":"true",...f},t))});S.displayName="Accordion";var $=n.forwardRef(({value:t,children:a$1,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.useId(),p=`accordion-trigger-${t}-${x}`,A=`accordion-content-${t}-${x}`,m=f==="single"?r===t:Array.isArray(r)&&r.includes(t),d=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.createElement(N.Provider,{value:e},n.createElement("div",{ref:u,className:a(z({variant:y}),i&&"opacity-50 cursor-not-allowed",l),"data-value":t,"data-disabled":i,...o},a$1))});$.displayName="AccordionItem";var O=n.forwardRef(({children:t,variant:a$1="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$1==="default"?x:a$1||"default",m=c==="md"?p:c||"md",d=y||i||false;return n.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:a(B({variant:A,size:m}),d&&"opacity-50 cursor-not-allowed",l)},n.createElement("span",{className:"flex-1"},t),n.createElement("svg",{className:a(R({open:s})),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},n.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})))});O.displayName="AccordionTrigger";var j=n.forwardRef(({children:t,size:a$1="md",className:c,...l},i)=>{let{open:o,contentId:u,triggerId:s}=P(),{size:r}=T();return n.createElement("div",{...l,ref:i,id:u,role:"region","aria-labelledby":s,hidden:!o,"data-state":o?"open":"closed",className:a(K({size:a$1==="md"?r:a$1}),"overflow-hidden transition-all duration-200 ease-in-out",c)},n.createElement("div",{className:"px-6 py-4"},t))});j.displayName="AccordionContent";
2
3
  export{L as a,z as b,B as c,K as d,R as e,S as f,$ as g,O as h,j as i};//# sourceMappingURL=chunk-6QAYHUNV.js.map
3
4
  //# sourceMappingURL=chunk-6QAYHUNV.js.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  'use strict';var chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.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 S=classVarianceAuthority.cva("grid gap-4",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",5:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5",6:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6"},spacing:{sm:"gap-2",md:"gap-4",lg:"gap-6",xl:"gap-8"}},defaultVariants:{columns:3,spacing:"md"}}),q=classVarianceAuthority.cva("relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg",{variants:{aspectRatio:{square:"aspect-square",video:"aspect-video",portrait:"aspect-[3/4]",landscape:"aspect-[4/3]",wide:"aspect-[16/9]"},hover:{none:"",scale:"hover:scale-105",zoom:"hover:scale-110",lift:"hover:-translate-y-2"}},defaultVariants:{aspectRatio:"square",hover:"scale"}}),A=classVarianceAuthority.cva("fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm",{variants:{animation:{fade:"animate-in fade-in duration-300",slide:"animate-in slide-in-from-bottom duration-300",zoom:"animate-in zoom-in duration-300"}},defaultVariants:{animation:"fade"}}),B=({images:a,className:y,itemClassName:k,columns:w=3,spacing:N="md",showLightbox:g=true,lightboxAnimation:I="fade",onImageClick:v,itemHover:V="scale",itemAspectRatio:C="square",showThumbnails:z=false,thumbnailSize:D="md",...P})=>{let[l,r]=e.useState(null),[i,n]=e.useState(-1),f=e.useCallback((t,s)=>{g&&(r(t),n(s)),v?.(t,s);},[g,v]),d=e.useCallback(()=>{r(null),n(-1);},[]),b=e.useCallback(()=>{if(i>0){let t=i-1;r(a[t]||null),n(t);}},[i,a]),p=e.useCallback(()=>{if(i<a.length-1){let t=i+1;r(a[t]||null),n(t);}},[i,a]),G=e.useCallback(t=>{t.key==="Escape"?d():t.key==="ArrowLeft"?b():t.key==="ArrowRight"&&p();},[d,b,p]);return e__default.default.createElement(e__default.default.Fragment,null,e__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(S({columns:w,spacing:N}),y),...P},a.map((t,s)=>e__default.default.createElement("div",{key:t.id||s,className:chunkITRGJNWL_cjs.a(q({aspectRatio:C,hover:V}),k),role:"button",tabIndex:0,onClick:()=>f(t,s),onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),f(t,s));},"aria-label":`View image ${s+1}: ${t.alt}`},e__default.default.createElement("img",{src:z&&t.thumbnail?t.thumbnail:t.src,alt:t.alt,className:"w-full h-full object-cover",loading:"lazy"}),(t.title||t.description)&&e__default.default.createElement("div",{className:"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end"},e__default.default.createElement("div",{className:"p-4 text-white"},t.title&&e__default.default.createElement("h3",{className:"font-semibold text-sm sm:text-base"},t.title),t.description&&e__default.default.createElement("p",{className:"text-xs sm:text-sm text-white/80 mt-1"},t.description)))))),l&&g&&e__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(A({animation:I})),onClick:d,onKeyDown:G,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"lightbox-title"},e__default.default.createElement("div",{className:"relative max-w-4xl max-h-[90vh] mx-4",onClick:t=>t.stopPropagation()},e__default.default.createElement("img",{src:l.src,alt:l.alt,className:"max-w-full max-h-full object-contain rounded-lg",id:"lightbox-title"}),(l.title||l.description)&&e__default.default.createElement("div",{className:"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg"},l.title&&e__default.default.createElement("h3",{className:"font-semibold text-lg mb-2"},l.title),l.description&&e__default.default.createElement("p",{className:"text-sm text-white/80"},l.description)),a.length>1&&e__default.default.createElement(e__default.default.Fragment,null,i>0&&e__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",className:"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:b,"aria-label":"Previous image"},"\u2190"),i<a.length-1&&e__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",className:"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white",onClick:p,"aria-label":"Next image"},"\u2192")),e__default.default.createElement(chunk5PVFLXPO_cjs.b,{variant:"ghost",size:"sm",className:"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white",onClick:d,"aria-label":"Close lightbox"},"\u2715"),a.length>1&&e__default.default.createElement("div",{className:"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm"},i+1," / ",a.length))))},F=B;exports.a=B;exports.b=F;//# sourceMappingURL=chunk-7PPAI3MM.cjs.map
2
3
  //# sourceMappingURL=chunk-7PPAI3MM.cjs.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  'use strict';var n=require('react');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 n__namespace=/*#__PURE__*/_interopNamespace(n);function t(o){return n__namespace.memo(o)}exports.a=t;//# sourceMappingURL=chunk-7SPPGTBT.cjs.map
2
3
  //# sourceMappingURL=chunk-7SPPGTBT.cjs.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  'use strict';var n=require('react');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 n__namespace=/*#__PURE__*/_interopNamespace(n);function p(r,o={}){let{enabled:e=typeof window<"u"&&window.location?.hostname==="localhost",logToConsole:t=true,onMetric:a,threshold:i=0}=o,c=n__namespace.useRef(0),u=n__namespace.useId(),m=n__namespace.useRef(`${r}-render-${u}`);return n__namespace.useEffect(()=>{if(!e||typeof window>"u"||!window.performance)return;c.current+=1;let s=`${m.current}-${c.current}`;return performance.mark(`${s}-start`),()=>{performance.mark(`${s}-end`);try{performance.measure(`${s}-measure`,`${s}-start`,`${s}-end`);let f=performance.getEntriesByName(`${s}-measure`)[0],l=f?f.duration:0;if(performance.clearMarks(`${s}-start`),performance.clearMarks(`${s}-end`),performance.clearMeasures(`${s}-measure`),l>i){let d={renderTime:l,componentName:r,timestamp:Date.now()};a?.(d);}}catch{}}}),{renderCount:c.current,isMonitoring:e}}function w(r,o,e){let t=n__namespace.forwardRef((a,i)=>{let c=o||r.displayName||r.name||"Unknown";p(c,e);let u=n__namespace.useCallback(m=>{typeof i=="function"?i(m):i&&"current"in i&&(i.current=m);},[i]);return n__namespace.createElement(r,{...a,ref:u})});return t.displayName=`withPerformanceMonitoring(${r.displayName||r.name})`,t}function T(){let[r,o]=n__namespace.useState(null);return n__namespace.useEffect(()=>{if(typeof window>"u"||window.location?.hostname!=="localhost"||typeof window>"u"||!("memory"in performance))return;let e=()=>{let a=performance.memory;a&&o({usedJSHeapSize:a.usedJSHeapSize,totalJSHeapSize:a.totalJSHeapSize,jsHeapSizeLimit:a.jsHeapSizeLimit});};e();let t=setInterval(e,5e3);return ()=>clearInterval(t)},[]),r}var b={debounce:(r,o)=>{let e;return (...t)=>{clearTimeout(e),e=setTimeout(()=>r(...t),o);}},throttle:(r,o)=>{let e;return (...t)=>{e||(r(...t),e=true,setTimeout(()=>e=false,o));}},memoize:r=>{let o=new Map;return((...e)=>{let t=JSON.stringify(e);if(o.has(t))return o.get(t);let a=r(...e);return o.set(t,a),a})}};exports.a=p;exports.b=w;exports.c=T;exports.d=b;//# sourceMappingURL=chunk-7WEIVLG3.cjs.map
2
3
  //# sourceMappingURL=chunk-7WEIVLG3.cjs.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  '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 x=classVarianceAuthority.cva("text-sm transition-all duration-200",{variants:{variant:{default:"text-muted-foreground",error:"text-destructive",success:"text-success-600",warning:"text-warning-600",info:"text-info-600"},size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{variant:"default",size:"default"}}),l=e__namespace.forwardRef(({className:r,variant:a,size:s,...i},n)=>e__namespace.createElement("div",{ref:n,className:chunkITRGJNWL_cjs.a(x({variant:a,size:s}),r),...i}));l.displayName="HelperText";exports.a=x;exports.b=l;//# sourceMappingURL=chunk-7YFUAGIW.cjs.map
2
3
  //# sourceMappingURL=chunk-7YFUAGIW.cjs.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';var x=cva("text-sm transition-all duration-200",{variants:{variant:{default:"text-muted-foreground",error:"text-destructive",success:"text-success-600",warning:"text-warning-600",info:"text-info-600"},size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{variant:"default",size:"default"}}),l=e.forwardRef(({className:r,variant:a$1,size:s,...i},n)=>e.createElement("div",{ref:n,className:a(x({variant:a$1,size:s}),r),...i}));l.displayName="HelperText";export{x as a,l as b};//# sourceMappingURL=chunk-ABA7B5DE.js.map
2
3
  //# sourceMappingURL=chunk-ABA7B5DE.js.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  import {clsx}from'clsx';import {twMerge}from'tailwind-merge';function s(...r){return twMerge(clsx(r))}export{s as a};//# sourceMappingURL=chunk-AC2JBXHQ.js.map
2
3
  //# sourceMappingURL=chunk-AC2JBXHQ.js.map
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';import {X,Info,XCircle,Warning,CheckCircle}from'phosphor-react';var M=cva("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground border-border",success:"bg-success-50 text-success-900 border-success-200 [&>svg]:text-success-600",warning:"bg-warning-50 text-warning-900 border-warning-200 [&>svg]:text-warning-600",error:"bg-error-50 text-error-900 border-error-200 [&>svg]:text-error-600",info:"bg-info-50 text-info-900 border-info-200 [&>svg]:text-info-600"},size:{sm:"p-3 text-sm [&>svg]:h-4 [&>svg]:w-4",default:"p-4 text-sm [&>svg]:h-5 [&>svg]:w-5",lg:"p-6 text-base [&>svg]:h-6 [&>svg]:w-6"}},defaultVariants:{variant:"default",size:"default"}}),d=cva("mb-1 font-medium leading-none tracking-tight"),g=cva("text-sm [&_p]:leading-relaxed"),C=cva("absolute right-2 top-2 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",{variants:{size:{sm:"h-6 w-6",default:"h-7 w-7",lg:"h-8 w-8"}},defaultVariants:{size:"default"}}),u=e.forwardRef(({className:a$1,variant:r,size:s,title:o,description:l,dismissible:b=false,onDismiss:n,icon:c,children:w,...h},x)=>{let[A,N]=e.useState(true),T=e.useCallback(()=>{N(false),n&&n();},[n]),R=()=>{switch(r){case "success":return e.createElement(CheckCircle,{className:"h-5 w-5"});case "warning":return e.createElement(Warning,{className:"h-5 w-5"});case "error":return e.createElement(XCircle,{className:"h-5 w-5"});case "info":return e.createElement(Info,{className:"h-5 w-5"});default:return null}};return A?e.createElement("div",{ref:x,role:"alert",className:a(M({variant:r,size:s}),a$1),...h},c!==null&&(c||R()),b&&e.createElement("button",{type:"button",className:a(C({size:s})),onClick:T,"aria-label":"Dismiss alert"},e.createElement(X,{className:"h-4 w-4"})),o&&e.createElement("div",{className:a(d())},o),l&&e.createElement("div",{className:a(g())},l),w):null});u.displayName="Alert";var m=e.forwardRef(({className:a$1,...r},s)=>e.createElement("h5",{ref:s,className:a(d(),a$1),...r}));m.displayName="AlertTitle";var p=e.forwardRef(({className:a$1,...r},s)=>e.createElement("div",{ref:s,className:a(g(),a$1),...r}));p.displayName="AlertDescription";var v=a$1(u);v.Title=m;v.Description=p;export{M as a,d as b,g as c,C as d,m as e,p as f,v as g};//# sourceMappingURL=chunk-AHRTNKXE.js.map
2
3
  //# sourceMappingURL=chunk-AHRTNKXE.js.map
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {Slot,Slottable}from'@radix-ui/react-slot';import {cva}from'class-variance-authority';var C=cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:["bg-primary text-primary-foreground shadow-md hover:bg-primary/90 hover:shadow-lg","active:scale-[0.98] active:shadow-sm","border border-primary/20"],secondary:["bg-secondary text-secondary-foreground border border-border","hover:bg-secondary/80 hover:border-border hover:shadow-sm","active:scale-[0.98]"],outline:["border-2 border-border bg-transparent text-foreground","hover:bg-muted hover:border-primary hover:text-primary","focus-visible:ring-ring/20 focus-visible:border-primary","active:scale-[0.98]"],ghost:["text-foreground hover:bg-muted hover:text-foreground","active:bg-muted/80 active:scale-[0.98]"],destructive:["bg-destructive text-destructive-foreground shadow-md hover:bg-destructive/90 hover:shadow-lg","active:scale-[0.98] active:shadow-sm","border border-destructive/20"],subtle:["bg-muted text-muted-foreground border border-border","hover:bg-muted/80 hover:border-border","active:scale-[0.98]"],link:"text-primary underline-offset-4 hover:underline"},size:{sm:"h-8 px-3 text-xs rounded-sm",default:"h-10 px-4 text-sm rounded-md",lg:"h-11 px-6 text-base rounded-lg",xl:"h-12 px-8 text-lg rounded-lg",icon:"h-10 w-10 rounded-md"},state:{default:"",loading:"cursor-wait",success:"bg-success hover:bg-success-600 text-success-foreground",error:"bg-destructive hover:bg-destructive/90 text-destructive-foreground"}},defaultVariants:{variant:"default",size:"default",state:"default"}}),c=e.forwardRef(({className:u,variant:l,size:m,state:b="default",loading:t=false,loadingText:s,asChild:a$1=false,children:r,disabled:v,...f},g)=>{let p=a$1?Slot:"button",n=v||t,h=t?"loading":b,o=t&&s?s:r,x=a$1&&o!==r&&e.isValidElement(r)?e.cloneElement(r,void 0,o):o;return e.createElement(p,{className:a(C({variant:l,size:m,state:h,className:u})),ref:g,disabled:n,"aria-disabled":n,...f},t&&e.createElement("svg",{className:"mr-2 h-4 w-4 animate-spin",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","aria-hidden":"true"},e.createElement("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.createElement("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})),e.createElement(Slottable,null,x))});c.displayName="Button";var E=a$1(c);
2
3
  export{C as a,E as b};//# sourceMappingURL=chunk-AVTJE2O2.js.map
3
4
  //# sourceMappingURL=chunk-AVTJE2O2.js.map
@@ -1,2 +1,3 @@
1
- 'use strict';var chunkSD4IIQ2I_cjs=require('./chunk-SD4IIQ2I.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),t=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var t__default=/*#__PURE__*/_interopDefault(t);var Ve=classVarianceAuthority.cva("flex flex-wrap items-center gap-2 p-4 bg-muted border-b border-border",{variants:{variant:{default:"bg-muted",compact:"p-2 bg-card",minimal:"p-2 bg-transparent border-0"}},defaultVariants:{variant:"default"}});function te({data:F,columns:x,searchable:z=true,searchPlaceholder:oe="Search...",searchKeys:j,onSearch:V,searchTerm:E,onSearchTermChange:K,filterable:D=false,filters:b=[],onFilter:B,columnFilters:_,onColumnFiltersChange:q,defaultSortColumn:ae,defaultSortDirection:se="asc",sortColumn:G,sortDirection:ie,onSortChange:y,defaultPageSize:ue=10,showPagination:h=true,currentPage:H,pageSize:J,onPageChange:Q,onPageSizeChange:M,totalItems:s,showSearch:U=true,showFilters:W=true,filterBarClassName:le,searchBarClassName:de,rowKey:ce="id",emptyText:me="No data found",...ge}){let I=E!==void 0,L=_!==void 0,k=G!==void 0,o=H!==void 0,[fe,pe]=t.useState(""),m=I?E:fe,X=t.useMemo(()=>I?e=>K?.(e):pe,[I,K]),[be,ye]=t.useState({}),d=L?_:be,$=t.useMemo(()=>L?e=>q?.(e):ye,[L,q]),[he,ke]=t.useState(ae),[ve,Te]=t.useState(se),g=k?G:he,v=k?ie:ve,Y=t.useMemo(()=>k?e=>{e&&y&&v&&y(e,v);}:ke,[k,y,v]),Z=t.useMemo(()=>k?e=>{g&&y&&y(g,e);}:Te,[k,y,g]),[xe,Ce]=t.useState(1),[Se,we]=t.useState(ue),f=o?H:xe,a=J!==void 0?J:Se,p=t.useMemo(()=>o?e=>Q?.(e):Ce,[o,Q]),R=t.useMemo(()=>M?e=>M(e):we,[M]),C=t.useMemo(()=>{if(!z||!m.trim())return F;let e=m.toLowerCase(),r=j||x.map(n=>n.dataIndex||n.key).filter(Boolean);return F.filter(n=>r.some(i=>{let c=n[i];return c==null?false:String(c).toLowerCase().includes(e)}))},[F,m,z,j,x]),S=t.useMemo(()=>!D||b.length===0||Object.keys(d).length===0?C:C.filter(e=>b.every(r=>{let n=d[r.key];if(n==null||n==="")return true;if(r.filterFn)return r.filterFn(n,e);let i=e[r.key];switch(r.type){case "text":return String(i).toLowerCase().includes(String(n).toLowerCase());case "number":return Number(i)===Number(n);case "boolean":return !!i==!!n;case "select":return String(i)===String(n);default:return String(i).includes(String(n))}})),[C,d,D,b]),l=t.useMemo(()=>{if(!g)return S;let e=[...S],r=x.find(n=>n.key===g);return !r||!r.sortable||e.sort((n,i)=>{let c=r.dataIndex?n[r.dataIndex]:n[r.key],w=r.dataIndex?i[r.dataIndex]:i[r.key];if(c==null)return 1;if(w==null)return -1;let N=0;return typeof c=="number"&&typeof w=="number"?N=c-w:N=String(c).localeCompare(String(w)),v==="asc"?N:-N}),e},[S,g,v,x]),Fe=t.useMemo(()=>{if(!h||o&&s!==void 0)return l;let e=(f-1)*a,r=e+a;return l.slice(e,r)},[l,f,a,h,o,s]);t.useMemo(()=>h?Math.ceil(o&&s!==void 0?s/a:l.length/a):1,[h,o,s,a,l.length]);let De=t.useCallback(e=>{X(e),o||p(1);},[X,p,o]),ee=t.useCallback((e,r)=>{let n={...d,[e]:r};$(n),o||p(1);},[d,$,p,o]),Ne=t.useCallback((e,r)=>{Y(e.key),Z(r);},[Y,Z]),Pe=t.useCallback((e,r)=>{p(e),r!==a&&(R(r),p(1));},[a,p,R]);return t__default.default.useEffect(()=>{V&&V(m,C);},[m,C,V]),t__default.default.useEffect(()=>{B&&B(d,S);},[d,S,B]),t__default.default.createElement("div",{className:"w-full"},(U||W&&D&&b.length>0)&&t__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(Ve(),le)},U&&z&&t__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a("flex-1 min-w-[200px]",de)},t__default.default.createElement(chunkFUENXWR7_cjs.b,{type:"text",placeholder:oe,value:m,onChange:e=>De(e.target.value),className:"w-full","aria-label":"Search table"})),W&&D&&b.length>0&&t__default.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},b.map(e=>{let r=d[e.key];return e.type==="select"&&e.options?t__default.default.createElement("select",{key:e.key,value:String(r||""),onChange:n=>ee(e.key,n.target.value||void 0),className:"rounded-md border border-input px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:border-primary","aria-label":`Filter by ${e.key}`},t__default.default.createElement("option",{value:""},"All ",e.key),e.options.map(n=>t__default.default.createElement("option",{key:n.value,value:String(n.value)},n.label))):t__default.default.createElement(chunkFUENXWR7_cjs.b,{key:e.key,type:e.type==="number"?"number":"text",placeholder:e.placeholder||`Filter ${e.key}...`,value:String(r||""),onChange:n=>ee(e.key,e.type==="number"?Number(n.target.value):n.target.value),className:"min-w-[150px]","aria-label":`Filter by ${e.key}`})}),Object.keys(d).length>0&&t__default.default.createElement("button",{type:"button",onClick:()=>$({}),className:"px-3 py-2 text-sm text-muted-foreground hover:text-foreground underline","aria-label":"Clear all filters"},"Clear filters"))),t__default.default.createElement(chunkSD4IIQ2I_cjs.d,{...ge,data:Fe,columns:x,rowKey:ce,emptyText:me,...g&&{sortColumn:g,sortDirection:v},onSort:Ne,...h&&{pagination:{current:f,pageSize:a,total:o&&s!==void 0?s:l.length,onChange:Pe,showSizeChanger:true}}}),h&&(o&&s!==void 0?s>0:l.length>0)&&t__default.default.createElement("div",{className:"mt-2 px-4 py-2 text-sm text-muted-foreground"},o&&s!==void 0?t__default.default.createElement(t__default.default.Fragment,null,"Showing ",(f-1)*a+1," to"," ",Math.min(f*a,s)," of ",s," ","results",m&&" (filtered)"):t__default.default.createElement(t__default.default.Fragment,null,"Showing ",(f-1)*a+1," to"," ",Math.min(f*a,l.length)," of"," ",l.length," results",m&&` (filtered from ${F.length} total)`)))}te.displayName="DataTable";var Ke=chunk7SPPGTBT_cjs.a(te);exports.a=te;exports.b=Ke;//# sourceMappingURL=chunk-ZQDFYSZB.cjs.map
2
- //# sourceMappingURL=chunk-ZQDFYSZB.cjs.map
1
+ "use client";
2
+ 'use strict';var chunkVNDL67OG_cjs=require('./chunk-VNDL67OG.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),t=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var t__default=/*#__PURE__*/_interopDefault(t);var Ve=classVarianceAuthority.cva("flex flex-wrap items-center gap-2 p-4 bg-muted border-b border-border",{variants:{variant:{default:"bg-muted",compact:"p-2 bg-card",minimal:"p-2 bg-transparent border-0"}},defaultVariants:{variant:"default"}});function te({data:F,columns:x,searchable:z=true,searchPlaceholder:oe="Search...",searchKeys:j,onSearch:V,searchTerm:E,onSearchTermChange:K,filterable:D=false,filters:b=[],onFilter:B,columnFilters:_,onColumnFiltersChange:q,defaultSortColumn:ae,defaultSortDirection:se="asc",sortColumn:G,sortDirection:ie,onSortChange:y,defaultPageSize:ue=10,showPagination:h=true,currentPage:H,pageSize:J,onPageChange:Q,onPageSizeChange:M,totalItems:s,showSearch:U=true,showFilters:W=true,filterBarClassName:le,searchBarClassName:de,rowKey:ce="id",emptyText:me="No data found",...ge}){let I=E!==void 0,L=_!==void 0,k=G!==void 0,o=H!==void 0,[fe,pe]=t.useState(""),m=I?E:fe,X=t.useMemo(()=>I?e=>K?.(e):pe,[I,K]),[be,ye]=t.useState({}),d=L?_:be,$=t.useMemo(()=>L?e=>q?.(e):ye,[L,q]),[he,ke]=t.useState(ae),[ve,Te]=t.useState(se),g=k?G:he,v=k?ie:ve,Y=t.useMemo(()=>k?e=>{e&&y&&v&&y(e,v);}:ke,[k,y,v]),Z=t.useMemo(()=>k?e=>{g&&y&&y(g,e);}:Te,[k,y,g]),[xe,Ce]=t.useState(1),[Se,we]=t.useState(ue),f=o?H:xe,a=J!==void 0?J:Se,p=t.useMemo(()=>o?e=>Q?.(e):Ce,[o,Q]),R=t.useMemo(()=>M?e=>M(e):we,[M]),C=t.useMemo(()=>{if(!z||!m.trim())return F;let e=m.toLowerCase(),r=j||x.map(n=>n.dataIndex||n.key).filter(Boolean);return F.filter(n=>r.some(i=>{let c=n[i];return c==null?false:String(c).toLowerCase().includes(e)}))},[F,m,z,j,x]),S=t.useMemo(()=>!D||b.length===0||Object.keys(d).length===0?C:C.filter(e=>b.every(r=>{let n=d[r.key];if(n==null||n==="")return true;if(r.filterFn)return r.filterFn(n,e);let i=e[r.key];switch(r.type){case "text":return String(i).toLowerCase().includes(String(n).toLowerCase());case "number":return Number(i)===Number(n);case "boolean":return !!i==!!n;case "select":return String(i)===String(n);default:return String(i).includes(String(n))}})),[C,d,D,b]),l=t.useMemo(()=>{if(!g)return S;let e=[...S],r=x.find(n=>n.key===g);return !r||!r.sortable||e.sort((n,i)=>{let c=r.dataIndex?n[r.dataIndex]:n[r.key],w=r.dataIndex?i[r.dataIndex]:i[r.key];if(c==null)return 1;if(w==null)return -1;let N=0;return typeof c=="number"&&typeof w=="number"?N=c-w:N=String(c).localeCompare(String(w)),v==="asc"?N:-N}),e},[S,g,v,x]),Fe=t.useMemo(()=>{if(!h||o&&s!==void 0)return l;let e=(f-1)*a,r=e+a;return l.slice(e,r)},[l,f,a,h,o,s]);t.useMemo(()=>h?Math.ceil(o&&s!==void 0?s/a:l.length/a):1,[h,o,s,a,l.length]);let De=t.useCallback(e=>{X(e),o||p(1);},[X,p,o]),ee=t.useCallback((e,r)=>{let n={...d,[e]:r};$(n),o||p(1);},[d,$,p,o]),Ne=t.useCallback((e,r)=>{Y(e.key),Z(r);},[Y,Z]),Pe=t.useCallback((e,r)=>{p(e),r!==a&&(R(r),p(1));},[a,p,R]);return t__default.default.useEffect(()=>{V&&V(m,C);},[m,C,V]),t__default.default.useEffect(()=>{B&&B(d,S);},[d,S,B]),t__default.default.createElement("div",{className:"w-full"},(U||W&&D&&b.length>0)&&t__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(Ve(),le)},U&&z&&t__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a("flex-1 min-w-[200px]",de)},t__default.default.createElement(chunkFUENXWR7_cjs.b,{type:"text",placeholder:oe,value:m,onChange:e=>De(e.target.value),className:"w-full","aria-label":"Search table"})),W&&D&&b.length>0&&t__default.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},b.map(e=>{let r=d[e.key];return e.type==="select"&&e.options?t__default.default.createElement("select",{key:e.key,value:String(r||""),onChange:n=>ee(e.key,n.target.value||void 0),className:"rounded-md border border-input px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:border-primary","aria-label":`Filter by ${e.key}`},t__default.default.createElement("option",{value:""},"All ",e.key),e.options.map(n=>t__default.default.createElement("option",{key:n.value,value:String(n.value)},n.label))):t__default.default.createElement(chunkFUENXWR7_cjs.b,{key:e.key,type:e.type==="number"?"number":"text",placeholder:e.placeholder||`Filter ${e.key}...`,value:String(r||""),onChange:n=>ee(e.key,e.type==="number"?Number(n.target.value):n.target.value),className:"min-w-[150px]","aria-label":`Filter by ${e.key}`})}),Object.keys(d).length>0&&t__default.default.createElement("button",{type:"button",onClick:()=>$({}),className:"px-3 py-2 text-sm text-muted-foreground hover:text-foreground underline","aria-label":"Clear all filters"},"Clear filters"))),t__default.default.createElement(chunkVNDL67OG_cjs.d,{...ge,data:Fe,columns:x,rowKey:ce,emptyText:me,...g&&{sortColumn:g,sortDirection:v},onSort:Ne,...h&&{pagination:{current:f,pageSize:a,total:o&&s!==void 0?s:l.length,onChange:Pe,showSizeChanger:true}}}),h&&(o&&s!==void 0?s>0:l.length>0)&&t__default.default.createElement("div",{className:"mt-2 px-4 py-2 text-sm text-muted-foreground"},o&&s!==void 0?t__default.default.createElement(t__default.default.Fragment,null,"Showing ",(f-1)*a+1," to"," ",Math.min(f*a,s)," of ",s," ","results",m&&" (filtered)"):t__default.default.createElement(t__default.default.Fragment,null,"Showing ",(f-1)*a+1," to"," ",Math.min(f*a,l.length)," of"," ",l.length," results",m&&` (filtered from ${F.length} total)`)))}te.displayName="DataTable";var Ke=chunk7SPPGTBT_cjs.a(te);exports.a=te;exports.b=Ke;//# sourceMappingURL=chunk-AYEM2M4H.cjs.map
3
+ //# sourceMappingURL=chunk-AYEM2M4H.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/core/data-table.tsx"],"names":["filterBarVariants","cva","DataTable","initialData","columns","searchable","searchPlaceholder","searchKeys","onSearch","controlledSearchTerm","onSearchTermChange","filterable","filters","onFilter","controlledColumnFilters","onColumnFiltersChange","defaultSortColumn","defaultSortDirection","controlledSortColumn","controlledSortDirection","onSortChange","defaultPageSize","showPagination","controlledCurrentPage","controlledPageSize","onPageChange","onPageSizeChange","totalItems","showSearch","showFilters","filterBarClassName","searchBarClassName","rowKey","emptyText","tableProps","isControlledSearch","isControlledFilters","isControlledSort","isControlledPagination","internalSearchTerm","setInternalSearchTerm","useState","searchTerm","setSearchTerm","useMemo","value","internalColumnFilters","setInternalColumnFilters","columnFilters","setColumnFilters","internalSortColumn","setInternalSortColumn","internalSortDirection","setInternalSortDirection","sortColumn","sortDirection","setSortColumn","column","setSortDirection","dir","internalCurrentPage","setInternalCurrentPage","internalPageSize","setInternalPageSize","currentPage","pageSize","setCurrentPage","page","setPageSize","size","searchFilteredData","term","keys","col","record","key","filterFilteredData","filter","filterValue","recordValue","sortedData","sorted","a","b","aValue","bValue","comparison","paginatedData","startIndex","endIndex","handleSearch","useCallback","handleFilterChange","newFilters","handleSort","direction","handlePageChange","newPageSize","React","cn","Input","e","option","Table","DataTableMemoized","memo"],"mappings":"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","file":"chunk-ZQDFYSZB.cjs","sourcesContent":["import React, { useState, useMemo, useCallback } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\nimport { Table, TableColumn, TableProps } from \"./table\";\nimport { Input } from \"./input\";\n\n// Filter types\nexport type FilterType = \"text\" | \"select\" | \"number\" | \"date\" | \"boolean\";\n\nexport interface ColumnFilter<T = Record<string, unknown>> {\n key: string;\n type: FilterType;\n options?: Array<{ label: string; value: string | number }>;\n placeholder?: string;\n filterFn?: (value: unknown, record: T) => boolean;\n}\n\nexport interface DataTableProps<T = Record<string, unknown>> extends Omit<\n TableProps<T>,\n \"data\" | \"onSort\" | \"sortColumn\" | \"sortDirection\"\n> {\n data: T[];\n columns: TableColumn<T>[];\n\n // Search\n searchable?: boolean;\n searchPlaceholder?: string;\n searchKeys?: Array<keyof T | string>;\n onSearch?: (searchTerm: string, filteredData: T[]) => void;\n\n // Controlled search (for server-side filtering)\n searchTerm?: string;\n onSearchTermChange?: (searchTerm: string) => void;\n\n // Filtering\n filterable?: boolean;\n filters?: ColumnFilter<T>[];\n onFilter?: (filters: Record<string, unknown>, filteredData: T[]) => void;\n\n // Controlled filters (for server-side filtering)\n columnFilters?: Record<string, unknown>;\n onColumnFiltersChange?: (filters: Record<string, unknown>) => void;\n\n // Sorting (enhanced)\n defaultSortColumn?: string;\n defaultSortDirection?: \"asc\" | \"desc\";\n\n // Controlled sorting (for server-side sorting)\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSortChange?: (column: string, direction: \"asc\" | \"desc\") => void;\n\n // Pagination (enhanced)\n defaultPageSize?: number;\n showPagination?: boolean;\n\n // Controlled pagination (for server-side pagination)\n currentPage?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n totalItems?: number; // Required for server-side pagination\n\n // UI\n showSearch?: boolean;\n showFilters?: boolean;\n filterBarClassName?: string;\n searchBarClassName?: string;\n}\n\n// Filter bar component\nconst filterBarVariants = cva(\n \"flex flex-wrap items-center gap-2 p-4 bg-muted border-b border-border\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n compact: \"p-2 bg-card\",\n minimal: \"p-2 bg-transparent border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport function DataTable<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({\n data: initialData,\n columns,\n searchable = true,\n searchPlaceholder = \"Search...\",\n searchKeys,\n onSearch,\n searchTerm: controlledSearchTerm,\n onSearchTermChange,\n filterable = false,\n filters = [],\n onFilter,\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n defaultSortColumn,\n defaultSortDirection = \"asc\",\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n onSortChange,\n defaultPageSize = 10,\n showPagination = true,\n currentPage: controlledCurrentPage,\n pageSize: controlledPageSize,\n onPageChange,\n onPageSizeChange,\n totalItems,\n showSearch = true,\n showFilters = true,\n filterBarClassName,\n searchBarClassName,\n rowKey = \"id\",\n emptyText = \"No data found\",\n ...tableProps\n}: DataTableProps<T>) {\n // Determine if component is in controlled mode\n const isControlledSearch = controlledSearchTerm !== undefined;\n const isControlledFilters = controlledColumnFilters !== undefined;\n const isControlledSort = controlledSortColumn !== undefined;\n const isControlledPagination = controlledCurrentPage !== undefined;\n\n // Search state (controlled or uncontrolled)\n const [internalSearchTerm, setInternalSearchTerm] = useState(\"\");\n const searchTerm = isControlledSearch\n ? controlledSearchTerm\n : internalSearchTerm;\n const setSearchTerm = useMemo(\n () =>\n isControlledSearch\n ? (value: string) => onSearchTermChange?.(value)\n : setInternalSearchTerm,\n [isControlledSearch, onSearchTermChange],\n );\n\n // Filter state (controlled or uncontrolled)\n const [internalColumnFilters, setInternalColumnFilters] = useState<\n Record<string, unknown>\n >({});\n const columnFilters = isControlledFilters\n ? controlledColumnFilters\n : internalColumnFilters;\n const setColumnFilters = useMemo(\n () =>\n isControlledFilters\n ? (filters: Record<string, unknown>) => onColumnFiltersChange?.(filters)\n : setInternalColumnFilters,\n [isControlledFilters, onColumnFiltersChange],\n );\n\n // Sort state (controlled or uncontrolled)\n const [internalSortColumn, setInternalSortColumn] = useState<\n string | undefined\n >(defaultSortColumn);\n const [internalSortDirection, setInternalSortDirection] = useState<\n \"asc\" | \"desc\"\n >(defaultSortDirection);\n const sortColumn = isControlledSort\n ? controlledSortColumn\n : internalSortColumn;\n const sortDirection = isControlledSort\n ? controlledSortDirection\n : internalSortDirection;\n const setSortColumn = useMemo(\n () =>\n isControlledSort\n ? (column: string | undefined) => {\n if (column && onSortChange && sortDirection) {\n onSortChange(column, sortDirection);\n }\n }\n : setInternalSortColumn,\n [isControlledSort, onSortChange, sortDirection],\n );\n const setSortDirection = useMemo(\n () =>\n isControlledSort\n ? (dir: \"asc\" | \"desc\") => {\n if (sortColumn && onSortChange) {\n onSortChange(sortColumn, dir);\n }\n }\n : setInternalSortDirection,\n [isControlledSort, onSortChange, sortColumn],\n );\n\n // Pagination state (controlled or uncontrolled)\n const [internalCurrentPage, setInternalCurrentPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const currentPage = isControlledPagination\n ? controlledCurrentPage\n : internalCurrentPage;\n const pageSize =\n controlledPageSize !== undefined ? controlledPageSize : internalPageSize;\n const setCurrentPage = useMemo(\n () =>\n isControlledPagination\n ? (page: number) => onPageChange?.(page)\n : setInternalCurrentPage,\n [isControlledPagination, onPageChange],\n );\n const setPageSize = useMemo(\n () =>\n onPageSizeChange\n ? (size: number) => onPageSizeChange(size)\n : setInternalPageSize,\n [onPageSizeChange],\n );\n\n // Apply search\n const searchFilteredData = useMemo(() => {\n if (!searchable || !searchTerm.trim()) {\n return initialData;\n }\n\n const term = searchTerm.toLowerCase();\n const keys =\n searchKeys ||\n columns.map((col) => col.dataIndex || col.key).filter(Boolean);\n\n return initialData.filter((record) => {\n return keys.some((key) => {\n const value =\n typeof key === \"string\"\n ? (record as Record<string, unknown>)[key]\n : record[key as keyof T];\n\n if (value === null || value === undefined) return false;\n\n return String(value).toLowerCase().includes(term);\n });\n });\n }, [initialData, searchTerm, searchable, searchKeys, columns]);\n\n // Apply column filters\n const filterFilteredData = useMemo(() => {\n if (\n !filterable ||\n filters.length === 0 ||\n Object.keys(columnFilters).length === 0\n ) {\n return searchFilteredData;\n }\n\n return searchFilteredData.filter((record) => {\n return filters.every((filter) => {\n const filterValue = columnFilters[filter.key];\n\n // Skip if no filter value\n if (\n filterValue === undefined ||\n filterValue === null ||\n filterValue === \"\"\n ) {\n return true;\n }\n\n // Use custom filter function if provided\n if (filter.filterFn) {\n return filter.filterFn(filterValue, record);\n }\n\n // Default filtering logic\n const recordValue = (record as Record<string, unknown>)[filter.key];\n\n switch (filter.type) {\n case \"text\":\n return String(recordValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n case \"number\":\n return Number(recordValue) === Number(filterValue);\n case \"boolean\":\n return Boolean(recordValue) === Boolean(filterValue);\n case \"select\":\n return String(recordValue) === String(filterValue);\n default:\n return String(recordValue).includes(String(filterValue));\n }\n });\n });\n }, [searchFilteredData, columnFilters, filterable, filters]);\n\n // Apply sorting\n const sortedData = useMemo(() => {\n if (!sortColumn) {\n return filterFilteredData;\n }\n\n const sorted = [...filterFilteredData];\n const column = columns.find((col) => col.key === sortColumn);\n\n if (!column || !column.sortable) {\n return sorted;\n }\n\n sorted.sort((a, b) => {\n const aValue = column.dataIndex\n ? a[column.dataIndex]\n : (a as Record<string, unknown>)[column.key];\n const bValue = column.dataIndex\n ? b[column.dataIndex]\n : (b as Record<string, unknown>)[column.key];\n\n // Handle null/undefined\n if (aValue === null || aValue === undefined) return 1;\n if (bValue === null || bValue === undefined) return -1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortDirection === \"asc\" ? comparison : -comparison;\n });\n\n return sorted;\n }, [filterFilteredData, sortColumn, sortDirection, columns]);\n\n // Apply pagination\n // In controlled mode with server-side pagination, use provided data directly\n // In uncontrolled mode, slice the data client-side\n const paginatedData = useMemo(() => {\n if (!showPagination) {\n return sortedData;\n }\n\n // If in controlled pagination mode with totalItems, assume data is already paginated\n if (isControlledPagination && totalItems !== undefined) {\n return sortedData; // Data is already paginated server-side\n }\n\n // Client-side pagination\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n\n return sortedData.slice(startIndex, endIndex);\n }, [\n sortedData,\n currentPage,\n pageSize,\n showPagination,\n isControlledPagination,\n totalItems,\n ]);\n\n // Calculate total pages for pagination display\n // Note: Currently not used but kept for future pagination UI enhancements\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _totalPages = useMemo(() => {\n if (!showPagination) return 1;\n if (isControlledPagination && totalItems !== undefined) {\n return Math.ceil(totalItems / pageSize);\n }\n return Math.ceil(sortedData.length / pageSize);\n }, [\n showPagination,\n isControlledPagination,\n totalItems,\n pageSize,\n sortedData.length,\n ]);\n\n // Callbacks\n const handleSearch = useCallback(\n (value: string) => {\n setSearchTerm(value);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on search (only in uncontrolled mode)\n }\n },\n [setSearchTerm, setCurrentPage, isControlledPagination],\n );\n\n const handleFilterChange = useCallback(\n (key: string, value: unknown) => {\n const newFilters = {\n ...columnFilters,\n [key]: value,\n };\n setColumnFilters(newFilters);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on filter (only in uncontrolled mode)\n }\n },\n [columnFilters, setColumnFilters, setCurrentPage, isControlledPagination],\n );\n\n const handleSort = useCallback(\n (column: TableColumn<T>, direction: \"asc\" | \"desc\") => {\n setSortColumn(column.key);\n setSortDirection(direction);\n },\n [setSortColumn, setSortDirection],\n );\n\n const handlePageChange = useCallback(\n (page: number, newPageSize: number) => {\n setCurrentPage(page);\n if (newPageSize !== pageSize) {\n setPageSize(newPageSize);\n setCurrentPage(1); // Reset to first page when page size changes\n }\n },\n [pageSize, setCurrentPage, setPageSize],\n );\n\n // Notify callbacks\n React.useEffect(() => {\n if (onSearch) {\n onSearch(searchTerm, searchFilteredData);\n }\n }, [searchTerm, searchFilteredData, onSearch]);\n\n React.useEffect(() => {\n if (onFilter) {\n onFilter(columnFilters, filterFilteredData);\n }\n }, [columnFilters, filterFilteredData, onFilter]);\n\n return (\n <div className=\"w-full\">\n {/* Search and Filter Bar */}\n {(showSearch || (showFilters && filterable && filters.length > 0)) && (\n <div className={cn(filterBarVariants(), filterBarClassName)}>\n {/* Search */}\n {showSearch && searchable && (\n <div className={cn(\"flex-1 min-w-[200px]\", searchBarClassName)}>\n <Input\n type=\"text\"\n placeholder={searchPlaceholder}\n value={searchTerm}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full\"\n aria-label=\"Search table\"\n />\n </div>\n )}\n\n {/* Column Filters */}\n {showFilters && filterable && filters.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {filters.map((filter) => {\n const filterValue = columnFilters[filter.key];\n\n if (filter.type === \"select\" && filter.options) {\n return (\n <select\n key={filter.key}\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n e.target.value || undefined,\n )\n }\n className=\"rounded-md border border-input px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:border-primary\"\n aria-label={`Filter by ${filter.key}`}\n >\n <option value=\"\">All {filter.key}</option>\n {filter.options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </select>\n );\n }\n\n return (\n <Input\n key={filter.key}\n type={filter.type === \"number\" ? \"number\" : \"text\"}\n placeholder={\n filter.placeholder || `Filter ${filter.key}...`\n }\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n filter.type === \"number\"\n ? Number(e.target.value)\n : e.target.value,\n )\n }\n className=\"min-w-[150px]\"\n aria-label={`Filter by ${filter.key}`}\n />\n );\n })}\n\n {/* Clear Filters */}\n {Object.keys(columnFilters).length > 0 && (\n <button\n type=\"button\"\n onClick={() => setColumnFilters({})}\n className=\"px-3 py-2 text-sm text-muted-foreground hover:text-foreground underline\"\n aria-label=\"Clear all filters\"\n >\n Clear filters\n </button>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Table */}\n <Table\n {...tableProps}\n data={paginatedData}\n columns={columns}\n rowKey={rowKey}\n emptyText={emptyText}\n {...(sortColumn && {\n sortColumn,\n sortDirection,\n })}\n onSort={handleSort}\n {...(showPagination && {\n pagination: {\n current: currentPage,\n pageSize: pageSize,\n total:\n isControlledPagination && totalItems !== undefined\n ? totalItems\n : sortedData.length,\n onChange: handlePageChange,\n showSizeChanger: true,\n },\n })}\n />\n\n {/* Results Summary */}\n {showPagination &&\n (isControlledPagination && totalItems !== undefined\n ? totalItems > 0\n : sortedData.length > 0) && (\n <div className=\"mt-2 px-4 py-2 text-sm text-muted-foreground\">\n {isControlledPagination && totalItems !== undefined ? (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, totalItems)} of {totalItems}{\" \"}\n results\n {searchTerm && \" (filtered)\"}\n </>\n ) : (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n {searchTerm && ` (filtered from ${initialData.length} total)`}\n </>\n )}\n </div>\n )}\n </div>\n );\n}\n\nDataTable.displayName = \"DataTable\";\n\n// Memoize DataTable for performance optimization\n// DataTable is a complex component with filtering, sorting, and pagination\nexport const DataTableMemoized = memo(DataTable) as typeof DataTable;\n"]}
1
+ {"version":3,"sources":["../src/components/core/data-table.tsx"],"names":["filterBarVariants","cva","DataTable","initialData","columns","searchable","searchPlaceholder","searchKeys","onSearch","controlledSearchTerm","onSearchTermChange","filterable","filters","onFilter","controlledColumnFilters","onColumnFiltersChange","defaultSortColumn","defaultSortDirection","controlledSortColumn","controlledSortDirection","onSortChange","defaultPageSize","showPagination","controlledCurrentPage","controlledPageSize","onPageChange","onPageSizeChange","totalItems","showSearch","showFilters","filterBarClassName","searchBarClassName","rowKey","emptyText","tableProps","isControlledSearch","isControlledFilters","isControlledSort","isControlledPagination","internalSearchTerm","setInternalSearchTerm","useState","searchTerm","setSearchTerm","useMemo","value","internalColumnFilters","setInternalColumnFilters","columnFilters","setColumnFilters","internalSortColumn","setInternalSortColumn","internalSortDirection","setInternalSortDirection","sortColumn","sortDirection","setSortColumn","column","setSortDirection","dir","internalCurrentPage","setInternalCurrentPage","internalPageSize","setInternalPageSize","currentPage","pageSize","setCurrentPage","page","setPageSize","size","searchFilteredData","term","keys","col","record","key","filterFilteredData","filter","filterValue","recordValue","sortedData","sorted","a","b","aValue","bValue","comparison","paginatedData","startIndex","endIndex","handleSearch","useCallback","handleFilterChange","newFilters","handleSort","direction","handlePageChange","newPageSize","React","cn","Input","e","option","Table","DataTableMemoized","memo"],"mappings":"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","file":"chunk-AYEM2M4H.cjs","sourcesContent":["import React, { useState, useMemo, useCallback } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\nimport { Table, TableColumn, TableProps } from \"./table\";\nimport { Input } from \"./input\";\n\n// Filter types\nexport type FilterType = \"text\" | \"select\" | \"number\" | \"date\" | \"boolean\";\n\nexport interface ColumnFilter<T = Record<string, unknown>> {\n key: string;\n type: FilterType;\n options?: Array<{ label: string; value: string | number }>;\n placeholder?: string;\n filterFn?: (value: unknown, record: T) => boolean;\n}\n\nexport interface DataTableProps<T = Record<string, unknown>> extends Omit<\n TableProps<T>,\n \"data\" | \"onSort\" | \"sortColumn\" | \"sortDirection\"\n> {\n data: T[];\n columns: TableColumn<T>[];\n\n // Search\n searchable?: boolean;\n searchPlaceholder?: string;\n searchKeys?: Array<keyof T | string>;\n onSearch?: (searchTerm: string, filteredData: T[]) => void;\n\n // Controlled search (for server-side filtering)\n searchTerm?: string;\n onSearchTermChange?: (searchTerm: string) => void;\n\n // Filtering\n filterable?: boolean;\n filters?: ColumnFilter<T>[];\n onFilter?: (filters: Record<string, unknown>, filteredData: T[]) => void;\n\n // Controlled filters (for server-side filtering)\n columnFilters?: Record<string, unknown>;\n onColumnFiltersChange?: (filters: Record<string, unknown>) => void;\n\n // Sorting (enhanced)\n defaultSortColumn?: string;\n defaultSortDirection?: \"asc\" | \"desc\";\n\n // Controlled sorting (for server-side sorting)\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSortChange?: (column: string, direction: \"asc\" | \"desc\") => void;\n\n // Pagination (enhanced)\n defaultPageSize?: number;\n showPagination?: boolean;\n\n // Controlled pagination (for server-side pagination)\n currentPage?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n totalItems?: number; // Required for server-side pagination\n\n // UI\n showSearch?: boolean;\n showFilters?: boolean;\n filterBarClassName?: string;\n searchBarClassName?: string;\n}\n\n// Filter bar component\nconst filterBarVariants = cva(\n \"flex flex-wrap items-center gap-2 p-4 bg-muted border-b border-border\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n compact: \"p-2 bg-card\",\n minimal: \"p-2 bg-transparent border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport function DataTable<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({\n data: initialData,\n columns,\n searchable = true,\n searchPlaceholder = \"Search...\",\n searchKeys,\n onSearch,\n searchTerm: controlledSearchTerm,\n onSearchTermChange,\n filterable = false,\n filters = [],\n onFilter,\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n defaultSortColumn,\n defaultSortDirection = \"asc\",\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n onSortChange,\n defaultPageSize = 10,\n showPagination = true,\n currentPage: controlledCurrentPage,\n pageSize: controlledPageSize,\n onPageChange,\n onPageSizeChange,\n totalItems,\n showSearch = true,\n showFilters = true,\n filterBarClassName,\n searchBarClassName,\n rowKey = \"id\",\n emptyText = \"No data found\",\n ...tableProps\n}: DataTableProps<T>) {\n // Determine if component is in controlled mode\n const isControlledSearch = controlledSearchTerm !== undefined;\n const isControlledFilters = controlledColumnFilters !== undefined;\n const isControlledSort = controlledSortColumn !== undefined;\n const isControlledPagination = controlledCurrentPage !== undefined;\n\n // Search state (controlled or uncontrolled)\n const [internalSearchTerm, setInternalSearchTerm] = useState(\"\");\n const searchTerm = isControlledSearch\n ? controlledSearchTerm\n : internalSearchTerm;\n const setSearchTerm = useMemo(\n () =>\n isControlledSearch\n ? (value: string) => onSearchTermChange?.(value)\n : setInternalSearchTerm,\n [isControlledSearch, onSearchTermChange],\n );\n\n // Filter state (controlled or uncontrolled)\n const [internalColumnFilters, setInternalColumnFilters] = useState<\n Record<string, unknown>\n >({});\n const columnFilters = isControlledFilters\n ? controlledColumnFilters\n : internalColumnFilters;\n const setColumnFilters = useMemo(\n () =>\n isControlledFilters\n ? (filters: Record<string, unknown>) => onColumnFiltersChange?.(filters)\n : setInternalColumnFilters,\n [isControlledFilters, onColumnFiltersChange],\n );\n\n // Sort state (controlled or uncontrolled)\n const [internalSortColumn, setInternalSortColumn] = useState<\n string | undefined\n >(defaultSortColumn);\n const [internalSortDirection, setInternalSortDirection] = useState<\n \"asc\" | \"desc\"\n >(defaultSortDirection);\n const sortColumn = isControlledSort\n ? controlledSortColumn\n : internalSortColumn;\n const sortDirection = isControlledSort\n ? controlledSortDirection\n : internalSortDirection;\n const setSortColumn = useMemo(\n () =>\n isControlledSort\n ? (column: string | undefined) => {\n if (column && onSortChange && sortDirection) {\n onSortChange(column, sortDirection);\n }\n }\n : setInternalSortColumn,\n [isControlledSort, onSortChange, sortDirection],\n );\n const setSortDirection = useMemo(\n () =>\n isControlledSort\n ? (dir: \"asc\" | \"desc\") => {\n if (sortColumn && onSortChange) {\n onSortChange(sortColumn, dir);\n }\n }\n : setInternalSortDirection,\n [isControlledSort, onSortChange, sortColumn],\n );\n\n // Pagination state (controlled or uncontrolled)\n const [internalCurrentPage, setInternalCurrentPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const currentPage = isControlledPagination\n ? controlledCurrentPage\n : internalCurrentPage;\n const pageSize =\n controlledPageSize !== undefined ? controlledPageSize : internalPageSize;\n const setCurrentPage = useMemo(\n () =>\n isControlledPagination\n ? (page: number) => onPageChange?.(page)\n : setInternalCurrentPage,\n [isControlledPagination, onPageChange],\n );\n const setPageSize = useMemo(\n () =>\n onPageSizeChange\n ? (size: number) => onPageSizeChange(size)\n : setInternalPageSize,\n [onPageSizeChange],\n );\n\n // Apply search\n const searchFilteredData = useMemo(() => {\n if (!searchable || !searchTerm.trim()) {\n return initialData;\n }\n\n const term = searchTerm.toLowerCase();\n const keys =\n searchKeys ||\n columns.map((col) => col.dataIndex || col.key).filter(Boolean);\n\n return initialData.filter((record) => {\n return keys.some((key) => {\n const value =\n typeof key === \"string\"\n ? (record as Record<string, unknown>)[key]\n : record[key as keyof T];\n\n if (value === null || value === undefined) return false;\n\n return String(value).toLowerCase().includes(term);\n });\n });\n }, [initialData, searchTerm, searchable, searchKeys, columns]);\n\n // Apply column filters\n const filterFilteredData = useMemo(() => {\n if (\n !filterable ||\n filters.length === 0 ||\n Object.keys(columnFilters).length === 0\n ) {\n return searchFilteredData;\n }\n\n return searchFilteredData.filter((record) => {\n return filters.every((filter) => {\n const filterValue = columnFilters[filter.key];\n\n // Skip if no filter value\n if (\n filterValue === undefined ||\n filterValue === null ||\n filterValue === \"\"\n ) {\n return true;\n }\n\n // Use custom filter function if provided\n if (filter.filterFn) {\n return filter.filterFn(filterValue, record);\n }\n\n // Default filtering logic\n const recordValue = (record as Record<string, unknown>)[filter.key];\n\n switch (filter.type) {\n case \"text\":\n return String(recordValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n case \"number\":\n return Number(recordValue) === Number(filterValue);\n case \"boolean\":\n return Boolean(recordValue) === Boolean(filterValue);\n case \"select\":\n return String(recordValue) === String(filterValue);\n default:\n return String(recordValue).includes(String(filterValue));\n }\n });\n });\n }, [searchFilteredData, columnFilters, filterable, filters]);\n\n // Apply sorting\n const sortedData = useMemo(() => {\n if (!sortColumn) {\n return filterFilteredData;\n }\n\n const sorted = [...filterFilteredData];\n const column = columns.find((col) => col.key === sortColumn);\n\n if (!column || !column.sortable) {\n return sorted;\n }\n\n sorted.sort((a, b) => {\n const aValue = column.dataIndex\n ? a[column.dataIndex]\n : (a as Record<string, unknown>)[column.key];\n const bValue = column.dataIndex\n ? b[column.dataIndex]\n : (b as Record<string, unknown>)[column.key];\n\n // Handle null/undefined\n if (aValue === null || aValue === undefined) return 1;\n if (bValue === null || bValue === undefined) return -1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortDirection === \"asc\" ? comparison : -comparison;\n });\n\n return sorted;\n }, [filterFilteredData, sortColumn, sortDirection, columns]);\n\n // Apply pagination\n // In controlled mode with server-side pagination, use provided data directly\n // In uncontrolled mode, slice the data client-side\n const paginatedData = useMemo(() => {\n if (!showPagination) {\n return sortedData;\n }\n\n // If in controlled pagination mode with totalItems, assume data is already paginated\n if (isControlledPagination && totalItems !== undefined) {\n return sortedData; // Data is already paginated server-side\n }\n\n // Client-side pagination\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n\n return sortedData.slice(startIndex, endIndex);\n }, [\n sortedData,\n currentPage,\n pageSize,\n showPagination,\n isControlledPagination,\n totalItems,\n ]);\n\n // Calculate total pages for pagination display\n // Note: Currently not used but kept for future pagination UI enhancements\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _totalPages = useMemo(() => {\n if (!showPagination) return 1;\n if (isControlledPagination && totalItems !== undefined) {\n return Math.ceil(totalItems / pageSize);\n }\n return Math.ceil(sortedData.length / pageSize);\n }, [\n showPagination,\n isControlledPagination,\n totalItems,\n pageSize,\n sortedData.length,\n ]);\n\n // Callbacks\n const handleSearch = useCallback(\n (value: string) => {\n setSearchTerm(value);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on search (only in uncontrolled mode)\n }\n },\n [setSearchTerm, setCurrentPage, isControlledPagination],\n );\n\n const handleFilterChange = useCallback(\n (key: string, value: unknown) => {\n const newFilters = {\n ...columnFilters,\n [key]: value,\n };\n setColumnFilters(newFilters);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on filter (only in uncontrolled mode)\n }\n },\n [columnFilters, setColumnFilters, setCurrentPage, isControlledPagination],\n );\n\n const handleSort = useCallback(\n (column: TableColumn<T>, direction: \"asc\" | \"desc\") => {\n setSortColumn(column.key);\n setSortDirection(direction);\n },\n [setSortColumn, setSortDirection],\n );\n\n const handlePageChange = useCallback(\n (page: number, newPageSize: number) => {\n setCurrentPage(page);\n if (newPageSize !== pageSize) {\n setPageSize(newPageSize);\n setCurrentPage(1); // Reset to first page when page size changes\n }\n },\n [pageSize, setCurrentPage, setPageSize],\n );\n\n // Notify callbacks\n React.useEffect(() => {\n if (onSearch) {\n onSearch(searchTerm, searchFilteredData);\n }\n }, [searchTerm, searchFilteredData, onSearch]);\n\n React.useEffect(() => {\n if (onFilter) {\n onFilter(columnFilters, filterFilteredData);\n }\n }, [columnFilters, filterFilteredData, onFilter]);\n\n return (\n <div className=\"w-full\">\n {/* Search and Filter Bar */}\n {(showSearch || (showFilters && filterable && filters.length > 0)) && (\n <div className={cn(filterBarVariants(), filterBarClassName)}>\n {/* Search */}\n {showSearch && searchable && (\n <div className={cn(\"flex-1 min-w-[200px]\", searchBarClassName)}>\n <Input\n type=\"text\"\n placeholder={searchPlaceholder}\n value={searchTerm}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full\"\n aria-label=\"Search table\"\n />\n </div>\n )}\n\n {/* Column Filters */}\n {showFilters && filterable && filters.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {filters.map((filter) => {\n const filterValue = columnFilters[filter.key];\n\n if (filter.type === \"select\" && filter.options) {\n return (\n <select\n key={filter.key}\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n e.target.value || undefined,\n )\n }\n className=\"rounded-md border border-input px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:border-primary\"\n aria-label={`Filter by ${filter.key}`}\n >\n <option value=\"\">All {filter.key}</option>\n {filter.options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </select>\n );\n }\n\n return (\n <Input\n key={filter.key}\n type={filter.type === \"number\" ? \"number\" : \"text\"}\n placeholder={\n filter.placeholder || `Filter ${filter.key}...`\n }\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n filter.type === \"number\"\n ? Number(e.target.value)\n : e.target.value,\n )\n }\n className=\"min-w-[150px]\"\n aria-label={`Filter by ${filter.key}`}\n />\n );\n })}\n\n {/* Clear Filters */}\n {Object.keys(columnFilters).length > 0 && (\n <button\n type=\"button\"\n onClick={() => setColumnFilters({})}\n className=\"px-3 py-2 text-sm text-muted-foreground hover:text-foreground underline\"\n aria-label=\"Clear all filters\"\n >\n Clear filters\n </button>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Table */}\n <Table\n {...tableProps}\n data={paginatedData}\n columns={columns}\n rowKey={rowKey}\n emptyText={emptyText}\n {...(sortColumn && {\n sortColumn,\n sortDirection,\n })}\n onSort={handleSort}\n {...(showPagination && {\n pagination: {\n current: currentPage,\n pageSize: pageSize,\n total:\n isControlledPagination && totalItems !== undefined\n ? totalItems\n : sortedData.length,\n onChange: handlePageChange,\n showSizeChanger: true,\n },\n })}\n />\n\n {/* Results Summary */}\n {showPagination &&\n (isControlledPagination && totalItems !== undefined\n ? totalItems > 0\n : sortedData.length > 0) && (\n <div className=\"mt-2 px-4 py-2 text-sm text-muted-foreground\">\n {isControlledPagination && totalItems !== undefined ? (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, totalItems)} of {totalItems}{\" \"}\n results\n {searchTerm && \" (filtered)\"}\n </>\n ) : (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n {searchTerm && ` (filtered from ${initialData.length} total)`}\n </>\n )}\n </div>\n )}\n </div>\n );\n}\n\nDataTable.displayName = \"DataTable\";\n\n// Memoize DataTable for performance optimization\n// DataTable is a complex component with filtering, sorting, and pagination\nexport const DataTableMemoized = memo(DataTable) as typeof DataTable;\n"]}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import {a}from'./chunk-AC2JBXHQ.js';import r from'react';import {cva}from'class-variance-authority';import {PawPrint,Bird,Fish,Dog,Cat,Butterfly,Bug,Anchor,Umbrella,Snowflake,Fire,Lightning,Sparkle,Crown,Medal,Trophy,Flag,Compass,Bookmark,Scroll,Ghost,Skull,Pill,Syringe,TestTube,Flask,Atom,Rocket,Alien,MapPin,Key,Gift,PuzzlePiece,GameController,Moon,Star,Planet,Mountains,Leaf,Flower,Tree,Wheelchair,Palette,Terminal,Code,PaintBrush,Wrench,ChartPie,ChartBar,ChartLine,Buildings,Briefcase,Lightbulb,GraduationCap,BookOpen,Book,StopCircle,PauseCircle,PlayCircle,MusicNote,TennisBall,SoccerBall,Football,Basketball,Hamburger,Pizza,Coffee,Bicycle,Boat,Airplane,Train,Bus,Car,Activity,Heart,Money,CreditCard,ShoppingBag,ShoppingCart,YoutubeLogo,LinkedinLogo,InstagramLogo,FacebookLogo,TwitterLogo,GithubLogo,CloudLightning,CloudSnow,CloudRain,Cloud,Sun,HardDrive,Cpu,BatteryWarning,WifiX,WifiHigh,ShieldCheck,Shield,EyeSlash,Eye,LockOpen,Lock,Timer,Calendar,Clock,Question,Info,Warning,XCircle,CheckCircle,FileImage,FilePdf,FileText,FolderOpen,Folder,File,VideoCamera,Image,Camera,SpeakerX,SpeakerLow,SpeakerHigh,Stop,Pause,Play,BellSlash,Bell,ChatCircle,Phone,Envelope,Share,Upload,Download,Copy,PencilSimple,Trash,X,Check,Minus,Plus,ArrowDown,ArrowUp,ArrowRight,ArrowLeft,CaretDown,CaretUp,CaretRight,CaretLeft,List,MagnifyingGlass,Gear,User,House}from'phosphor-react';var i={house:House,home:House,user:User,settings:Gear,search:MagnifyingGlass,menu:List,x:X,"chevron-left":CaretLeft,"chevron-right":CaretRight,"chevron-up":CaretUp,"chevron-down":CaretDown,"arrow-left":ArrowLeft,"arrow-right":ArrowRight,"arrow-up":ArrowUp,"arrow-down":ArrowDown,plus:Plus,minus:Minus,check:Check,"x-icon":X,trash:Trash,edit:PencilSimple,copy:Copy,download:Download,upload:Upload,share:Share,heart:Heart,star:Star,bookmark:Bookmark,mail:Envelope,phone:Phone,"message-circle":ChatCircle,bell:Bell,"bell-slash":BellSlash,play:Play,pause:Pause,stop:Stop,"volume-high":SpeakerHigh,"volume-low":SpeakerLow,"volume-x":SpeakerX,camera:Camera,image:Image,video:VideoCamera,file:File,folder:Folder,"folder-open":FolderOpen,"file-text":FileText,"file-pdf":FilePdf,"file-image":FileImage,"check-circle":CheckCircle,"x-circle":XCircle,warning:Warning,info:Info,question:Question,clock:Clock,calendar:Calendar,timer:Timer,lock:Lock,"lock-open":LockOpen,eye:Eye,"eye-slash":EyeSlash,shield:Shield,"shield-check":ShieldCheck,wifi:WifiHigh,"wifi-slash":WifiX,"battery-warning":BatteryWarning,cpu:Cpu,"hard-drive":HardDrive,sun:Sun,moon:Moon,cloud:Cloud,"cloud-rain":CloudRain,"cloud-snow":CloudSnow,"cloud-lightning":CloudLightning,github:GithubLogo,twitter:TwitterLogo,facebook:FacebookLogo,instagram:InstagramLogo,linkedin:LinkedinLogo,youtube:YoutubeLogo,"shopping-cart":ShoppingCart,"shopping-bag":ShoppingBag,"credit-card":CreditCard,money:Money,"heart-icon":Heart,activity:Activity,car:Car,bus:Bus,train:Train,plane:Airplane,ship:Boat,bicycle:Bicycle,coffee:Coffee,pizza:Pizza,hamburger:Hamburger,basketball:Basketball,football:Football,soccer:SoccerBall,tennis:TennisBall,"music-note":MusicNote,"play-circle":PlayCircle,"pause-circle":PauseCircle,"stop-circle":StopCircle,book:Book,"book-open":BookOpen,"graduation-cap":GraduationCap,lightbulb:Lightbulb,briefcase:Briefcase,building:Buildings,"chart-line":ChartLine,"chart-bar":ChartBar,"chart-pie":ChartPie,wrench:Wrench,"paint-brush":PaintBrush,code:Code,terminal:Terminal,palette:Palette,accessibility:Wheelchair,tree:Tree,flower:Flower,leaf:Leaf,mountain:Mountains,rocket:Rocket,planet:Planet,"star-icon":Star,"moon-icon":Moon,"game-controller":GameController,puzzle:PuzzlePiece,gift:Gift,key:Key,"map-pin":MapPin,compass:Compass,flag:Flag,trophy:Trophy,medal:Medal,crown:Crown,sparkle:Sparkle,zap:Lightning,fire:Fire,snowflake:Snowflake,umbrella:Umbrella,anchor:Anchor,bug:Bug,butterfly:Butterfly,cat:Cat,dog:Dog,fish:Fish,bird:Bird,"paw-print":PawPrint,alien:Alien,spaceship:Rocket,atom:Atom,flask:Flask,"test-tube":TestTube,syringe:Syringe,pill:Pill,skull:Skull,ghost:Ghost,scroll:Scroll,"bookmark-icon":Bookmark,"compass-icon":Compass,"flag-icon":Flag,"trophy-icon":Trophy,"medal-icon":Medal,"crown-icon":Crown,"sparkle-icon":Sparkle,"zap-icon":Lightning,"fire-icon":Fire,"snowflake-icon":Snowflake,"umbrella-icon":Umbrella,"anchor-icon":Anchor,"bug-icon":Bug,"butterfly-icon":Butterfly,"cat-icon":Cat,"dog-icon":Dog,"fish-icon":Fish,"bird-icon":Bird,"paw-print-icon":PawPrint},La=cva("",{variants:{size:{xs:"w-3 h-3",sm:"w-4 h-4",md:"w-5 h-5",lg:"w-6 h-6",xl:"w-8 h-8","2xl":"w-10 h-10","3xl":"w-12 h-12"},weight:{thin:"",light:"",regular:"",bold:"",fill:"",duotone:""},color:{current:"text-current",primary:"text-primary",secondary:"text-secondary-foreground",success:"text-success",warning:"text-warning",error:"text-error",muted:"text-muted-foreground"}},defaultVariants:{size:"md",weight:"regular",color:"current"}}),Fa=r.forwardRef(({name:t,size:l,weight:e,color:c,className:s,...p},h)=>{let o=i[t];return o?r.createElement(o,{ref:h,weight:e,className:a(La({size:l,weight:e,color:c}),s),...p}):null});Fa.displayName="Icon";var Aa=Object.keys(i);export{Fa as a,Aa as b};//# sourceMappingURL=chunk-BL2TM4YT.js.map
3
+ //# sourceMappingURL=chunk-BL2TM4YT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/icon.tsx"],"names":["iconMap","House","User","Gear","MagnifyingGlass","List","X","CaretLeft","CaretRight","CaretUp","CaretDown","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Plus","Minus","Check","XIcon","Trash","PencilSimple","Copy","Download","Upload","Share","Heart","Star","Bookmark","Envelope","Phone","ChatCircle","Bell","BellSlash","Play","Pause","Stop","SpeakerHigh","SpeakerLow","SpeakerX","Camera","Image","VideoCamera","File","Folder","FolderOpen","FileText","FilePdf","FileImage","CheckCircle","XCircle","Warning","Info","Question","Clock","Calendar","Timer","Lock","LockOpen","Eye","EyeSlash","Shield","ShieldCheck","WifiHigh","WifiX","BatteryWarning","Cpu","HardDrive","Sun","Moon","Cloud","CloudRain","CloudSnow","CloudLightning","GithubLogo","TwitterLogo","FacebookLogo","InstagramLogo","LinkedinLogo","YoutubeLogo","ShoppingCart","ShoppingBag","CreditCard","Money","HeartIcon","Activity","Car","Bus","Train","Airplane","Boat","Bicycle","Coffee","Pizza","Hamburger","Basketball","Football","SoccerBall","TennisBall","MusicNote","PlayCircle","PauseCircle","StopCircle","Book","BookOpen","GraduationCap","Lightbulb","Briefcase","Buildings","ChartLine","ChartBar","ChartPie","Wrench","PaintBrush","Code","Terminal","Palette","Wheelchair","Tree","Flower","Leaf","Mountains","Rocket","Planet","StarIcon","MoonIcon","GameController","PuzzlePiece","Gift","Key","MapPin","Compass","Flag","Trophy","Medal","Crown","Sparkle","Lightning","Fire","Snowflake","Umbrella","Anchor","Bug","Butterfly","Cat","Dog","Fish","Bird","PawPrint","Alien","Spaceship","Atom","Flask","TestTube","Syringe","Pill","Skull","Ghost","Scroll","BookmarkIcon","CompassIcon","FlagIcon","TrophyIcon","MedalIcon","CrownIcon","SparkleIcon","ZapIcon","FireIcon","SnowflakeIcon","UmbrellaIcon","AnchorIcon","BugIcon","ButterflyIcon","CatIcon","DogIcon","FishIcon","BirdIcon","PawPrintIcon","iconVariants","cva","Icon","React","name","size","weight","color","className","props","ref","IconComponent","cn","iconNames"],"mappings":"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","file":"chunk-BL2TM4YT.js","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n// Import commonly used Phosphor icons\nimport {\n // Navigation\n House,\n User,\n Gear,\n MagnifyingGlass,\n List,\n X,\n CaretLeft,\n CaretRight,\n CaretUp,\n CaretDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n ArrowDown,\n\n // Actions\n Plus,\n Minus,\n Check,\n X as XIcon,\n Trash,\n PencilSimple,\n Copy,\n Download,\n Upload,\n Share,\n Heart,\n Star,\n Bookmark,\n\n // Communication\n Envelope,\n Phone,\n ChatCircle,\n Bell,\n BellSlash,\n\n // Media\n Play,\n Pause,\n Stop,\n SpeakerHigh,\n SpeakerLow,\n SpeakerX,\n Camera,\n Image,\n VideoCamera,\n\n // Files\n File,\n Folder,\n FolderOpen,\n FileText,\n FilePdf,\n FileImage,\n\n // Status\n CheckCircle,\n XCircle,\n Warning,\n Info,\n Question,\n\n // Time\n Clock,\n Calendar,\n Timer,\n\n // Security\n Lock,\n LockOpen,\n Eye,\n EyeSlash,\n Shield,\n ShieldCheck,\n\n // Technology\n WifiHigh,\n WifiX,\n BatteryWarning,\n Cpu,\n HardDrive,\n\n // Weather\n Sun,\n Moon,\n Cloud,\n CloudRain,\n CloudSnow,\n CloudLightning,\n\n // Social\n GithubLogo,\n TwitterLogo,\n FacebookLogo,\n InstagramLogo,\n LinkedinLogo,\n YoutubeLogo,\n\n // Shopping\n ShoppingCart,\n ShoppingBag,\n CreditCard,\n Money,\n\n // Health\n Heart as HeartIcon,\n Activity,\n\n // Transportation\n Car,\n Bus,\n Train,\n Airplane,\n Boat,\n Bicycle,\n\n // Food\n Coffee,\n Pizza,\n Hamburger,\n\n // Sports\n Basketball,\n Football,\n SoccerBall,\n TennisBall,\n\n // Music\n MusicNote,\n PlayCircle,\n PauseCircle,\n StopCircle,\n\n // Education\n Book,\n BookOpen,\n GraduationCap,\n Lightbulb,\n\n // Business\n Briefcase,\n Buildings,\n ChartLine,\n ChartBar,\n ChartPie,\n\n // Tools\n Wrench,\n PaintBrush,\n Code,\n Terminal,\n Palette,\n Wheelchair,\n\n // Nature\n Tree,\n Flower,\n Leaf,\n Mountains,\n\n // Space\n Rocket,\n Planet,\n Star as StarIcon,\n Moon as MoonIcon,\n\n // Gaming\n GameController,\n PuzzlePiece,\n\n // Miscellaneous\n Gift,\n Key,\n MapPin,\n Compass,\n Flag,\n Trophy,\n Medal,\n Crown,\n Sparkle,\n Lightning,\n Fire,\n Snowflake,\n Umbrella,\n Anchor,\n Bug,\n Butterfly,\n Cat,\n Dog,\n Fish,\n Bird,\n PawPrint,\n\n // Nostromo themed\n Alien,\n Rocket as Spaceship,\n Atom,\n Flask,\n TestTube,\n Syringe,\n Pill,\n Skull,\n Ghost,\n Scroll,\n Bookmark as BookmarkIcon,\n Compass as CompassIcon,\n Flag as FlagIcon,\n Trophy as TrophyIcon,\n Medal as MedalIcon,\n Crown as CrownIcon,\n Sparkle as SparkleIcon,\n Lightning as ZapIcon,\n Fire as FireIcon,\n Snowflake as SnowflakeIcon,\n Umbrella as UmbrellaIcon,\n Anchor as AnchorIcon,\n Bug as BugIcon,\n Butterfly as ButterflyIcon,\n Cat as CatIcon,\n Dog as DogIcon,\n Fish as FishIcon,\n Bird as BirdIcon,\n PawPrint as PawPrintIcon,\n} from \"phosphor-react\";\n\n// Create a mapping of icon names to components\nconst iconMap: Record<string, React.ElementType> = {\n // Navigation\n house: House,\n // Alias: \"home\" is what people reach for first, and the Icon docs page itself\n // shipped <Icon name=\"home\" /> against a map that only had \"house\".\n home: House,\n user: User,\n settings: Gear,\n search: MagnifyingGlass,\n menu: List,\n x: X,\n \"chevron-left\": CaretLeft,\n \"chevron-right\": CaretRight,\n \"chevron-up\": CaretUp,\n \"chevron-down\": CaretDown,\n \"arrow-left\": ArrowLeft,\n \"arrow-right\": ArrowRight,\n \"arrow-up\": ArrowUp,\n \"arrow-down\": ArrowDown,\n\n // Actions\n plus: Plus,\n minus: Minus,\n check: Check,\n \"x-icon\": XIcon,\n trash: Trash,\n edit: PencilSimple,\n copy: Copy,\n download: Download,\n upload: Upload,\n share: Share,\n heart: Heart,\n star: Star,\n bookmark: Bookmark,\n\n // Communication\n mail: Envelope,\n phone: Phone,\n \"message-circle\": ChatCircle,\n bell: Bell,\n \"bell-slash\": BellSlash,\n\n // Media\n play: Play,\n pause: Pause,\n stop: Stop,\n \"volume-high\": SpeakerHigh,\n \"volume-low\": SpeakerLow,\n \"volume-x\": SpeakerX,\n camera: Camera,\n image: Image,\n video: VideoCamera,\n\n // Files\n file: File,\n folder: Folder,\n \"folder-open\": FolderOpen,\n \"file-text\": FileText,\n \"file-pdf\": FilePdf,\n \"file-image\": FileImage,\n\n // Status\n \"check-circle\": CheckCircle,\n \"x-circle\": XCircle,\n warning: Warning,\n info: Info,\n question: Question,\n\n // Time\n clock: Clock,\n calendar: Calendar,\n timer: Timer,\n\n // Security\n lock: Lock,\n \"lock-open\": LockOpen,\n eye: Eye,\n \"eye-slash\": EyeSlash,\n shield: Shield,\n \"shield-check\": ShieldCheck,\n\n // Technology\n wifi: WifiHigh,\n \"wifi-slash\": WifiX,\n \"battery-warning\": BatteryWarning,\n cpu: Cpu,\n \"hard-drive\": HardDrive,\n\n // Weather\n sun: Sun,\n moon: Moon,\n cloud: Cloud,\n \"cloud-rain\": CloudRain,\n \"cloud-snow\": CloudSnow,\n \"cloud-lightning\": CloudLightning,\n\n // Social\n github: GithubLogo,\n twitter: TwitterLogo,\n facebook: FacebookLogo,\n instagram: InstagramLogo,\n linkedin: LinkedinLogo,\n youtube: YoutubeLogo,\n\n // Shopping\n \"shopping-cart\": ShoppingCart,\n \"shopping-bag\": ShoppingBag,\n \"credit-card\": CreditCard,\n money: Money,\n\n // Health\n \"heart-icon\": HeartIcon,\n activity: Activity,\n\n // Transportation\n car: Car,\n bus: Bus,\n train: Train,\n plane: Airplane,\n ship: Boat,\n bicycle: Bicycle,\n\n // Food\n coffee: Coffee,\n pizza: Pizza,\n hamburger: Hamburger,\n\n // Sports\n basketball: Basketball,\n football: Football,\n soccer: SoccerBall,\n tennis: TennisBall,\n\n // Music\n \"music-note\": MusicNote,\n \"play-circle\": PlayCircle,\n \"pause-circle\": PauseCircle,\n \"stop-circle\": StopCircle,\n\n // Education\n book: Book,\n \"book-open\": BookOpen,\n \"graduation-cap\": GraduationCap,\n lightbulb: Lightbulb,\n\n // Business\n briefcase: Briefcase,\n building: Buildings,\n \"chart-line\": ChartLine,\n \"chart-bar\": ChartBar,\n \"chart-pie\": ChartPie,\n\n // Tools\n wrench: Wrench,\n \"paint-brush\": PaintBrush,\n\n // Developer and design vocabulary the set was missing - the Features example\n // asked for code/accessibility/palette and got nothing back.\n code: Code,\n terminal: Terminal,\n palette: Palette,\n accessibility: Wheelchair,\n\n // Nature\n tree: Tree,\n flower: Flower,\n leaf: Leaf,\n mountain: Mountains,\n\n // Space\n rocket: Rocket,\n planet: Planet,\n \"star-icon\": StarIcon,\n \"moon-icon\": MoonIcon,\n\n // Gaming\n \"game-controller\": GameController,\n puzzle: PuzzlePiece,\n\n // Miscellaneous\n gift: Gift,\n key: Key,\n \"map-pin\": MapPin,\n compass: Compass,\n flag: Flag,\n trophy: Trophy,\n medal: Medal,\n crown: Crown,\n sparkle: Sparkle,\n zap: Lightning,\n fire: Fire,\n snowflake: Snowflake,\n umbrella: Umbrella,\n anchor: Anchor,\n bug: Bug,\n butterfly: Butterfly,\n cat: Cat,\n dog: Dog,\n fish: Fish,\n bird: Bird,\n \"paw-print\": PawPrint,\n\n // Nostromo themed\n alien: Alien,\n spaceship: Spaceship,\n atom: Atom,\n flask: Flask,\n \"test-tube\": TestTube,\n syringe: Syringe,\n pill: Pill,\n skull: Skull,\n ghost: Ghost,\n scroll: Scroll,\n \"bookmark-icon\": BookmarkIcon,\n \"compass-icon\": CompassIcon,\n \"flag-icon\": FlagIcon,\n \"trophy-icon\": TrophyIcon,\n \"medal-icon\": MedalIcon,\n \"crown-icon\": CrownIcon,\n \"sparkle-icon\": SparkleIcon,\n \"zap-icon\": ZapIcon,\n \"fire-icon\": FireIcon,\n \"snowflake-icon\": SnowflakeIcon,\n \"umbrella-icon\": UmbrellaIcon,\n \"anchor-icon\": AnchorIcon,\n \"bug-icon\": BugIcon,\n \"butterfly-icon\": ButterflyIcon,\n \"cat-icon\": CatIcon,\n \"dog-icon\": DogIcon,\n \"fish-icon\": FishIcon,\n \"bird-icon\": BirdIcon,\n \"paw-print-icon\": PawPrintIcon,\n} as const;\n\nexport type IconName = keyof typeof iconMap;\n\nconst iconVariants = cva(\"\", {\n variants: {\n size: {\n xs: \"w-3 h-3\",\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n xl: \"w-8 h-8\",\n \"2xl\": \"w-10 h-10\",\n \"3xl\": \"w-12 h-12\",\n },\n weight: {\n thin: \"\",\n light: \"\",\n regular: \"\",\n bold: \"\",\n fill: \"\",\n duotone: \"\",\n },\n color: {\n current: \"text-current\",\n primary: \"text-primary\",\n secondary: \"text-secondary-foreground\",\n success: \"text-success\",\n warning: \"text-warning\",\n error: \"text-error\",\n muted: \"text-muted-foreground\",\n },\n },\n defaultVariants: {\n size: \"md\",\n weight: \"regular\",\n color: \"current\",\n },\n});\n\nexport interface IconProps\n extends\n Omit<React.HTMLAttributes<SVGSVGElement>, \"color\">,\n VariantProps<typeof iconVariants> {\n name: IconName;\n className?: string;\n}\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size, weight, color, className, ...props }, ref) => {\n const IconComponent = iconMap[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found in iconMap`);\n return null;\n }\n\n return (\n <IconComponent\n ref={ref}\n weight={\n weight as \"thin\" | \"light\" | \"regular\" | \"bold\" | \"fill\" | \"duotone\"\n }\n className={cn(iconVariants({ size, weight, color }), className)}\n {...props}\n />\n );\n },\n);\n\nIcon.displayName = \"Icon\";\n\n// Export icon names for TypeScript autocomplete\nexport const iconNames = Object.keys(iconMap) as IconName[];\n\n// Note: For additional icons, import directly from 'phosphor-react' to avoid bundling unused icons\n// Example: import { CustomIcon } from 'phosphor-react'\n"]}
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),a=require('react'),classVarianceAuthority=require('class-variance-authority'),phosphorReact=require('phosphor-react');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 a__namespace=/*#__PURE__*/_interopNamespace(a);var E=classVarianceAuthority.cva("flex items-center justify-center space-x-1",{variants:{variant:{default:"",compact:"space-x-0.5"},size:{default:"h-9",sm:"h-8",lg:"h-10"}},defaultVariants:{variant:"default",size:"default"}}),i=classVarianceAuthority.cva("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 w-9",sm:"h-8 w-8 text-xs",lg:"h-10 w-10",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),k=a__namespace.forwardRef(({className:o,currentPage:e,totalPages:t,onPageChange:b,showFirstLast:v=true,showPrevNext:y=true,maxVisiblePages:c=5,disabled:r=false,variant:R,size:l,...w},P)=>{let m=n=>{r||n<1||n>t||n===e||b(n);},f=(()=>{if(t<=c)return Array.from({length:t},(L,N)=>N+1);let n=Math.floor(c/2),u=Math.max(1,e-n),h=Math.min(t,u+c-1);return h-u+1<c&&(u=Math.max(1,h-c+1)),Array.from({length:h-u+1},(L,N)=>u+N)})(),C=f[0]>1,M=f[f.length-1]<t;return a__namespace.createElement("nav",{ref:P,"aria-label":"Pagination",className:chunkITRGJNWL_cjs.a(E({variant:R,size:l}),o),...w},a__namespace.createElement("ul",{className:"flex items-center space-x-1"},v&&a__namespace.createElement("li",null,a__namespace.createElement("button",{onClick:()=>m(1),disabled:r||e===1,className:chunkITRGJNWL_cjs.a(i({variant:"outline",size:l})),"aria-label":"Go to first page"},a__namespace.createElement("span",{className:"sr-only"},"First"),a__namespace.createElement(phosphorReact.CaretLeft,{className:"h-4 w-4"}),a__namespace.createElement(phosphorReact.CaretLeft,{className:"h-4 w-4 -ml-1"}))),y&&a__namespace.createElement("li",null,a__namespace.createElement("button",{onClick:()=>m(e-1),disabled:r||e===1,className:chunkITRGJNWL_cjs.a(i({variant:"outline",size:l})),"aria-label":"Go to previous page"},a__namespace.createElement("span",{className:"sr-only"},"Previous"),a__namespace.createElement(phosphorReact.CaretLeft,{className:"h-4 w-4"}))),C&&a__namespace.createElement("li",null,a__namespace.createElement("span",{className:"flex items-center justify-center h-9 w-9 text-sm text-muted-foreground"},a__namespace.createElement(phosphorReact.DotsThree,{className:"h-4 w-4"}),a__namespace.createElement("span",{className:"sr-only"},"More pages before"))),f.map(n=>a__namespace.createElement("li",{key:n},a__namespace.createElement("button",{onClick:()=>m(n),disabled:r,className:chunkITRGJNWL_cjs.a(i({variant:n===e?"default":"outline",size:l}),n===e&&"bg-primary text-primary-foreground hover:bg-primary/90"),"aria-label":`Go to page ${n}`,"aria-current":n===e?"page":void 0},n))),M&&a__namespace.createElement("li",null,a__namespace.createElement("span",{className:"flex items-center justify-center h-9 w-9 text-sm text-muted-foreground"},a__namespace.createElement(phosphorReact.DotsThree,{className:"h-4 w-4"}),a__namespace.createElement("span",{className:"sr-only"},"More pages after"))),y&&a__namespace.createElement("li",null,a__namespace.createElement("button",{onClick:()=>m(e+1),disabled:r||e===t,className:chunkITRGJNWL_cjs.a(i({variant:"outline",size:l})),"aria-label":"Go to next page"},a__namespace.createElement("span",{className:"sr-only"},"Next"),a__namespace.createElement(phosphorReact.CaretRight,{className:"h-4 w-4"}))),v&&a__namespace.createElement("li",null,a__namespace.createElement("button",{onClick:()=>m(t),disabled:r||e===t,className:chunkITRGJNWL_cjs.a(i({variant:"outline",size:l})),"aria-label":"Go to last page"},a__namespace.createElement("span",{className:"sr-only"},"Last"),a__namespace.createElement(phosphorReact.CaretRight,{className:"h-4 w-4"}),a__namespace.createElement(phosphorReact.CaretRight,{className:"h-4 w-4 -ml-1"})))))});k.displayName="Pagination";var T=a__namespace.forwardRef(({className:o,...e},t)=>a__namespace.createElement("ul",{ref:t,className:chunkITRGJNWL_cjs.a("flex flex-row items-center gap-1",o),...e}));T.displayName="PaginationContent";var H=a__namespace.forwardRef(({className:o,...e},t)=>a__namespace.createElement("li",{ref:t,className:chunkITRGJNWL_cjs.a("",o),...e}));H.displayName="PaginationItem";var G=a__namespace.forwardRef(({className:o,isActive:e,...t},b)=>a__namespace.createElement("button",{ref:b,className:chunkITRGJNWL_cjs.a(i({variant:e?"default":"outline",size:"default"}),e&&"bg-primary text-primary-foreground hover:bg-primary/90",o),"aria-current":e?"page":void 0,...t}));G.displayName="PaginationLink";var V=a__namespace.forwardRef(({className:o,...e},t)=>a__namespace.createElement("button",{ref:t,className:chunkITRGJNWL_cjs.a(i({variant:"outline",size:"default"}),o),"aria-label":"Go to previous page",...e},a__namespace.createElement(phosphorReact.CaretLeft,{className:"h-4 w-4"}),a__namespace.createElement("span",{className:"sr-only"},"Previous")));V.displayName="PaginationPrevious";var W=a__namespace.forwardRef(({className:o,...e},t)=>a__namespace.createElement("button",{ref:t,className:chunkITRGJNWL_cjs.a(i({variant:"outline",size:"default"}),o),"aria-label":"Go to next page",...e},a__namespace.createElement(phosphorReact.CaretRight,{className:"h-4 w-4"}),a__namespace.createElement("span",{className:"sr-only"},"Next")));W.displayName="PaginationNext";var j=a__namespace.forwardRef(({className:o,...e},t)=>a__namespace.createElement("span",{ref:t,className:chunkITRGJNWL_cjs.a("flex h-9 w-9 items-center justify-center",o),...e},a__namespace.createElement(phosphorReact.DotsThree,{className:"h-4 w-4"}),a__namespace.createElement("span",{className:"sr-only"},"More pages")));j.displayName="PaginationEllipsis";exports.a=E;exports.b=i;exports.c=k;exports.d=T;exports.e=H;exports.f=G;exports.g=V;exports.h=W;exports.i=j;//# sourceMappingURL=chunk-BYV75TDY.cjs.map
2
3
  //# sourceMappingURL=chunk-BYV75TDY.cjs.map
@@ -1,2 +1,3 @@
1
- 'use strict';var chunkOZ3RIKZO_cjs=require('./chunk-OZ3RIKZO.cjs'),a=require('react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var a__default=/*#__PURE__*/_interopDefault(a);var p=a__default.default.lazy(()=>import('./components/core/charts.cjs').then(t=>({default:t.Chart}))),s=({fallback:t=a__default.default.createElement(chunkOZ3RIKZO_cjs.b,{className:"h-64 w-full"}),...r})=>a__default.default.createElement(a.Suspense,{fallback:t},a__default.default.createElement(p,{...r}));s.displayName="LazyChart";exports.a=s;//# sourceMappingURL=chunk-BSUHBLZO.cjs.map
2
- //# sourceMappingURL=chunk-BSUHBLZO.cjs.map
1
+ "use client";
2
+ 'use strict';var chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),a=require('react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var a__default=/*#__PURE__*/_interopDefault(a);var p=a__default.default.lazy(()=>import('./components/core/charts.cjs').then(t=>({default:t.Chart}))),s=({fallback:t=a__default.default.createElement(chunk3QVQ2TNE_cjs.b,{className:"h-64 w-full"}),...r})=>a__default.default.createElement(a.Suspense,{fallback:t},a__default.default.createElement(p,{...r}));s.displayName="LazyChart";exports.a=s;//# sourceMappingURL=chunk-BZ5ZCZJX.cjs.map
3
+ //# sourceMappingURL=chunk-BZ5ZCZJX.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/core/charts-lazy.tsx"],"names":["ChartLazy","React","module","LazyChart","fallback","Skeleton","props","Suspense"],"mappings":"0MAwBMA,CAAAA,CAAYC,kBAAAA,CAAM,IAAA,CAAK,IAC3B,OAAO,8BAAU,EAAE,IAAA,CAAMC,CAAAA,GAAY,CACnC,OAAA,CAASA,CAAAA,CAAO,KAClB,EAAE,CACJ,CAAA,CAMaC,CAAAA,CAAsC,CAAC,CAClD,QAAA,CAAAC,EAAWH,kBAAAA,CAAA,aAAA,CAACI,mBAAAA,CAAA,CAAS,SAAA,CAAU,aAAA,CAAc,EAC7C,GAAGC,CACL,CAAA,GAEIL,kBAAAA,CAAA,aAAA,CAACM,UAAAA,CAAA,CAAS,QAAA,CAAUH,CAAAA,CAAAA,CAClBH,kBAAAA,CAAA,aAAA,CAACD,CAAAA,CAAA,CAAW,GAAGM,CAAAA,CAAO,CACxB,EAIJH,CAAAA,CAAU,WAAA,CAAc,WAAA","file":"chunk-BSUHBLZO.cjs","sourcesContent":["import React, { Suspense } from \"react\";\nimport { Skeleton } from \"./skeleton\";\n\n/**\n * Lazy-loaded Chart component wrapper\n * Use this for better code splitting when Charts are not immediately needed\n *\n * @example\n * ```tsx\n * import { LazyChart } from '@jarllyng/nostromo/components/core/charts-lazy';\n *\n * function Dashboard() {\n * return (\n * <LazyChart\n * type=\"line\"\n * data={data}\n * dataKeys={['sales', 'revenue']}\n * />\n * );\n * }\n * ```\n */\n\n// Dynamic import for Chart component with recharts\nconst ChartLazy = React.lazy(() =>\n import(\"./charts\").then((module) => ({\n default: module.Chart,\n })),\n);\n\nexport interface LazyChartProps extends React.ComponentProps<typeof ChartLazy> {\n fallback?: React.ReactNode;\n}\n\nexport const LazyChart: React.FC<LazyChartProps> = ({\n fallback = <Skeleton className=\"h-64 w-full\" />,\n ...props\n}) => {\n return (\n <Suspense fallback={fallback}>\n <ChartLazy {...props} />\n </Suspense>\n );\n};\n\nLazyChart.displayName = \"LazyChart\";\n"]}
1
+ {"version":3,"sources":["../src/components/core/charts-lazy.tsx"],"names":["ChartLazy","React","module","LazyChart","fallback","Skeleton","props","Suspense"],"mappings":"0MAwBMA,CAAAA,CAAYC,kBAAAA,CAAM,IAAA,CAAK,IAC3B,OAAO,8BAAU,EAAE,IAAA,CAAMC,CAAAA,GAAY,CACnC,OAAA,CAASA,CAAAA,CAAO,KAClB,EAAE,CACJ,CAAA,CAMaC,CAAAA,CAAsC,CAAC,CAClD,QAAA,CAAAC,EAAWH,kBAAAA,CAAA,aAAA,CAACI,mBAAAA,CAAA,CAAS,SAAA,CAAU,aAAA,CAAc,EAC7C,GAAGC,CACL,CAAA,GAEIL,kBAAAA,CAAA,aAAA,CAACM,UAAAA,CAAA,CAAS,QAAA,CAAUH,CAAAA,CAAAA,CAClBH,kBAAAA,CAAA,aAAA,CAACD,CAAAA,CAAA,CAAW,GAAGM,CAAAA,CAAO,CACxB,EAIJH,CAAAA,CAAU,WAAA,CAAc,WAAA","file":"chunk-BZ5ZCZJX.cjs","sourcesContent":["import React, { Suspense } from \"react\";\nimport { Skeleton } from \"./skeleton\";\n\n/**\n * Lazy-loaded Chart component wrapper\n * Use this for better code splitting when Charts are not immediately needed\n *\n * @example\n * ```tsx\n * import { LazyChart } from '@jarllyng/nostromo/components/core/charts-lazy';\n *\n * function Dashboard() {\n * return (\n * <LazyChart\n * type=\"line\"\n * data={data}\n * dataKeys={['sales', 'revenue']}\n * />\n * );\n * }\n * ```\n */\n\n// Dynamic import for Chart component with recharts\nconst ChartLazy = React.lazy(() =>\n import(\"./charts\").then((module) => ({\n default: module.Chart,\n })),\n);\n\nexport interface LazyChartProps extends React.ComponentProps<typeof ChartLazy> {\n fallback?: React.ReactNode;\n}\n\nexport const LazyChart: React.FC<LazyChartProps> = ({\n fallback = <Skeleton className=\"h-64 w-full\" />,\n ...props\n}) => {\n return (\n <Suspense fallback={fallback}>\n <ChartLazy {...props} />\n </Suspense>\n );\n};\n\nLazyChart.displayName = \"LazyChart\";\n"]}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import*as t from'@radix-ui/react-select';import {cva}from'class-variance-authority';var d=cva("flex h-10 w-full items-center justify-between rounded-md border bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 shadow-sm hover:shadow-md",{variants:{variant:{default:"border-border hover:border-border focus:border-ring",outline:"border-2 border-border hover:border-border focus:border-ring",ghost:"border-transparent bg-transparent hover:bg-muted",error:"border-destructive hover:border-destructive/80 focus:border-destructive focus:ring-destructive",success:"border-success-500 hover:border-success-600 focus:border-success-500 focus:ring-success-500"},size:{default:"h-10 px-3 py-2 text-sm",sm:"h-8 px-2 py-1 text-xs",lg:"h-12 px-4 py-3 text-base"}},defaultVariants:{variant:"default",size:"default"}}),p=cva("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg transition-all duration-200",{variants:{variant:{default:"border-border shadow-lg hover:shadow-xl",outline:"border-2 border-border shadow-lg hover:shadow-xl",ghost:"border-transparent shadow-xl hover:shadow-2xl",error:"border-destructive/20 shadow-lg hover:shadow-xl",success:"border-success-200 shadow-lg hover:shadow-xl"}},defaultVariants:{variant:"default"}}),m=cva("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 transition-all duration-200",{variants:{variant:{default:"focus:bg-accent focus:text-accent-foreground hover:bg-muted",highlight:"focus:bg-primary/10 focus:text-primary hover:bg-primary/5",error:"focus:bg-destructive/10 focus:text-destructive hover:bg-destructive/5",success:"focus:bg-success-100 focus:text-success-900 hover:bg-success-50"}},defaultVariants:{variant:"default"}}),R=t.Root,f=e.forwardRef(({...r},o)=>e.createElement(t.Group,{...r}));f.displayName="SelectGroup";var u=e.forwardRef(({...r},o)=>e.createElement(t.Value,{...r}));u.displayName="SelectValue";var v=e.forwardRef(({className:r,variant:o,size:i,children:a$1,...c},l)=>e.createElement(t.Trigger,{ref:l,className:a(d({variant:o,size:i}),r),...c},a$1,e.createElement(t.Icon,{asChild:true},e.createElement("svg",{className:"h-4 w-4 opacity-50",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})))));v.displayName="SelectPrimitive.Trigger";var S=e.forwardRef(({className:r,variant:o,children:i,position:a$1="popper",...c},l)=>e.createElement(t.Portal,null,e.createElement(t.Content,{ref:l,className:a(p({variant:o}),a$1==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",r),position:a$1,...c},e.createElement(t.Viewport,{className:a("p-1",a$1==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]")},i))));S.displayName="SelectPrimitive.Content";var g=e.forwardRef(({className:r,...o},i)=>e.createElement(t.Label,{ref:i,className:a("py-1.5 pl-8 pr-2 text-sm font-semibold",r),...o}));g.displayName="SelectPrimitive.Label";var P=e.forwardRef(({className:r,variant:o,children:i,...a$1},c)=>e.createElement(t.Item,{ref:c,className:a(m({variant:o}),r),...a$1},e.createElement("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center"},e.createElement(t.ItemIndicator,null,e.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})))),e.createElement(t.ItemText,null,i)));P.displayName="SelectPrimitive.Item";var h=e.forwardRef(({className:r,...o},i)=>e.createElement(t.Separator,{ref:i,className:a("-mx-1 my-1 h-px bg-muted",r),...o}));h.displayName="SelectPrimitive.Separator";
2
3
  export{d as a,p as b,m as c,R as d,f as e,u as f,v as g,S as h,g as i,P as j,h as k};//# sourceMappingURL=chunk-BZF3ZOAN.js.map
3
4
  //# sourceMappingURL=chunk-BZF3ZOAN.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ 'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),a=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 a__namespace=/*#__PURE__*/_interopNamespace(a);var f=classVarianceAuthority.cva("shrink-0 bg-border",{variants:{orientation:{horizontal:"h-[1px] w-full",vertical:"w-[1px] self-stretch h-full"},variant:{default:"bg-border",muted:"bg-muted",subtle:"bg-muted/50"},size:{default:"",sm:"h-px",lg:"h-0.5"}},defaultVariants:{orientation:"horizontal",variant:"default",size:"default"}}),d=a__namespace.forwardRef(({className:o,orientation:t="horizontal",variant:i="default",size:n="default",decorative:r=true,...l},s)=>a__namespace.createElement("div",{ref:s,role:r?"none":"separator",...r?{}:{"aria-orientation":t||void 0},className:chunkITRGJNWL_cjs.a(f({orientation:t,variant:i,size:n}),o),...l}));d.displayName="Separator";exports.a=f;exports.b=d;//# sourceMappingURL=chunk-C7HZAQBX.cjs.map
3
+ //# sourceMappingURL=chunk-C7HZAQBX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/separator.tsx"],"names":["separatorVariants","cva","Separator","a","className","orientation","variant","size","decorative","props","ref","cn"],"mappings":"ufAIA,IAAMA,CAAAA,CAAoBC,0BAAAA,CAAI,oBAAA,CAAsB,CAClD,QAAA,CAAU,CACR,WAAA,CAAa,CACX,UAAA,CAAY,gBAAA,CAMZ,QAAA,CAAU,6BACZ,EACA,OAAA,CAAS,CACP,OAAA,CAAS,WAAA,CACT,KAAA,CAAO,UAAA,CACP,OAAQ,aACV,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,EAAA,CACT,GAAI,MAAA,CACJ,EAAA,CAAI,OACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,WAAA,CAAa,YAAA,CACb,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CAAC,CAAA,CAUKC,CAAAA,CAAkBC,YAAA,CAAA,UAAA,CACtB,CACE,CACE,UAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CAAc,YAAA,CACd,OAAA,CAAAC,CAAAA,CAAU,UACV,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,UAAA,CAAAC,CAAAA,CAAa,IAAA,CACb,GAAGC,CACL,CAAA,CACAC,CAAAA,GAGEP,YAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKO,EACL,IAAA,CAAMF,CAAAA,CAAa,MAAA,CAAS,WAAA,CAC3B,GAAIA,CAAAA,CACD,EAAC,CACD,CAAE,kBAAA,CAAoBH,CAAAA,EAAe,MAAU,CAAA,CACnD,UAAWM,mBAAAA,CACTX,CAAAA,CAAkB,CAAE,WAAA,CAAAK,CAAAA,CAAa,OAAA,CAAAC,EAAS,IAAA,CAAAC,CAAK,CAAC,CAAA,CAChDH,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CAGN,EACAP,CAAAA,CAAU,WAAA,CAAc,WAAA","file":"chunk-C7HZAQBX.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst separatorVariants = cva(\"shrink-0 bg-border\", {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n // self-stretch, not just h-full: `height: 100%` against an auto-height\n // flex row resolves to nothing, and with the usual `items-center` the\n // item does not stretch either - so a vertical separator rendered 1px\n // wide and 0px tall, which looked like the prop did nothing at all.\n // Stretching fills the cross axis; h-full still covers non-flex parents.\n vertical: \"w-[1px] self-stretch h-full\",\n },\n variant: {\n default: \"bg-border\",\n muted: \"bg-muted\",\n subtle: \"bg-muted/50\",\n },\n size: {\n default: \"\",\n sm: \"h-px\",\n lg: \"h-0.5\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n variant: \"default\",\n size: \"default\",\n },\n});\n\nexport interface SeparatorProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"aria-orientation\">,\n VariantProps<typeof separatorVariants> {\n decorative?: boolean;\n \"aria-orientation\"?: \"horizontal\" | \"vertical\";\n}\n\nconst Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n variant = \"default\",\n size = \"default\",\n decorative = true,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role={decorative ? \"none\" : \"separator\"}\n {...(decorative\n ? {}\n : { \"aria-orientation\": orientation || undefined })}\n className={cn(\n separatorVariants({ orientation, variant, size }),\n className,\n )}\n {...props}\n />\n );\n },\n);\nSeparator.displayName = \"Separator\";\n\nexport { Separator, separatorVariants };\n"]}
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  import {a}from'./chunk-AC2JBXHQ.js';import t from'react';import {cva}from'class-variance-authority';var f=cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),p=cva("grid gap-8",{variants:{columns:{1:"grid-cols-1",2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4"}},defaultVariants:{columns:3}}),v=cva("relative p-6 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200 hover:shadow-md",{variants:{variant:{default:"border-border hover:border-accent/20",accent:"border-accent/20 bg-accent/5 hover:bg-accent/10",muted:"border-muted bg-muted/20 hover:bg-muted/30"}},defaultVariants:{variant:"default"}}),x=cva("w-12 h-12 rounded-lg flex items-center justify-center mb-4",{variants:{variant:{default:"bg-primary/10 text-primary",accent:"bg-accent/20 text-accent-foreground",muted:"bg-muted text-muted-foreground",success:"bg-success-100 text-success-600",warning:"bg-warning-100 text-warning-600",error:"bg-error-100 text-error-600"}},defaultVariants:{variant:"default"}}),N=({features:o,title:n,subtitle:s,columns:d,cardVariant:c,variant:l,className:m,centered:i=true,...u})=>t.createElement("section",{className:a(f({variant:l}),m),...u},t.createElement("div",{className:"container mx-auto px-4"},(n||s)&&t.createElement("div",{className:a("mb-12",i&&"text-center")},n&&t.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},n),s&&t.createElement("p",{className:a("text-lg text-muted-foreground",i&&"max-w-2xl mx-auto")},s)),t.createElement("div",{className:a(p({columns:d}))},o.map((a$1,g)=>t.createElement("div",{key:a$1.id||g,className:a(v({variant:c}))},a$1.icon&&t.createElement("div",{className:a(x({variant:a$1.iconVariant}))},a$1.icon),t.createElement("h3",{className:"text-xl font-semibold mb-3 text-foreground"},a$1.title),t.createElement("p",{className:"text-muted-foreground leading-relaxed"},a$1.description))))));export{N as a};//# sourceMappingURL=chunk-CEMOHO3Z.js.map
2
3
  //# sourceMappingURL=chunk-CEMOHO3Z.js.map