@jarllyng/nostromo 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/base.css +312 -0
  2. package/dist/chunk-2DNQXAMB.cjs +2 -0
  3. package/dist/chunk-2DNQXAMB.cjs.map +1 -0
  4. package/dist/chunk-2JQROMCM.js +2 -0
  5. package/dist/chunk-2JQROMCM.js.map +1 -0
  6. package/dist/chunk-3BNGK67W.js +2 -0
  7. package/dist/chunk-3BNGK67W.js.map +1 -0
  8. package/dist/chunk-3V3OIZWQ.cjs +2 -0
  9. package/dist/chunk-3V3OIZWQ.cjs.map +1 -0
  10. package/dist/chunk-44HISN45.js +2 -0
  11. package/dist/chunk-44HISN45.js.map +1 -0
  12. package/dist/chunk-4FSJEW7W.cjs +2 -0
  13. package/dist/chunk-4FSJEW7W.cjs.map +1 -0
  14. package/dist/chunk-4PN7OGLX.cjs +2 -0
  15. package/dist/chunk-4PN7OGLX.cjs.map +1 -0
  16. package/dist/chunk-4TYVEXRA.cjs +2 -0
  17. package/dist/chunk-4TYVEXRA.cjs.map +1 -0
  18. package/dist/chunk-4WFEVNXW.cjs +2 -0
  19. package/dist/chunk-4WFEVNXW.cjs.map +1 -0
  20. package/dist/chunk-55N2IT62.cjs +2 -0
  21. package/dist/chunk-55N2IT62.cjs.map +1 -0
  22. package/dist/chunk-5PVFLXPO.cjs +3 -0
  23. package/dist/chunk-5PVFLXPO.cjs.map +1 -0
  24. package/dist/chunk-6QAYHUNV.js +3 -0
  25. package/dist/chunk-6QAYHUNV.js.map +1 -0
  26. package/dist/chunk-7PPAI3MM.cjs +2 -0
  27. package/dist/chunk-7PPAI3MM.cjs.map +1 -0
  28. package/dist/chunk-7SPPGTBT.cjs +2 -0
  29. package/dist/chunk-7SPPGTBT.cjs.map +1 -0
  30. package/dist/chunk-7W456HZL.js +2 -0
  31. package/dist/chunk-7W456HZL.js.map +1 -0
  32. package/dist/chunk-7WEIVLG3.cjs +2 -0
  33. package/dist/chunk-7WEIVLG3.cjs.map +1 -0
  34. package/dist/chunk-7YFUAGIW.cjs +2 -0
  35. package/dist/chunk-7YFUAGIW.cjs.map +1 -0
  36. package/dist/chunk-ABA7B5DE.js +2 -0
  37. package/dist/chunk-ABA7B5DE.js.map +1 -0
  38. package/dist/chunk-AC2JBXHQ.js +2 -0
  39. package/dist/chunk-AC2JBXHQ.js.map +1 -0
  40. package/dist/chunk-AHRTNKXE.js +2 -0
  41. package/dist/chunk-AHRTNKXE.js.map +1 -0
  42. package/dist/chunk-AVTJE2O2.js +3 -0
  43. package/dist/chunk-AVTJE2O2.js.map +1 -0
  44. package/dist/chunk-B2BWBKZA.cjs +2 -0
  45. package/dist/chunk-B2BWBKZA.cjs.map +1 -0
  46. package/dist/chunk-BSUHBLZO.cjs +2 -0
  47. package/dist/chunk-BSUHBLZO.cjs.map +1 -0
  48. package/dist/chunk-BYV75TDY.cjs +2 -0
  49. package/dist/chunk-BYV75TDY.cjs.map +1 -0
  50. package/dist/chunk-BZF3ZOAN.js +3 -0
  51. package/dist/chunk-BZF3ZOAN.js.map +1 -0
  52. package/dist/chunk-CEMOHO3Z.js +2 -0
  53. package/dist/chunk-CEMOHO3Z.js.map +1 -0
  54. package/dist/chunk-COXN6XBA.js +2 -0
  55. package/dist/chunk-COXN6XBA.js.map +1 -0
  56. package/dist/chunk-CVOSWGQZ.js +2 -0
  57. package/dist/chunk-CVOSWGQZ.js.map +1 -0
  58. package/dist/chunk-EFCNLYYW.cjs +2 -0
  59. package/dist/chunk-EFCNLYYW.cjs.map +1 -0
  60. package/dist/chunk-EGQ2Q37R.cjs +2 -0
  61. package/dist/chunk-EGQ2Q37R.cjs.map +1 -0
  62. package/dist/chunk-EIXD3Y4R.js +2 -0
  63. package/dist/chunk-EIXD3Y4R.js.map +1 -0
  64. package/dist/chunk-EVRQYWZ3.cjs +2 -0
  65. package/dist/chunk-EVRQYWZ3.cjs.map +1 -0
  66. package/dist/chunk-FUENXWR7.cjs +2 -0
  67. package/dist/chunk-FUENXWR7.cjs.map +1 -0
  68. package/dist/chunk-G35BR7SK.cjs +2 -0
  69. package/dist/chunk-G35BR7SK.cjs.map +1 -0
  70. package/dist/chunk-G5ZSOVJY.cjs +2 -0
  71. package/dist/chunk-G5ZSOVJY.cjs.map +1 -0
  72. package/dist/chunk-G6TR5RGR.js +2 -0
  73. package/dist/chunk-G6TR5RGR.js.map +1 -0
  74. package/dist/chunk-GUJB555L.js +2 -0
  75. package/dist/chunk-GUJB555L.js.map +1 -0
  76. package/dist/chunk-HD3TMQPR.js +2 -0
  77. package/dist/chunk-HD3TMQPR.js.map +1 -0
  78. package/dist/chunk-HWZTMVQV.cjs +2 -0
  79. package/dist/chunk-HWZTMVQV.cjs.map +1 -0
  80. package/dist/chunk-IOX4WPJL.cjs +2 -0
  81. package/dist/chunk-IOX4WPJL.cjs.map +1 -0
  82. package/dist/chunk-ITRGJNWL.cjs +2 -0
  83. package/dist/chunk-ITRGJNWL.cjs.map +1 -0
  84. package/dist/chunk-J4VRJVTO.cjs +2 -0
  85. package/dist/chunk-J4VRJVTO.cjs.map +1 -0
  86. package/dist/chunk-JEHIMQQZ.js +2 -0
  87. package/dist/chunk-JEHIMQQZ.js.map +1 -0
  88. package/dist/chunk-JUOCEYUF.cjs +2 -0
  89. package/dist/chunk-JUOCEYUF.cjs.map +1 -0
  90. package/dist/chunk-JZROH43C.js +2 -0
  91. package/dist/chunk-JZROH43C.js.map +1 -0
  92. package/dist/chunk-K2JCGDU7.cjs +3 -0
  93. package/dist/chunk-K2JCGDU7.cjs.map +1 -0
  94. package/dist/chunk-LR4VUFOQ.js +2 -0
  95. package/dist/chunk-LR4VUFOQ.js.map +1 -0
  96. package/dist/chunk-LXQT7FH6.cjs +2 -0
  97. package/dist/chunk-LXQT7FH6.cjs.map +1 -0
  98. package/dist/chunk-LYVCB45L.js +2 -0
  99. package/dist/chunk-LYVCB45L.js.map +1 -0
  100. package/dist/chunk-M5IBD3KV.js +2 -0
  101. package/dist/chunk-M5IBD3KV.js.map +1 -0
  102. package/dist/chunk-MLJZU63I.cjs +2 -0
  103. package/dist/chunk-MLJZU63I.cjs.map +1 -0
  104. package/dist/chunk-MLSE5XSB.cjs +3 -0
  105. package/dist/chunk-MLSE5XSB.cjs.map +1 -0
  106. package/dist/chunk-MRZOLUSF.js +2 -0
  107. package/dist/chunk-MRZOLUSF.js.map +1 -0
  108. package/dist/chunk-MVCGR7JQ.js +2 -0
  109. package/dist/chunk-MVCGR7JQ.js.map +1 -0
  110. package/dist/chunk-NLD4R74T.js +2 -0
  111. package/dist/chunk-NLD4R74T.js.map +1 -0
  112. package/dist/chunk-OEN63W3G.cjs +2 -0
  113. package/dist/chunk-OEN63W3G.cjs.map +1 -0
  114. package/dist/chunk-OUWOPYAX.js +2 -0
  115. package/dist/chunk-OUWOPYAX.js.map +1 -0
  116. package/dist/chunk-OZ3RIKZO.cjs +2 -0
  117. package/dist/chunk-OZ3RIKZO.cjs.map +1 -0
  118. package/dist/chunk-PEYPRWZP.js +2 -0
  119. package/dist/chunk-PEYPRWZP.js.map +1 -0
  120. package/dist/chunk-PMNNV4ML.cjs +2 -0
  121. package/dist/chunk-PMNNV4ML.cjs.map +1 -0
  122. package/dist/chunk-PVHTEE5T.cjs +2 -0
  123. package/dist/chunk-PVHTEE5T.cjs.map +1 -0
  124. package/dist/chunk-Q6QMSAJR.js +2 -0
  125. package/dist/chunk-Q6QMSAJR.js.map +1 -0
  126. package/dist/chunk-QBAURT3I.js +2 -0
  127. package/dist/chunk-QBAURT3I.js.map +1 -0
  128. package/dist/chunk-QF5CRDZI.js +2 -0
  129. package/dist/chunk-QF5CRDZI.js.map +1 -0
  130. package/dist/chunk-RC2THAIA.js +2 -0
  131. package/dist/chunk-RC2THAIA.js.map +1 -0
  132. package/dist/chunk-RPRISB7O.cjs +2 -0
  133. package/dist/chunk-RPRISB7O.cjs.map +1 -0
  134. package/dist/chunk-SD4IIQ2I.cjs +2 -0
  135. package/dist/chunk-SD4IIQ2I.cjs.map +1 -0
  136. package/dist/chunk-SLGMKBST.js +2 -0
  137. package/dist/chunk-SLGMKBST.js.map +1 -0
  138. package/dist/chunk-TGPWW7FC.js +2 -0
  139. package/dist/chunk-TGPWW7FC.js.map +1 -0
  140. package/dist/chunk-TJFZAMBB.js +2 -0
  141. package/dist/chunk-TJFZAMBB.js.map +1 -0
  142. package/dist/chunk-UL6MF7ES.js +2 -0
  143. package/dist/chunk-UL6MF7ES.js.map +1 -0
  144. package/dist/chunk-V77N662N.cjs +2 -0
  145. package/dist/chunk-V77N662N.cjs.map +1 -0
  146. package/dist/chunk-VD6S2PE4.js +2 -0
  147. package/dist/chunk-VD6S2PE4.js.map +1 -0
  148. package/dist/chunk-VXMDVKAD.js +2 -0
  149. package/dist/chunk-VXMDVKAD.js.map +1 -0
  150. package/dist/chunk-WW2DDHCI.js +2 -0
  151. package/dist/chunk-WW2DDHCI.js.map +1 -0
  152. package/dist/chunk-XPIBRXTW.cjs +2 -0
  153. package/dist/chunk-XPIBRXTW.cjs.map +1 -0
  154. package/dist/chunk-XQUZ7DUN.js +2 -0
  155. package/dist/chunk-XQUZ7DUN.js.map +1 -0
  156. package/dist/chunk-YNSODGYK.js +2 -0
  157. package/dist/chunk-YNSODGYK.js.map +1 -0
  158. package/dist/chunk-ZC4HJSII.cjs +2 -0
  159. package/dist/chunk-ZC4HJSII.cjs.map +1 -0
  160. package/dist/chunk-ZEJAFIOC.js +2 -0
  161. package/dist/chunk-ZEJAFIOC.js.map +1 -0
  162. package/dist/chunk-ZQDFYSZB.cjs +2 -0
  163. package/dist/chunk-ZQDFYSZB.cjs.map +1 -0
  164. package/dist/chunk-ZYP2PDSX.cjs +2 -0
  165. package/dist/chunk-ZYP2PDSX.cjs.map +1 -0
  166. package/dist/components/core/accordion.cjs +2 -0
  167. package/dist/components/core/accordion.cjs.map +1 -0
  168. package/dist/components/core/accordion.d.cts +53 -0
  169. package/dist/components/core/accordion.d.ts +53 -0
  170. package/dist/components/core/accordion.js +2 -0
  171. package/dist/components/core/accordion.js.map +1 -0
  172. package/dist/components/core/alert.cjs +2 -0
  173. package/dist/components/core/alert.cjs.map +1 -0
  174. package/dist/components/core/alert.d.cts +29 -0
  175. package/dist/components/core/alert.d.ts +29 -0
  176. package/dist/components/core/alert.js +2 -0
  177. package/dist/components/core/alert.js.map +1 -0
  178. package/dist/components/core/avatar.cjs +2 -0
  179. package/dist/components/core/avatar.cjs.map +1 -0
  180. package/dist/components/core/avatar.d.cts +22 -0
  181. package/dist/components/core/avatar.d.ts +22 -0
  182. package/dist/components/core/avatar.js +2 -0
  183. package/dist/components/core/avatar.js.map +1 -0
  184. package/dist/components/core/badge.cjs +2 -0
  185. package/dist/components/core/badge.cjs.map +1 -0
  186. package/dist/components/core/badge.d.cts +43 -0
  187. package/dist/components/core/badge.d.ts +43 -0
  188. package/dist/components/core/badge.js +2 -0
  189. package/dist/components/core/badge.js.map +1 -0
  190. package/dist/components/core/breadcrumb.cjs +2 -0
  191. package/dist/components/core/breadcrumb.cjs.map +1 -0
  192. package/dist/components/core/breadcrumb.d.cts +43 -0
  193. package/dist/components/core/breadcrumb.d.ts +43 -0
  194. package/dist/components/core/breadcrumb.js +2 -0
  195. package/dist/components/core/breadcrumb.js.map +1 -0
  196. package/dist/components/core/button.cjs +2 -0
  197. package/dist/components/core/button.cjs.map +1 -0
  198. package/dist/components/core/button.d.cts +39 -0
  199. package/dist/components/core/button.d.ts +39 -0
  200. package/dist/components/core/button.js +2 -0
  201. package/dist/components/core/button.js.map +1 -0
  202. package/dist/components/core/calendar.cjs +2 -0
  203. package/dist/components/core/calendar.cjs.map +1 -0
  204. package/dist/components/core/calendar.d.cts +45 -0
  205. package/dist/components/core/calendar.d.ts +45 -0
  206. package/dist/components/core/calendar.js +2 -0
  207. package/dist/components/core/calendar.js.map +1 -0
  208. package/dist/components/core/card.cjs +2 -0
  209. package/dist/components/core/card.cjs.map +1 -0
  210. package/dist/components/core/card.d.cts +26 -0
  211. package/dist/components/core/card.d.ts +26 -0
  212. package/dist/components/core/card.js +2 -0
  213. package/dist/components/core/card.js.map +1 -0
  214. package/dist/components/core/charts-lazy.cjs +2 -0
  215. package/dist/components/core/charts-lazy.cjs.map +1 -0
  216. package/dist/components/core/charts-lazy.d.cts +31 -0
  217. package/dist/components/core/charts-lazy.d.ts +31 -0
  218. package/dist/components/core/charts-lazy.js +2 -0
  219. package/dist/components/core/charts-lazy.js.map +1 -0
  220. package/dist/components/core/charts.cjs +2 -0
  221. package/dist/components/core/charts.cjs.map +1 -0
  222. package/dist/components/core/charts.d.cts +35 -0
  223. package/dist/components/core/charts.d.ts +35 -0
  224. package/dist/components/core/charts.js +2 -0
  225. package/dist/components/core/charts.js.map +1 -0
  226. package/dist/components/core/checkbox.cjs +2 -0
  227. package/dist/components/core/checkbox.cjs.map +1 -0
  228. package/dist/components/core/checkbox.d.cts +31 -0
  229. package/dist/components/core/checkbox.d.ts +31 -0
  230. package/dist/components/core/checkbox.js +2 -0
  231. package/dist/components/core/checkbox.js.map +1 -0
  232. package/dist/components/core/data-table.cjs +2 -0
  233. package/dist/components/core/data-table.cjs.map +1 -0
  234. package/dist/components/core/data-table.d.cts +54 -0
  235. package/dist/components/core/data-table.d.ts +54 -0
  236. package/dist/components/core/data-table.js +2 -0
  237. package/dist/components/core/data-table.js.map +1 -0
  238. package/dist/components/core/dialog.cjs +2 -0
  239. package/dist/components/core/dialog.cjs.map +1 -0
  240. package/dist/components/core/dialog.d.cts +34 -0
  241. package/dist/components/core/dialog.d.ts +34 -0
  242. package/dist/components/core/dialog.js +2 -0
  243. package/dist/components/core/dialog.js.map +1 -0
  244. package/dist/components/core/error-boundary.cjs +2 -0
  245. package/dist/components/core/error-boundary.cjs.map +1 -0
  246. package/dist/components/core/error-boundary.d.cts +35 -0
  247. package/dist/components/core/error-boundary.d.ts +35 -0
  248. package/dist/components/core/error-boundary.js +2 -0
  249. package/dist/components/core/error-boundary.js.map +1 -0
  250. package/dist/components/core/error-message.cjs +2 -0
  251. package/dist/components/core/error-message.cjs.map +1 -0
  252. package/dist/components/core/error-message.d.cts +13 -0
  253. package/dist/components/core/error-message.d.ts +13 -0
  254. package/dist/components/core/error-message.js +2 -0
  255. package/dist/components/core/error-message.js.map +1 -0
  256. package/dist/components/core/helper-text.cjs +2 -0
  257. package/dist/components/core/helper-text.cjs.map +1 -0
  258. package/dist/components/core/helper-text.d.cts +13 -0
  259. package/dist/components/core/helper-text.d.ts +13 -0
  260. package/dist/components/core/helper-text.js +2 -0
  261. package/dist/components/core/helper-text.js.map +1 -0
  262. package/dist/components/core/icon.cjs +2 -0
  263. package/dist/components/core/icon.cjs.map +1 -0
  264. package/dist/components/core/icon.d.cts +19 -0
  265. package/dist/components/core/icon.d.ts +19 -0
  266. package/dist/components/core/icon.js +2 -0
  267. package/dist/components/core/icon.js.map +1 -0
  268. package/dist/components/core/input.cjs +2 -0
  269. package/dist/components/core/input.cjs.map +1 -0
  270. package/dist/components/core/input.d.cts +18 -0
  271. package/dist/components/core/input.d.ts +18 -0
  272. package/dist/components/core/input.js +2 -0
  273. package/dist/components/core/input.js.map +1 -0
  274. package/dist/components/core/label.cjs +2 -0
  275. package/dist/components/core/label.cjs.map +1 -0
  276. package/dist/components/core/label.d.cts +14 -0
  277. package/dist/components/core/label.d.ts +14 -0
  278. package/dist/components/core/label.js +2 -0
  279. package/dist/components/core/label.js.map +1 -0
  280. package/dist/components/core/pagination.cjs +2 -0
  281. package/dist/components/core/pagination.cjs.map +1 -0
  282. package/dist/components/core/pagination.d.cts +32 -0
  283. package/dist/components/core/pagination.d.ts +32 -0
  284. package/dist/components/core/pagination.js +2 -0
  285. package/dist/components/core/pagination.js.map +1 -0
  286. package/dist/components/core/progress.cjs +2 -0
  287. package/dist/components/core/progress.cjs.map +1 -0
  288. package/dist/components/core/progress.d.cts +44 -0
  289. package/dist/components/core/progress.d.ts +44 -0
  290. package/dist/components/core/progress.js +2 -0
  291. package/dist/components/core/progress.js.map +1 -0
  292. package/dist/components/core/radio-group.cjs +2 -0
  293. package/dist/components/core/radio-group.cjs.map +1 -0
  294. package/dist/components/core/radio-group.d.cts +71 -0
  295. package/dist/components/core/radio-group.d.ts +71 -0
  296. package/dist/components/core/radio-group.js +2 -0
  297. package/dist/components/core/radio-group.js.map +1 -0
  298. package/dist/components/core/select.cjs +2 -0
  299. package/dist/components/core/select.cjs.map +1 -0
  300. package/dist/components/core/select.d.cts +41 -0
  301. package/dist/components/core/select.d.ts +41 -0
  302. package/dist/components/core/select.js +2 -0
  303. package/dist/components/core/select.js.map +1 -0
  304. package/dist/components/core/separator.cjs +2 -0
  305. package/dist/components/core/separator.cjs.map +1 -0
  306. package/dist/components/core/separator.d.cts +16 -0
  307. package/dist/components/core/separator.d.ts +16 -0
  308. package/dist/components/core/separator.js +2 -0
  309. package/dist/components/core/separator.js.map +1 -0
  310. package/dist/components/core/skeleton.cjs +2 -0
  311. package/dist/components/core/skeleton.cjs.map +1 -0
  312. package/dist/components/core/skeleton.d.cts +46 -0
  313. package/dist/components/core/skeleton.d.ts +46 -0
  314. package/dist/components/core/skeleton.js +2 -0
  315. package/dist/components/core/skeleton.js.map +1 -0
  316. package/dist/components/core/switch.cjs +2 -0
  317. package/dist/components/core/switch.cjs.map +1 -0
  318. package/dist/components/core/switch.d.cts +21 -0
  319. package/dist/components/core/switch.d.ts +21 -0
  320. package/dist/components/core/switch.js +2 -0
  321. package/dist/components/core/switch.js.map +1 -0
  322. package/dist/components/core/table.cjs +2 -0
  323. package/dist/components/core/table.cjs.map +1 -0
  324. package/dist/components/core/table.d.cts +84 -0
  325. package/dist/components/core/table.d.ts +84 -0
  326. package/dist/components/core/table.js +2 -0
  327. package/dist/components/core/table.js.map +1 -0
  328. package/dist/components/core/tabs.cjs +2 -0
  329. package/dist/components/core/tabs.cjs.map +1 -0
  330. package/dist/components/core/tabs.d.cts +28 -0
  331. package/dist/components/core/tabs.d.ts +28 -0
  332. package/dist/components/core/tabs.js +2 -0
  333. package/dist/components/core/tabs.js.map +1 -0
  334. package/dist/components/core/textarea.cjs +2 -0
  335. package/dist/components/core/textarea.cjs.map +1 -0
  336. package/dist/components/core/textarea.d.cts +18 -0
  337. package/dist/components/core/textarea.d.ts +18 -0
  338. package/dist/components/core/textarea.js +2 -0
  339. package/dist/components/core/textarea.js.map +1 -0
  340. package/dist/components/core/toast.cjs +2 -0
  341. package/dist/components/core/toast.cjs.map +1 -0
  342. package/dist/components/core/toast.d.cts +50 -0
  343. package/dist/components/core/toast.d.ts +50 -0
  344. package/dist/components/core/toast.js +2 -0
  345. package/dist/components/core/toast.js.map +1 -0
  346. package/dist/components/core/tooltip.cjs +2 -0
  347. package/dist/components/core/tooltip.cjs.map +1 -0
  348. package/dist/components/core/tooltip.d.cts +68 -0
  349. package/dist/components/core/tooltip.d.ts +68 -0
  350. package/dist/components/core/tooltip.js +2 -0
  351. package/dist/components/core/tooltip.js.map +1 -0
  352. package/dist/components/marketing/features.cjs +2 -0
  353. package/dist/components/marketing/features.cjs.map +1 -0
  354. package/dist/components/marketing/features.d.cts +35 -0
  355. package/dist/components/marketing/features.d.ts +35 -0
  356. package/dist/components/marketing/features.js +2 -0
  357. package/dist/components/marketing/features.js.map +1 -0
  358. package/dist/components/marketing/gallery.cjs +2 -0
  359. package/dist/components/marketing/gallery.cjs.map +1 -0
  360. package/dist/components/marketing/gallery.d.cts +38 -0
  361. package/dist/components/marketing/gallery.d.ts +38 -0
  362. package/dist/components/marketing/gallery.js +2 -0
  363. package/dist/components/marketing/gallery.js.map +1 -0
  364. package/dist/components/marketing/hero.cjs +2 -0
  365. package/dist/components/marketing/hero.cjs.map +1 -0
  366. package/dist/components/marketing/hero.d.cts +31 -0
  367. package/dist/components/marketing/hero.d.ts +31 -0
  368. package/dist/components/marketing/hero.js +2 -0
  369. package/dist/components/marketing/hero.js.map +1 -0
  370. package/dist/components/marketing/logo-wall.cjs +2 -0
  371. package/dist/components/marketing/logo-wall.cjs.map +1 -0
  372. package/dist/components/marketing/logo-wall.d.cts +44 -0
  373. package/dist/components/marketing/logo-wall.d.ts +44 -0
  374. package/dist/components/marketing/logo-wall.js +2 -0
  375. package/dist/components/marketing/logo-wall.js.map +1 -0
  376. package/dist/components/marketing/pricing.cjs +2 -0
  377. package/dist/components/marketing/pricing.cjs.map +1 -0
  378. package/dist/components/marketing/pricing.d.cts +52 -0
  379. package/dist/components/marketing/pricing.d.ts +52 -0
  380. package/dist/components/marketing/pricing.js +2 -0
  381. package/dist/components/marketing/pricing.js.map +1 -0
  382. package/dist/components/marketing/testimonials.cjs +2 -0
  383. package/dist/components/marketing/testimonials.cjs.map +1 -0
  384. package/dist/components/marketing/testimonials.d.cts +34 -0
  385. package/dist/components/marketing/testimonials.d.ts +34 -0
  386. package/dist/components/marketing/testimonials.js +2 -0
  387. package/dist/components/marketing/testimonials.js.map +1 -0
  388. package/dist/index.cjs +2 -0
  389. package/dist/index.cjs.map +1 -0
  390. package/dist/index.css +2 -0
  391. package/dist/index.css.map +1 -0
  392. package/dist/index.d.cts +125 -0
  393. package/dist/index.d.ts +125 -0
  394. package/dist/index.js +2 -0
  395. package/dist/index.js.map +1 -0
  396. package/dist/lib/lazy.cjs +2 -0
  397. package/dist/lib/lazy.cjs.map +1 -0
  398. package/dist/lib/lazy.d.cts +43 -0
  399. package/dist/lib/lazy.d.ts +43 -0
  400. package/dist/lib/lazy.js +2 -0
  401. package/dist/lib/lazy.js.map +1 -0
  402. package/dist/lib/performance.cjs +2 -0
  403. package/dist/lib/performance.cjs.map +1 -0
  404. package/dist/lib/performance.d.cts +52 -0
  405. package/dist/lib/performance.d.ts +52 -0
  406. package/dist/lib/performance.js +2 -0
  407. package/dist/lib/performance.js.map +1 -0
  408. package/dist/tailwind.css +29 -0
  409. package/dist/themes/__tests__/themes.test.ts +46 -0
  410. package/dist/themes/index.ts +50 -0
  411. package/dist/themes/lv-426.css +342 -0
  412. package/dist/themes/mother.css +280 -0
  413. package/dist/themes/nostromo.css +315 -0
  414. package/dist/themes/sulaco.css +404 -0
  415. package/dist/themes/utils.ts +105 -0
  416. package/dist/tokens.css +212 -0
  417. package/package.json +321 -0
package/dist/base.css ADDED
@@ -0,0 +1,312 @@
1
+ /* Nostromo UI - Base Styles */
2
+
3
+ /* CSS Reset */
4
+ *,
5
+ *::before,
6
+ *::after {
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ * {
11
+ margin: 0;
12
+ }
13
+
14
+ html,
15
+ body {
16
+ height: 100%;
17
+ }
18
+
19
+ body {
20
+ line-height: 1.5;
21
+ -webkit-font-smoothing: antialiased;
22
+ -moz-osx-font-smoothing: grayscale;
23
+ }
24
+
25
+ img,
26
+ picture,
27
+ video,
28
+ canvas,
29
+ svg {
30
+ display: block;
31
+ max-width: 100%;
32
+ }
33
+
34
+ input,
35
+ button,
36
+ textarea,
37
+ select {
38
+ font: inherit;
39
+ }
40
+
41
+ p,
42
+ h1,
43
+ h2,
44
+ h3,
45
+ h4,
46
+ h5,
47
+ h6 {
48
+ overflow-wrap: break-word;
49
+ }
50
+
51
+ #root,
52
+ #__next {
53
+ isolation: isolate;
54
+ }
55
+
56
+ /* Base Typography */
57
+ body {
58
+ font-family: var(--nostromo-font-body);
59
+ font-size: var(--nostromo-text-base);
60
+ line-height: var(--nostromo-leading-normal);
61
+ color: hsl(var(--nostromo-color-neutral-900));
62
+ background-color: hsl(var(--nostromo-color-neutral-50));
63
+ }
64
+
65
+ h1,
66
+ h2,
67
+ h3,
68
+ h4,
69
+ h5,
70
+ h6 {
71
+ font-family: var(--nostromo-font-heading);
72
+ font-weight: var(--nostromo-font-semibold);
73
+ line-height: var(--nostromo-leading-tight);
74
+ color: hsl(var(--nostromo-color-neutral-900));
75
+ }
76
+
77
+ h1 {
78
+ font-size: var(--nostromo-text-4xl);
79
+ }
80
+
81
+ h2 {
82
+ font-size: var(--nostromo-text-3xl);
83
+ }
84
+
85
+ h3 {
86
+ font-size: var(--nostromo-text-2xl);
87
+ }
88
+
89
+ h4 {
90
+ font-size: var(--nostromo-text-xl);
91
+ }
92
+
93
+ h5 {
94
+ font-size: var(--nostromo-text-lg);
95
+ }
96
+
97
+ h6 {
98
+ font-size: var(--nostromo-text-base);
99
+ }
100
+
101
+ /* Focus Styles */
102
+ :focus-visible {
103
+ outline: 2px solid hsl(var(--nostromo-color-brand-500));
104
+ outline-offset: 2px;
105
+ }
106
+
107
+ /* Selection Styles */
108
+ ::selection {
109
+ background-color: hsl(var(--nostromo-color-brand-100));
110
+ color: hsl(var(--nostromo-color-brand-900));
111
+ }
112
+
113
+ /* Scrollbar Styles */
114
+ ::-webkit-scrollbar {
115
+ width: 8px;
116
+ height: 8px;
117
+ }
118
+
119
+ ::-webkit-scrollbar-track {
120
+ background: hsl(var(--nostromo-color-neutral-100));
121
+ }
122
+
123
+ ::-webkit-scrollbar-thumb {
124
+ background: hsl(var(--nostromo-color-neutral-300));
125
+ border-radius: var(--nostromo-radius-md);
126
+ }
127
+
128
+ ::-webkit-scrollbar-thumb:hover {
129
+ background: hsl(var(--nostromo-color-neutral-400));
130
+ }
131
+
132
+ /* Utility Classes */
133
+ .sr-only {
134
+ position: absolute;
135
+ width: 1px;
136
+ height: 1px;
137
+ padding: 0;
138
+ margin: -1px;
139
+ overflow: hidden;
140
+ clip: rect(0, 0, 0, 0);
141
+ white-space: nowrap;
142
+ border: 0;
143
+ }
144
+
145
+ .not-sr-only {
146
+ position: static;
147
+ width: auto;
148
+ height: auto;
149
+ padding: 0;
150
+ margin: 0;
151
+ overflow: visible;
152
+ clip: auto;
153
+ white-space: normal;
154
+ }
155
+
156
+ /* Component Base Styles */
157
+ .btn {
158
+ display: inline-flex;
159
+ align-items: center;
160
+ justify-content: center;
161
+ border-radius: var(--nostromo-radius-md);
162
+ font-weight: var(--nostromo-font-medium);
163
+ transition: all 0.2s ease-in-out;
164
+ cursor: pointer;
165
+ border: none;
166
+ text-decoration: none;
167
+ position: relative;
168
+ overflow: hidden;
169
+ }
170
+
171
+ .btn:focus-visible {
172
+ outline: 2px solid hsl(var(--nostromo-color-brand-500));
173
+ outline-offset: 2px;
174
+ }
175
+
176
+ .btn:disabled {
177
+ cursor: not-allowed;
178
+ opacity: 0.5;
179
+ }
180
+
181
+ /* Button Variants */
182
+ .btn-primary {
183
+ background-color: hsl(var(--nostromo-color-brand-500));
184
+ color: hsl(var(--nostromo-color-neutral-50));
185
+ }
186
+
187
+ .btn-primary:hover:not(:disabled) {
188
+ background-color: hsl(var(--nostromo-color-brand-600));
189
+ }
190
+
191
+ .btn-secondary {
192
+ background-color: hsl(var(--nostromo-color-neutral-200));
193
+ color: hsl(var(--nostromo-color-neutral-900));
194
+ }
195
+
196
+ .btn-secondary:hover:not(:disabled) {
197
+ background-color: hsl(var(--nostromo-color-neutral-300));
198
+ }
199
+
200
+ .btn-ghost {
201
+ background-color: transparent;
202
+ color: hsl(var(--nostromo-color-neutral-900));
203
+ }
204
+
205
+ .btn-ghost:hover:not(:disabled) {
206
+ background-color: hsl(var(--nostromo-color-neutral-100));
207
+ }
208
+
209
+ .btn-destructive {
210
+ background-color: hsl(var(--nostromo-color-error-500));
211
+ color: hsl(var(--nostromo-color-neutral-50));
212
+ }
213
+
214
+ .btn-destructive:hover:not(:disabled) {
215
+ background-color: hsl(var(--nostromo-color-error-600));
216
+ }
217
+
218
+ /* Button Sizes */
219
+ .btn-sm {
220
+ height: 2rem;
221
+ padding: 0 0.75rem;
222
+ font-size: var(--nostromo-text-sm);
223
+ }
224
+
225
+ .btn-md {
226
+ height: 2.5rem;
227
+ padding: 0 1rem;
228
+ font-size: var(--nostromo-text-base);
229
+ }
230
+
231
+ .btn-lg {
232
+ height: 3rem;
233
+ padding: 0 1.5rem;
234
+ font-size: var(--nostromo-text-lg);
235
+ }
236
+
237
+ /* Hero Component Base */
238
+ .hero {
239
+ text-align: center;
240
+ padding: var(--nostromo-spacing-3xl) var(--nostromo-spacing-lg);
241
+ }
242
+
243
+ .hero-title {
244
+ font-size: var(--nostromo-text-5xl);
245
+ font-weight: var(--nostromo-font-bold);
246
+ margin-bottom: var(--nostromo-spacing-lg);
247
+ color: hsl(var(--nostromo-color-neutral-900));
248
+ }
249
+
250
+ .hero-subtitle {
251
+ font-size: var(--nostromo-text-xl);
252
+ color: hsl(var(--nostromo-color-neutral-600));
253
+ margin-bottom: var(--nostromo-spacing-2xl);
254
+ max-width: 600px;
255
+ margin-left: auto;
256
+ margin-right: auto;
257
+ }
258
+
259
+ .hero-cta {
260
+ display: flex;
261
+ gap: var(--nostromo-spacing-md);
262
+ justify-content: center;
263
+ flex-wrap: wrap;
264
+ }
265
+
266
+ /* Dark Mode Support */
267
+ @media (prefers-color-scheme: dark) {
268
+ body {
269
+ color: hsl(var(--nostromo-color-neutral-50));
270
+ background-color: hsl(var(--nostromo-color-neutral-900));
271
+ }
272
+
273
+ h1,
274
+ h2,
275
+ h3,
276
+ h4,
277
+ h5,
278
+ h6 {
279
+ color: hsl(var(--nostromo-color-neutral-50));
280
+ }
281
+
282
+ .hero-title {
283
+ color: hsl(var(--nostromo-color-neutral-50));
284
+ }
285
+
286
+ .hero-subtitle {
287
+ color: hsl(var(--nostromo-color-neutral-400));
288
+ }
289
+ }
290
+
291
+ /* Manual Dark Mode */
292
+ [data-color-scheme="dark"] {
293
+ color: hsl(var(--nostromo-color-neutral-50));
294
+ background-color: hsl(var(--nostromo-color-neutral-900));
295
+ }
296
+
297
+ [data-color-scheme="dark"] h1,
298
+ [data-color-scheme="dark"] h2,
299
+ [data-color-scheme="dark"] h3,
300
+ [data-color-scheme="dark"] h4,
301
+ [data-color-scheme="dark"] h5,
302
+ [data-color-scheme="dark"] h6 {
303
+ color: hsl(var(--nostromo-color-neutral-50));
304
+ }
305
+
306
+ [data-color-scheme="dark"] .hero-title {
307
+ color: hsl(var(--nostromo-color-neutral-50));
308
+ }
309
+
310
+ [data-color-scheme="dark"] .hero-subtitle {
311
+ color: hsl(var(--nostromo-color-neutral-400));
312
+ }
@@ -0,0 +1,2 @@
1
+ 'use strict';var 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 f=classVarianceAuthority.cva("relative overflow-hidden bg-gradient-to-br from-background to-muted/20",{variants:{size:{sm:"py-16 md:py-20",md:"py-20 md:py-28",lg:"py-24 md:py-32",xl:"py-32 md:py-40"},variant:{default:"text-foreground",muted:"text-muted-foreground",accent:"text-accent-foreground bg-accent/10"}},defaultVariants:{size:"md",variant:"default"}}),u=classVarianceAuthority.cva("container mx-auto px-4 text-center",{variants:{align:{left:"text-left",center:"text-center",right:"text-right"}},defaultVariants:{align:"center"}}),V=classVarianceAuthority.cva("font-bold tracking-tight",{variants:{size:{sm:"text-3xl md:text-4xl lg:text-5xl",md:"text-4xl md:text-5xl lg:text-6xl",lg:"text-5xl md:text-6xl lg:text-7xl",xl:"text-6xl md:text-7xl lg:text-8xl"}},defaultVariants:{size:"md"}}),b=classVarianceAuthority.cva("mt-4 text-lg md:text-xl text-muted-foreground max-w-2xl mx-auto",{variants:{size:{sm:"text-base md:text-lg",md:"text-lg md:text-xl",lg:"text-xl md:text-2xl"}},defaultVariants:{size:"md"}}),z=({title:l,subtitle:r,cta:i,className:o,size:x,variant:d,contentAlign:m,titleSize:g,subtitleSize:c,backgroundImage:n,overlay:s=false,...p})=>t__default.default.createElement("section",{className:chunkITRGJNWL_cjs.a(f({size:x,variant:d}),o),style:n?{backgroundImage:`url(${n})`}:void 0,...p},s&&t__default.default.createElement("div",{className:"absolute inset-0 bg-background/80 backdrop-blur-sm"}),t__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(u({align:m}),s&&"relative z-10")},t__default.default.createElement("h1",{className:chunkITRGJNWL_cjs.a(V({size:g}))},l),r&&t__default.default.createElement("p",{className:chunkITRGJNWL_cjs.a(b({size:c}))},r),i&&t__default.default.createElement("div",{className:"mt-8 flex flex-col sm:flex-row gap-4 justify-center items-center"},i)));exports.a=z;//# sourceMappingURL=chunk-2DNQXAMB.cjs.map
2
+ //# sourceMappingURL=chunk-2DNQXAMB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/hero.tsx"],"names":["heroVariants","cva","heroContentVariants","heroTitleVariants","heroSubtitleVariants","Hero","title","subtitle","cta","className","size","variant","contentAlign","titleSize","subtitleSize","backgroundImage","overlay","props","React","cn"],"mappings":"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","file":"chunk-2DNQXAMB.cjs","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst heroVariants = cva(\n 'relative overflow-hidden bg-gradient-to-br from-background to-muted/20',\n {\n variants: {\n size: {\n sm: 'py-16 md:py-20',\n md: 'py-20 md:py-28',\n lg: 'py-24 md:py-32',\n xl: 'py-32 md:py-40',\n },\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n accent: 'text-accent-foreground bg-accent/10',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n },\n }\n);\n\nconst heroContentVariants = cva(\n 'container mx-auto px-4 text-center',\n {\n variants: {\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n align: 'center',\n },\n }\n);\n\nconst heroTitleVariants = cva(\n 'font-bold tracking-tight',\n {\n variants: {\n size: {\n sm: 'text-3xl md:text-4xl lg:text-5xl',\n md: 'text-4xl md:text-5xl lg:text-6xl',\n lg: 'text-5xl md:text-6xl lg:text-7xl',\n xl: 'text-6xl md:text-7xl lg:text-8xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nconst heroSubtitleVariants = cva(\n 'mt-4 text-lg md:text-xl text-muted-foreground max-w-2xl mx-auto',\n {\n variants: {\n size: {\n sm: 'text-base md:text-lg',\n md: 'text-lg md:text-xl',\n lg: 'text-xl md:text-2xl',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface HeroProps extends VariantProps<typeof heroVariants> {\n title: string;\n subtitle?: string;\n cta?: React.ReactNode;\n className?: string;\n contentAlign?: VariantProps<typeof heroContentVariants>['align'];\n titleSize?: VariantProps<typeof heroTitleVariants>['size'];\n subtitleSize?: VariantProps<typeof heroSubtitleVariants>['size'];\n backgroundImage?: string;\n overlay?: boolean;\n}\n\nexport const Hero: React.FC<HeroProps> = ({ \n title, \n subtitle, \n cta, \n className,\n size,\n variant,\n contentAlign,\n titleSize,\n subtitleSize,\n backgroundImage,\n overlay = false,\n ...props \n}) => {\n return (\n <section \n className={cn(heroVariants({ size, variant }), className)}\n style={backgroundImage ? { backgroundImage: `url(${backgroundImage})` } : undefined}\n {...props}\n >\n {overlay && (\n <div className=\"absolute inset-0 bg-background/80 backdrop-blur-sm\" />\n )}\n <div className={cn(heroContentVariants({ align: contentAlign }), overlay && 'relative z-10')}>\n <h1 className={cn(heroTitleVariants({ size: titleSize }))}>\n {title}\n </h1>\n {subtitle && (\n <p className={cn(heroSubtitleVariants({ size: subtitleSize }))}>\n {subtitle}\n </p>\n )}\n {cta && (\n <div className=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center items-center\">\n {cta}\n </div>\n )}\n </div>\n </section>\n );\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import {b}from'./chunk-AVTJE2O2.js';import {a}from'./chunk-AC2JBXHQ.js';import e,{useState,useCallback}from'react';import {cva}from'class-variance-authority';var S=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=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=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$1,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]=useState(null),[i,n]=useState(-1),f=useCallback((t,s)=>{g&&(r(t),n(s)),v?.(t,s);},[g,v]),d=useCallback(()=>{r(null),n(-1);},[]),b$1=useCallback(()=>{if(i>0){let t=i-1;r(a$1[t]||null),n(t);}},[i,a$1]),p=useCallback(()=>{if(i<a$1.length-1){let t=i+1;r(a$1[t]||null),n(t);}},[i,a$1]),G=useCallback(t=>{t.key==="Escape"?d():t.key==="ArrowLeft"?b$1():t.key==="ArrowRight"&&p();},[d,b$1,p]);return e.createElement(e.Fragment,null,e.createElement("div",{className:a(S({columns:w,spacing:N}),y),...P},a$1.map((t,s)=>e.createElement("div",{key:t.id||s,className: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.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.createElement("div",{className:"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end"},e.createElement("div",{className:"p-4 text-white"},t.title&&e.createElement("h3",{className:"font-semibold text-sm sm:text-base"},t.title),t.description&&e.createElement("p",{className:"text-xs sm:text-sm text-white/80 mt-1"},t.description)))))),l&&g&&e.createElement("div",{className:a(A({animation:I})),onClick:d,onKeyDown:G,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":"lightbox-title"},e.createElement("div",{className:"relative max-w-4xl max-h-[90vh] mx-4",onClick:t=>t.stopPropagation()},e.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.createElement("div",{className:"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg"},l.title&&e.createElement("h3",{className:"font-semibold text-lg mb-2"},l.title),l.description&&e.createElement("p",{className:"text-sm text-white/80"},l.description)),a$1.length>1&&e.createElement(e.Fragment,null,i>0&&e.createElement(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$1,"aria-label":"Previous image"},"\u2190"),i<a$1.length-1&&e.createElement(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.createElement(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$1.length>1&&e.createElement("div",{className:"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm"},i+1," / ",a$1.length))))},F=B;export{B as a,F as b};//# sourceMappingURL=chunk-2JQROMCM.js.map
2
+ //# sourceMappingURL=chunk-2JQROMCM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/gallery.tsx"],"names":["galleryVariants","cva","galleryItemVariants","lightboxVariants","Gallery","images","className","itemClassName","columns","spacing","showLightbox","lightboxAnimation","onImageClick","itemHover","itemAspectRatio","showThumbnails","_thumbnailSize","props","selectedImage","setSelectedImage","useState","selectedIndex","setSelectedIndex","handleImageClick","useCallback","image","index","handleCloseLightbox","handlePrevious","newIndex","handleNext","handleKeyDown","e","React","cn","Button","gallery_default"],"mappings":"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","file":"chunk-2JQROMCM.js","sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../components/core/button';\n\nconst galleryVariants = cva(\n 'grid gap-4',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6',\n },\n spacing: {\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n },\n defaultVariants: {\n columns: 3,\n spacing: 'md',\n },\n }\n);\n\nconst galleryItemVariants = cva(\n 'relative overflow-hidden rounded-lg bg-muted/50 transition-all duration-300 hover:scale-105 hover:shadow-lg',\n {\n variants: {\n aspectRatio: {\n square: 'aspect-square',\n video: 'aspect-video',\n portrait: 'aspect-[3/4]',\n landscape: 'aspect-[4/3]',\n wide: 'aspect-[16/9]',\n },\n hover: {\n none: '',\n scale: 'hover:scale-105',\n zoom: 'hover:scale-110',\n lift: 'hover:-translate-y-2',\n },\n },\n defaultVariants: {\n aspectRatio: 'square',\n hover: 'scale',\n },\n }\n);\n\nconst lightboxVariants = cva(\n 'fixed inset-0 z-50 flex items-center justify-center bg-black/90 backdrop-blur-sm',\n {\n variants: {\n animation: {\n fade: 'animate-in fade-in duration-300',\n slide: 'animate-in slide-in-from-bottom duration-300',\n zoom: 'animate-in zoom-in duration-300',\n },\n },\n defaultVariants: {\n animation: 'fade',\n },\n }\n);\n\nexport interface GalleryImage {\n id: string;\n src: string;\n alt: string;\n title?: string;\n description?: string;\n thumbnail?: string;\n}\n\nexport interface GalleryProps extends VariantProps<typeof galleryVariants> {\n images: GalleryImage[];\n className?: string;\n itemClassName?: string;\n showLightbox?: boolean;\n lightboxAnimation?: VariantProps<typeof lightboxVariants>['animation'];\n onImageClick?: (image: GalleryImage, index: number) => void;\n itemHover?: VariantProps<typeof galleryItemVariants>['hover'];\n itemAspectRatio?: VariantProps<typeof galleryItemVariants>['aspectRatio'];\n showThumbnails?: boolean;\n thumbnailSize?: 'sm' | 'md' | 'lg';\n}\n\nexport const Gallery: React.FC<GalleryProps> = ({\n images,\n className,\n itemClassName,\n columns = 3,\n spacing = 'md',\n showLightbox = true,\n lightboxAnimation = 'fade',\n onImageClick,\n itemHover = 'scale',\n itemAspectRatio = 'square',\n showThumbnails = false,\n thumbnailSize: _thumbnailSize = 'md',\n ...props\n}) => {\n const [selectedImage, setSelectedImage] = useState<GalleryImage | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number>(-1);\n\n const handleImageClick = useCallback((image: GalleryImage, index: number) => {\n if (showLightbox) {\n setSelectedImage(image);\n setSelectedIndex(index);\n }\n onImageClick?.(image, index);\n }, [showLightbox, onImageClick]);\n\n const handleCloseLightbox = useCallback(() => {\n setSelectedImage(null);\n setSelectedIndex(-1);\n }, []);\n\n const handlePrevious = useCallback(() => {\n if (selectedIndex > 0) {\n const newIndex = selectedIndex - 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleNext = useCallback(() => {\n if (selectedIndex < images.length - 1) {\n const newIndex = selectedIndex + 1;\n setSelectedImage(images[newIndex] || null);\n setSelectedIndex(newIndex);\n }\n }, [selectedIndex, images]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n handleCloseLightbox();\n } else if (e.key === 'ArrowLeft') {\n handlePrevious();\n } else if (e.key === 'ArrowRight') {\n handleNext();\n }\n }, [handleCloseLightbox, handlePrevious, handleNext]);\n\n return (\n <>\n <div \n className={cn(galleryVariants({ columns, spacing }), className)}\n {...props}\n >\n {images.map((image, index) => (\n <div\n key={image.id || index}\n className={cn(\n galleryItemVariants({ \n aspectRatio: itemAspectRatio, \n hover: itemHover \n }),\n itemClassName\n )}\n role=\"button\"\n tabIndex={0}\n onClick={() => handleImageClick(image, index)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleImageClick(image, index);\n }\n }}\n aria-label={`View image ${index + 1}: ${image.alt}`}\n >\n <img\n src={showThumbnails && image.thumbnail ? image.thumbnail : image.src}\n alt={image.alt}\n className=\"w-full h-full object-cover\"\n loading=\"lazy\"\n />\n {(image.title || image.description) && (\n <div className=\"absolute inset-0 bg-black/50 opacity-0 hover:opacity-100 transition-opacity duration-300 flex items-end\">\n <div className=\"p-4 text-white\">\n {image.title && (\n <h3 className=\"font-semibold text-sm sm:text-base\">\n {image.title}\n </h3>\n )}\n {image.description && (\n <p className=\"text-xs sm:text-sm text-white/80 mt-1\">\n {image.description}\n </p>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n\n {selectedImage && showLightbox && (\n <div\n className={cn(lightboxVariants({ animation: lightboxAnimation }))}\n onClick={handleCloseLightbox}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"lightbox-title\"\n >\n <div \n className=\"relative max-w-4xl max-h-[90vh] mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImage.src}\n alt={selectedImage.alt}\n className=\"max-w-full max-h-full object-contain rounded-lg\"\n id=\"lightbox-title\"\n />\n \n {(selectedImage.title || selectedImage.description) && (\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/80 text-white p-4 rounded-b-lg\">\n {selectedImage.title && (\n <h3 className=\"font-semibold text-lg mb-2\">\n {selectedImage.title}\n </h3>\n )}\n {selectedImage.description && (\n <p className=\"text-sm text-white/80\">\n {selectedImage.description}\n </p>\n )}\n </div>\n )}\n\n {/* Navigation buttons */}\n {images.length > 1 && (\n <>\n {selectedIndex > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute left-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handlePrevious}\n aria-label=\"Previous image\"\n >\n ←\n </Button>\n )}\n {selectedIndex < images.length - 1 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute right-4 top-1/2 -translate-y-1/2 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleNext}\n aria-label=\"Next image\"\n >\n →\n </Button>\n )}\n </>\n )}\n\n {/* Close button */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"absolute top-4 right-4 bg-black/50 hover:bg-black/70 text-white\"\n onClick={handleCloseLightbox}\n aria-label=\"Close lightbox\"\n >\n ✕\n </Button>\n\n {/* Image counter */}\n {images.length > 1 && (\n <div className=\"absolute top-4 left-4 bg-black/50 text-white px-3 py-1 rounded-full text-sm\">\n {selectedIndex + 1} / {images.length}\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default Gallery;\n"]}
@@ -0,0 +1,2 @@
1
+ import*as n from'react';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.useRef(0),u=n.useId(),m=n.useRef(`${r}-render-${u}`);return n.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.forwardRef((a,i)=>{let c=o||r.displayName||r.name||"Unknown";p(c,e);let u=n.useCallback(m=>{typeof i=="function"?i(m):i&&"current"in i&&(i.current=m);},[i]);return n.createElement(r,{...a,ref:u})});return t.displayName=`withPerformanceMonitoring(${r.displayName||r.name})`,t}function T(){let[r,o]=n.useState(null);return n.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})}};export{p as a,w as b,T as c,b as d};//# sourceMappingURL=chunk-3BNGK67W.js.map
2
+ //# sourceMappingURL=chunk-3BNGK67W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/performance.ts"],"names":["usePerformanceMonitor","componentName","options","enabled","logToConsole","onMetric","threshold","renderCount","instanceId","markName","currentMark","measure","renderTime","metric","withPerformanceMonitoring","Component","WrappedComponent","props","ref","name","refCallback","instance","useMemoryMonitor","memoryInfo","setMemoryInfo","updateMemoryInfo","memory","interval","performanceUtils","func","wait","timeout","args","limit","inThrottle","fn","cache","key","result"],"mappings":"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","file":"chunk-3BNGK67W.js","sourcesContent":["import * as React from \"react\";\n\ninterface PerformanceMetrics {\n renderTime: number;\n componentName: string;\n timestamp: number;\n}\n\ninterface PerformanceOptions {\n enabled?: boolean;\n logToConsole?: boolean;\n onMetric?: (metric: PerformanceMetrics) => void;\n threshold?: number; // Log only if render time exceeds threshold (ms)\n}\n\n/**\n * Hook for monitoring component render performance\n * Measures actual render/commit time using React's performance API\n */\nexport function usePerformanceMonitor(\n componentName: string,\n options: PerformanceOptions = {},\n) {\n const {\n enabled = typeof window !== \"undefined\" &&\n window.location?.hostname === \"localhost\",\n logToConsole = true,\n onMetric,\n threshold = 0,\n } = options;\n\n const renderCount = React.useRef<number>(0);\n // The mark name only needs to be unique per mounted instance. useId gives\n // that without calling Date.now() during render, which is impure and flagged\n // by react-hooks 7.1+ (components must be idempotent).\n const instanceId = React.useId();\n const markName = React.useRef<string>(\n `${componentName}-render-${instanceId}`,\n );\n\n React.useEffect(() => {\n if (!enabled || typeof window === \"undefined\" || !window.performance)\n return;\n\n renderCount.current += 1;\n const currentMark = `${markName.current}-${renderCount.current}`;\n\n // Mark start of render\n performance.mark(`${currentMark}-start`);\n\n return () => {\n // Mark end of render\n performance.mark(`${currentMark}-end`);\n\n try {\n // Measure the time between marks\n performance.measure(\n `${currentMark}-measure`,\n `${currentMark}-start`,\n `${currentMark}-end`,\n );\n\n const measure = performance.getEntriesByName(\n `${currentMark}-measure`,\n )[0];\n const renderTime = measure ? measure.duration : 0;\n\n // Clean up marks and measures\n performance.clearMarks(`${currentMark}-start`);\n performance.clearMarks(`${currentMark}-end`);\n performance.clearMeasures(`${currentMark}-measure`);\n\n if (renderTime > threshold) {\n const metric: PerformanceMetrics = {\n renderTime,\n componentName,\n timestamp: Date.now(),\n };\n\n if (logToConsole) {\n console.log(\n `[Performance] ${componentName}: ${renderTime.toFixed(2)}ms (render #${renderCount.current})`,\n );\n }\n\n onMetric?.(metric);\n }\n } catch (error) {\n // Silently fail if performance API is not available\n if (logToConsole && enabled) {\n console.warn(\n `[Performance] Failed to measure ${componentName}:`,\n error,\n );\n }\n }\n };\n });\n\n return {\n // eslint-disable-next-line react-hooks/refs -- informational only: the count is for dev logging, and being one render behind is acceptable there\n renderCount: renderCount.current,\n isMonitoring: enabled,\n };\n}\n\n/**\n * Higher-order component for performance monitoring\n */\nexport function withPerformanceMonitoring<P extends object>(\n Component: React.ComponentType<P>,\n componentName?: string,\n options?: PerformanceOptions,\n) {\n const WrappedComponent = React.forwardRef<unknown, P>((props, ref) => {\n const name =\n componentName || Component.displayName || Component.name || \"Unknown\";\n usePerformanceMonitor(name, options);\n\n // Use callback ref to avoid accessing ref.current during render\n const refCallback = React.useCallback(\n (instance: unknown) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref && \"current\" in ref) {\n (ref as React.MutableRefObject<unknown>).current = instance;\n }\n },\n [ref],\n );\n\n // eslint-disable-next-line react-hooks/refs -- the ref is forwarded as a prop, not dereferenced during render\n return React.createElement(Component, {\n ...(props as P),\n ref: refCallback,\n } as P & { ref?: React.Ref<unknown> });\n });\n\n WrappedComponent.displayName = `withPerformanceMonitoring(${Component.displayName || Component.name})`;\n\n return WrappedComponent;\n}\n\n/**\n * Hook for monitoring memory usage (development only)\n */\nexport function useMemoryMonitor() {\n const [memoryInfo, setMemoryInfo] = React.useState<{\n usedJSHeapSize: number;\n totalJSHeapSize: number;\n jsHeapSizeLimit: number;\n } | null>(null);\n\n React.useEffect(() => {\n if (\n typeof window === \"undefined\" ||\n window.location?.hostname !== \"localhost\"\n )\n return;\n if (typeof window === \"undefined\" || !(\"memory\" in performance)) return;\n\n const updateMemoryInfo = () => {\n const memory = (\n performance as Performance & {\n memory?: {\n usedJSHeapSize: number;\n totalJSHeapSize: number;\n jsHeapSizeLimit: number;\n };\n }\n ).memory;\n if (memory) {\n setMemoryInfo({\n usedJSHeapSize: memory.usedJSHeapSize,\n totalJSHeapSize: memory.totalJSHeapSize,\n jsHeapSizeLimit: memory.jsHeapSizeLimit,\n });\n }\n };\n\n updateMemoryInfo();\n const interval = setInterval(updateMemoryInfo, 5000);\n\n return () => clearInterval(interval);\n }, []);\n\n return memoryInfo;\n}\n\n/**\n * Performance optimization utilities\n */\nexport const performanceUtils = {\n /**\n * Debounce function for performance optimization\n */\n debounce: <T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number,\n ): ((...args: Parameters<T>) => void) => {\n let timeout: ReturnType<typeof setTimeout>;\n return (...args: Parameters<T>) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func(...args), wait);\n };\n },\n\n /**\n * Throttle function for performance optimization\n */\n throttle: <T extends (...args: unknown[]) => unknown>(\n func: T,\n limit: number,\n ): ((...args: Parameters<T>) => void) => {\n let inThrottle: boolean;\n return (...args: Parameters<T>) => {\n if (!inThrottle) {\n func(...args);\n inThrottle = true;\n setTimeout(() => (inThrottle = false), limit);\n }\n };\n },\n\n /**\n * Memoize expensive calculations\n */\n memoize: <T extends (...args: unknown[]) => unknown>(fn: T): T => {\n const cache = new Map();\n return ((...args: Parameters<T>) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n },\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var 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 k=classVarianceAuthority.cva("grid gap-8 items-center",{variants:{columns:{2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-2 sm:grid-cols-3 lg:grid-cols-4",5:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5",6:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6"},spacing:{sm:"gap-4",md:"gap-6",lg:"gap-8",xl:"gap-12"},alignment:{center:"justify-items-center",start:"justify-items-start",end:"justify-items-end"}},defaultVariants:{columns:4,spacing:"md",alignment:"center"}}),L=classVarianceAuthority.cva("flex items-center justify-center p-4 rounded-lg transition-all duration-300",{variants:{variant:{default:"bg-muted/30 hover:bg-muted/50",ghost:"hover:bg-muted/30",outline:"border border-border hover:border-border/80",filled:"bg-muted hover:bg-muted/80"},hover:{none:"",scale:"hover:scale-105",lift:"hover:-translate-y-1",glow:"hover:shadow-lg hover:shadow-primary/20"},size:{sm:"h-16",md:"h-20",lg:"h-24",xl:"h-28"}},defaultVariants:{variant:"default",hover:"scale",size:"md"}}),P=classVarianceAuthority.cva("max-w-full max-h-full object-contain",{variants:{filter:{none:"",grayscale:"grayscale hover:grayscale-0 transition-all duration-300",opacity:"opacity-60 hover:opacity-100 transition-opacity duration-300",blur:"blur-sm hover:blur-0 transition-all duration-300"}},defaultVariants:{filter:"grayscale"}}),z=({logos:i,title:d="Trusted by",subtitle:l,className:g,itemClassName:c,columns:u=4,spacing:p="md",alignment:f="center",showTitle:h=true,itemVariant:v="default",itemHover:y="scale",itemSize:b="md",imageFilter:x="grayscale",onLogoClick:V,showCount:w=false,maxLogos:r,...N})=>{let s=r?i.slice(0,r):i,m=e=>{e.url&&window.open(e.url,"_blank","noopener,noreferrer"),V?.(e);};return t__default.default.createElement("section",{className:chunkITRGJNWL_cjs.a("py-12 md:py-16",g),...N},h&&t__default.default.createElement("div",{className:"text-center mb-8 md:mb-12"},t__default.default.createElement("h2",{className:"text-2xl md:text-3xl font-bold text-foreground mb-2"},d),l&&t__default.default.createElement("p",{className:"text-muted-foreground text-lg"},l),w&&t__default.default.createElement("p",{className:"text-sm text-muted-foreground mt-2"},s.length," ",s.length===1?"partner":"partners")),t__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(k({columns:u,spacing:p,alignment:f}))},s.map((e,I)=>t__default.default.createElement("div",{key:e.id||I,className:chunkITRGJNWL_cjs.a(L({variant:v,hover:y,size:b}),c),role:e.url?"link":"img",tabIndex:e.url?0:void 0,onClick:()=>m(e),onKeyDown:n=>{e.url&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),m(e));},"aria-label":e.url?`Visit ${e.name} website`:`Logo of ${e.name}`,title:e.name},t__default.default.createElement("img",{src:e.logo,alt:e.alt||`${e.name} logo`,className:chunkITRGJNWL_cjs.a(P({filter:x})),width:e.width,height:e.height,loading:"lazy"})))),r&&i.length>r&&t__default.default.createElement("div",{className:"text-center mt-8"},t__default.default.createElement("p",{className:"text-sm text-muted-foreground"},"+",i.length-r," more partners")))},$=z;exports.a=z;exports.b=$;//# sourceMappingURL=chunk-3V3OIZWQ.cjs.map
2
+ //# sourceMappingURL=chunk-3V3OIZWQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/logo-wall.tsx"],"names":["logoWallVariants","cva","logoItemVariants","logoImageVariants","LogoWall","logos","title","subtitle","className","itemClassName","columns","spacing","alignment","showTitle","itemVariant","itemHover","itemSize","imageFilter","onLogoClick","showCount","maxLogos","props","displayLogos","handleLogoClick","logo","React","cn","idx","e","logo_wall_default"],"mappings":"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","file":"chunk-3V3OIZWQ.cjs","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst logoWallVariants = cva(\n 'grid gap-8 items-center',\n {\n variants: {\n columns: {\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5',\n 6: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6',\n },\n spacing: {\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8',\n xl: 'gap-12',\n },\n alignment: {\n center: 'justify-items-center',\n start: 'justify-items-start',\n end: 'justify-items-end',\n },\n },\n defaultVariants: {\n columns: 4,\n spacing: 'md',\n alignment: 'center',\n },\n }\n);\n\nconst logoItemVariants = cva(\n 'flex items-center justify-center p-4 rounded-lg transition-all duration-300',\n {\n variants: {\n variant: {\n default: 'bg-muted/30 hover:bg-muted/50',\n ghost: 'hover:bg-muted/30',\n outline: 'border border-border hover:border-border/80',\n filled: 'bg-muted hover:bg-muted/80',\n },\n hover: {\n none: '',\n scale: 'hover:scale-105',\n lift: 'hover:-translate-y-1',\n glow: 'hover:shadow-lg hover:shadow-primary/20',\n },\n size: {\n sm: 'h-16',\n md: 'h-20',\n lg: 'h-24',\n xl: 'h-28',\n },\n },\n defaultVariants: {\n variant: 'default',\n hover: 'scale',\n size: 'md',\n },\n }\n);\n\nconst logoImageVariants = cva(\n 'max-w-full max-h-full object-contain',\n {\n variants: {\n filter: {\n none: '',\n grayscale: 'grayscale hover:grayscale-0 transition-all duration-300',\n opacity: 'opacity-60 hover:opacity-100 transition-opacity duration-300',\n blur: 'blur-sm hover:blur-0 transition-all duration-300',\n },\n },\n defaultVariants: {\n filter: 'grayscale',\n },\n }\n);\n\nexport interface LogoItem {\n id: string;\n name: string;\n logo: string;\n url?: string;\n alt?: string;\n width?: number;\n height?: number;\n}\n\nexport interface LogoWallProps extends VariantProps<typeof logoWallVariants> {\n logos: LogoItem[];\n title?: string;\n subtitle?: string;\n className?: string;\n itemClassName?: string;\n showTitle?: boolean;\n itemVariant?: VariantProps<typeof logoItemVariants>['variant'];\n itemHover?: VariantProps<typeof logoItemVariants>['hover'];\n itemSize?: VariantProps<typeof logoItemVariants>['size'];\n imageFilter?: VariantProps<typeof logoImageVariants>['filter'];\n onLogoClick?: (logo: LogoItem) => void;\n showCount?: boolean;\n maxLogos?: number;\n}\n\nexport const LogoWall: React.FC<LogoWallProps> = ({\n logos,\n title = \"Trusted by\",\n subtitle,\n className,\n itemClassName,\n columns = 4,\n spacing = 'md',\n alignment = 'center',\n showTitle = true,\n itemVariant = 'default',\n itemHover = 'scale',\n itemSize = 'md',\n imageFilter = 'grayscale',\n onLogoClick,\n showCount = false,\n maxLogos,\n ...props\n}) => {\n const displayLogos = maxLogos ? logos.slice(0, maxLogos) : logos;\n\n const handleLogoClick = (logo: LogoItem) => {\n if (logo.url) {\n window.open(logo.url, '_blank', 'noopener,noreferrer');\n }\n onLogoClick?.(logo);\n };\n\n return (\n <section className={cn('py-12 md:py-16', className)} {...props}>\n {showTitle && (\n <div className=\"text-center mb-8 md:mb-12\">\n <h2 className=\"text-2xl md:text-3xl font-bold text-foreground mb-2\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-muted-foreground text-lg\">\n {subtitle}\n </p>\n )}\n {showCount && (\n <p className=\"text-sm text-muted-foreground mt-2\">\n {displayLogos.length} {displayLogos.length === 1 ? 'partner' : 'partners'}\n </p>\n )}\n </div>\n )}\n\n <div \n className={cn(\n logoWallVariants({ \n columns, \n spacing, \n alignment \n })\n )}\n >\n {displayLogos.map((logo, idx) => (\n <div\n key={logo.id || idx}\n className={cn(\n logoItemVariants({ \n variant: itemVariant, \n hover: itemHover, \n size: itemSize \n }),\n itemClassName\n )}\n role={logo.url ? \"link\" : \"img\"}\n tabIndex={logo.url ? 0 : undefined}\n onClick={() => handleLogoClick(logo)}\n onKeyDown={(e) => {\n if (logo.url && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleLogoClick(logo);\n }\n }}\n aria-label={logo.url ? `Visit ${logo.name} website` : `Logo of ${logo.name}`}\n title={logo.name}\n >\n <img\n src={logo.logo}\n alt={logo.alt || `${logo.name} logo`}\n className={cn(logoImageVariants({ filter: imageFilter }))}\n width={logo.width}\n height={logo.height}\n loading=\"lazy\"\n />\n </div>\n ))}\n </div>\n\n {maxLogos && logos.length > maxLogos && (\n <div className=\"text-center mt-8\">\n <p className=\"text-sm text-muted-foreground\">\n +{logos.length - maxLogos} more partners\n </p>\n </div>\n )}\n </section>\n );\n};\n\nexport default LogoWall;\n"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-AC2JBXHQ.js';import r 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"}}),b=cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),v=cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),y=cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}}),h=({plans:c,title:s,subtitle:o,columns:l,variant:u,className:g,showYearly:a$1=false,onToggleBilling:m,...p})=>{let x=(t,d="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:d,minimumFractionDigits:0}).format(t);return r.createElement("section",{className:a(f({variant:u}),g),...p},r.createElement("div",{className:"container mx-auto px-4"},(s||o)&&r.createElement("div",{className:"text-center mb-12"},s&&r.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},s),o&&r.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8"},o),m&&r.createElement("div",{className:"flex items-center justify-center gap-4 mb-8"},r.createElement("span",{className:a("text-sm",!a$1&&"text-foreground font-medium")},"Monthly"),r.createElement("button",{onClick:()=>m(!a$1),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r.createElement("span",{className:a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",a$1?"translate-x-6":"translate-x-1")})),r.createElement("span",{className:a("text-sm",a$1&&"text-foreground font-medium")},"Yearly",r.createElement("span",{className:"ml-1 text-xs text-success-600"},"(Save 20%)")))),r.createElement("div",{className:a(b({columns:l}))},c.map((t,d)=>r.createElement("div",{key:t.id||d,className:a(v({variant:t.popular?"popular":"default"}),t.popular&&"scale-105")},t.badge&&r.createElement("div",{className:a(y({variant:t.badge.variant}))},t.badge.text),r.createElement("div",{className:"text-center mb-6"},r.createElement("h3",{className:"text-2xl font-bold mb-2"},t.name),t.description&&r.createElement("p",{className:"text-muted-foreground text-sm mb-4"},t.description),r.createElement("div",{className:"mb-4"},r.createElement("span",{className:"text-4xl font-bold"},x(a$1&&t.price.yearly?t.price.yearly:t.price.monthly,t.currency)),r.createElement("span",{className:"text-muted-foreground ml-1"},"/",t.period||(a$1?"year":"month")))),r.createElement("ul",{className:"space-y-3 mb-8"},t.features.map(n=>r.createElement("li",{key:n.id,className:"flex items-center gap-3"},r.createElement("span",{className:a("w-5 h-5 rounded-full flex items-center justify-center text-xs",n.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},n.included?"\u2713":"\u2717"),r.createElement("span",{className:a("text-sm",!n.included&&"text-muted-foreground line-through")},n.name)))),r.createElement("button",{className:a("w-full py-3 px-4 rounded-lg font-medium transition-colors",t.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:t.cta.onClick},t.cta.text))))))};export{h as a};//# sourceMappingURL=chunk-44HISN45.js.map
2
+ //# sourceMappingURL=chunk-44HISN45.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","Pricing","plans","title","subtitle","columns","variant","className","showYearly","onToggleBilling","props","formatPrice","price","currency","React","cn","plan","idx","feature"],"mappings":"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","file":"chunk-44HISN45.js","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst pricingVariants = cva(\n 'py-16 md:py-24',\n {\n variants: {\n variant: {\n default: 'bg-background',\n muted: 'bg-muted/30',\n accent: 'bg-accent/10',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingGridVariants = cva(\n 'grid gap-8',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1 max-w-md mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto',\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n);\n\nconst pricingCardVariants = cva(\n 'relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'border-border',\n accent: 'border-accent/20 bg-accent/5',\n popular: 'border-primary/20 bg-primary/5 ring-2 ring-primary/10',\n muted: 'border-muted bg-muted/20',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingBadgeVariants = cva(\n 'absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n accent: 'bg-accent text-accent-foreground',\n success: 'bg-success-100 text-success-800',\n warning: 'bg-warning-100 text-warning-800',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>['variant'];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>['columns'];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n ...props\n}) => {\n const formatPrice = (price: number, currency = 'USD') => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto mb-8\">\n {subtitle}\n </p>\n )}\n \n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-8\">\n <span className={cn('text-sm', !showYearly && 'text-foreground font-medium')}>\n Monthly\n </span>\n <button\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n 'inline-block h-4 w-4 transform rounded-full bg-background transition-transform',\n showYearly ? 'translate-x-6' : 'translate-x-1'\n )}\n />\n </button>\n <span className={cn('text-sm', showYearly && 'text-foreground font-medium')}>\n Yearly\n <span className=\"ml-1 text-xs text-success-600\">\n (Save 20%)\n </span>\n </span>\n </div>\n )}\n </div>\n )}\n \n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({ \n variant: plan.popular ? 'popular' : 'default' \n }),\n plan.popular && 'scale-105'\n )}\n >\n {plan.badge && (\n <div className={cn(pricingBadgeVariants({ variant: plan.badge.variant }))}>\n {plan.badge.text}\n </div>\n )}\n \n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n showYearly && plan.price.yearly \n ? plan.price.yearly \n : plan.price.monthly,\n plan.currency\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{plan.period || (showYearly ? 'year' : 'month')}\n </span>\n </div>\n </div>\n \n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n 'w-5 h-5 rounded-full flex items-center justify-center text-xs',\n feature.included\n ? 'bg-success-100 text-success-600'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {feature.included ? '✓' : '✗'}\n </span>\n <span className={cn(\n 'text-sm',\n !feature.included && 'text-muted-foreground line-through'\n )}>\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n \n <button\n className={cn(\n 'w-full py-3 px-4 rounded-lg font-medium transition-colors',\n plan.popular\n ? 'bg-primary text-primary-foreground hover:bg-primary/90'\n : 'bg-muted text-muted-foreground hover:bg-muted/80'\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var r=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 r__namespace=/*#__PURE__*/_interopNamespace(r);var n=class extends r__namespace.Component{constructor(e){super(e),this.state={hasError:false,error:void 0,errorInfo:void 0};}static getDerivedStateFromError(e){return {hasError:true,error:e,errorInfo:void 0}}componentDidCatch(e,o){this.props.onError?.(e,o),this.setState({error:e,errorInfo:o});}resetError=()=>{this.setState({hasError:false,error:void 0,errorInfo:void 0});};render(){if(this.state.hasError){if(this.props.fallback){let e=this.props.fallback;return r__namespace.createElement(e,{error:this.state.error,resetError:this.resetError})}return r__namespace.createElement("div",{className:"flex min-h-[200px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/5 p-6"},r__namespace.createElement("div",{className:"text-center"},r__namespace.createElement("h2",{className:"text-lg font-semibold text-destructive mb-2"},"Something went wrong"),r__namespace.createElement("p",{className:"text-sm text-muted-foreground mb-4"},"An unexpected error occurred. Please try again."),r__namespace.createElement("button",{onClick:this.resetError,className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"},"Try again")),typeof window<"u"&&window.location?.hostname==="localhost"&&this.state.error&&r__namespace.createElement("details",{className:"mt-4 w-full max-w-md"},r__namespace.createElement("summary",{className:"cursor-pointer text-sm font-medium text-muted-foreground"},"Error Details (Development)"),r__namespace.createElement("pre",{className:"mt-2 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground"},this.state.error.toString(),this.state.errorInfo?.componentStack)))}return this.props.children}};function i(){let[t,e]=r__namespace.useState(null),o=r__namespace.useCallback(()=>{e(null);},[]),s=r__namespace.useCallback(a=>{e(a);},[]);return r__namespace.useEffect(()=>{if(t)throw t},[t]),{captureError:s,resetError:o}}exports.a=n;exports.b=i;//# sourceMappingURL=chunk-4FSJEW7W.cjs.map
2
+ //# sourceMappingURL=chunk-4FSJEW7W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/error-boundary.tsx"],"names":["ErrorBoundary","r","props","error","errorInfo","FallbackComponent","useErrorHandler","setError","resetError","captureError"],"mappings":"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","file":"chunk-4FSJEW7W.cjs","sourcesContent":["import * as React from 'react';\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | undefined;\n errorInfo: React.ErrorInfo | undefined;\n}\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n fallback?: React.ComponentType<{ error: Error | undefined; resetError: () => void }> | undefined;\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n}\n\n/**\n * ErrorBoundary component that catches JavaScript errors anywhere in the child component tree,\n * logs those errors, and displays a fallback UI instead of the component tree that crashed.\n */\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: undefined, errorInfo: undefined };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI\n return { hasError: true, error, errorInfo: undefined };\n }\n\n override componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n // Log the error to console in development\n if (typeof window !== 'undefined' && window.location?.hostname === 'localhost') {\n console.error('ErrorBoundary caught an error:', error, errorInfo);\n }\n\n // Call the onError callback if provided\n this.props.onError?.(error, errorInfo);\n\n // Update state with error info\n this.setState({ error, errorInfo });\n }\n\n resetError = () => {\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\n };\n\n override render() {\n if (this.state.hasError) {\n // Render custom fallback UI if provided\n if (this.props.fallback) {\n const FallbackComponent = this.props.fallback;\n return <FallbackComponent error={this.state.error} resetError={this.resetError} />;\n }\n\n // Default fallback UI\n return (\n <div className=\"flex min-h-[200px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/5 p-6\">\n <div className=\"text-center\">\n <h2 className=\"text-lg font-semibold text-destructive mb-2\">\n Something went wrong\n </h2>\n <p className=\"text-sm text-muted-foreground mb-4\">\n An unexpected error occurred. Please try again.\n </p>\n <button\n onClick={this.resetError}\n className=\"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n >\n Try again\n </button>\n </div>\n {typeof window !== 'undefined' && window.location?.hostname === 'localhost' && this.state.error && (\n <details className=\"mt-4 w-full max-w-md\">\n <summary className=\"cursor-pointer text-sm font-medium text-muted-foreground\">\n Error Details (Development)\n </summary>\n <pre className=\"mt-2 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground\">\n {this.state.error.toString()}\n {this.state.errorInfo?.componentStack}\n </pre>\n </details>\n )}\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Hook version of ErrorBoundary for functional components\n */\nexport function useErrorHandler() {\n const [error, setError] = React.useState<Error | null>(null);\n\n const resetError = React.useCallback(() => {\n setError(null);\n }, []);\n\n const captureError = React.useCallback((error: Error) => {\n setError(error);\n }, []);\n\n React.useEffect(() => {\n if (error) {\n \n throw error;\n }\n }, [error]);\n\n return { captureError, resetError };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=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 e__namespace=/*#__PURE__*/_interopNamespace(e);var v=classVarianceAuthority.cva("flex items-center space-x-1 text-sm text-muted-foreground",{variants:{variant:{default:"text-muted-foreground",compact:"text-xs"},separator:{default:"",slash:"",arrow:"",dot:""}},defaultVariants:{variant:"default",separator:"default"}}),H=classVarianceAuthority.cva("flex items-center",{variants:{variant:{default:"",current:"text-foreground font-medium",link:"hover:text-foreground transition-colors"}},defaultVariants:{variant:"default"}}),b=classVarianceAuthority.cva("flex-shrink-0 text-muted-foreground",{variants:{variant:{default:"mx-1",compact:"mx-0.5"}},defaultVariants:{variant:"default"}}),y=e__namespace.forwardRef(({className:a,variant:r,separator:t="default",items:c,showHome:u=false,homeHref:h="/",onItemClick:f,...x},g)=>{let p=()=>{switch(t){case "slash":return "/";case "arrow":return "\u2192";case "dot":return "\u2022";default:return e__namespace.createElement(phosphorReact.CaretRight,{className:"h-4 w-4"})}},N=(n,o)=>{f&&f(n,o);},L=(n,o,i)=>{let l=n.current||i,m=e__namespace.createElement("span",{className:chunkITRGJNWL_cjs.a(H({variant:l?"current":n.href?"link":"default"}))},n.label);return n.href&&!l?e__namespace.createElement("a",{href:n.href,className:"hover:text-foreground transition-colors",onClick:()=>N(n,o)},m):n.href&&l?e__namespace.createElement("a",{href:n.href,"aria-current":"page","aria-disabled":"true",tabIndex:-1,className:"hover:text-foreground transition-colors pointer-events-none"},m):e__namespace.createElement("span",{"aria-current":l?"page":void 0,className:l?"text-foreground font-medium":""},m)};return e__namespace.createElement("nav",{ref:g,"aria-label":"Breadcrumb",className:chunkITRGJNWL_cjs.a(v({variant:r,separator:t}),a),...x},e__namespace.createElement("ol",{className:"flex items-center space-x-1"},u&&e__namespace.createElement(e__namespace.Fragment,null,e__namespace.createElement("li",null,e__namespace.createElement("a",{href:h,className:"hover:text-foreground transition-colors","aria-label":"Home"},e__namespace.createElement(phosphorReact.House,{className:"h-4 w-4"}))),e__namespace.createElement("li",null,e__namespace.createElement("span",{role:"presentation","aria-hidden":"true",className:chunkITRGJNWL_cjs.a(b({variant:r}))},p()))),c.map((n,o)=>{let i=o===c.length-1;return e__namespace.createElement("li",{key:o,className:"flex items-center"},L(n,o,i),!i&&e__namespace.createElement("span",{role:"presentation","aria-hidden":"true",className:chunkITRGJNWL_cjs.a(b({variant:r}))},p()))})))});y.displayName="Breadcrumb";var E=e__namespace.forwardRef(({className:a,...r},t)=>e__namespace.createElement("ol",{ref:t,className:chunkITRGJNWL_cjs.a("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",a),...r}));E.displayName="BreadcrumbList";var M=e__namespace.forwardRef(({className:a,...r},t)=>e__namespace.createElement("li",{ref:t,className:chunkITRGJNWL_cjs.a("inline-flex items-center gap-1.5",a),...r}));M.displayName="BreadcrumbItem";var w=e__namespace.forwardRef(({asChild:a,className:r,...t},c)=>e__namespace.createElement(a?e__namespace.Fragment:"a",{ref:c,className:chunkITRGJNWL_cjs.a("transition-colors hover:text-foreground",r),...t}));w.displayName="BreadcrumbLink";var T=e__namespace.forwardRef(({className:a,...r},t)=>e__namespace.createElement("span",{ref:t,role:"link","aria-disabled":"true","aria-current":"page",className:chunkITRGJNWL_cjs.a("font-normal text-foreground",a),...r}));T.displayName="BreadcrumbPage";var k=({children:a,className:r,...t})=>e__namespace.createElement("li",{role:"presentation","aria-hidden":"true",className:chunkITRGJNWL_cjs.a("[&>svg]:size-3.5",r),...t},a);k.displayName="BreadcrumbSeparator";var C=({className:a,...r})=>e__namespace.createElement("span",{role:"presentation","aria-hidden":"true",className:chunkITRGJNWL_cjs.a("flex h-9 w-9 items-center justify-center",a),...r},e__namespace.createElement("span",{className:"sr-only"},"More"),e__namespace.createElement("span",null,"\u22EF"));C.displayName="BreadcrumbEllipsis";exports.a=v;exports.b=H;exports.c=b;exports.d=y;exports.e=E;exports.f=M;exports.g=w;exports.h=T;exports.i=k;exports.j=C;//# sourceMappingURL=chunk-4PN7OGLX.cjs.map
2
+ //# sourceMappingURL=chunk-4PN7OGLX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/breadcrumb.tsx"],"names":["breadcrumbVariants","cva","breadcrumbItemVariants","breadcrumbSeparatorVariants","Breadcrumb","e","className","variant","separator","items","showHome","homeHref","onItemClick","props","ref","getSeparator","CaretRight","handleItemClick","item","index","renderItem","isLast","isCurrent","itemContent","cn","House","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","asChild","BreadcrumbPage","BreadcrumbSeparator","children","BreadcrumbEllipsis"],"mappings":"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","file":"chunk-4PN7OGLX.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { CaretRight, House } from \"phosphor-react\";\n\nconst breadcrumbVariants = cva(\n \"flex items-center space-x-1 text-sm text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n compact: \"text-xs\",\n },\n separator: {\n default: \"\",\n slash: \"\",\n arrow: \"\",\n dot: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n separator: \"default\",\n },\n }\n);\n\nconst breadcrumbItemVariants = cva(\n \"flex items-center\",\n {\n variants: {\n variant: {\n default: \"\",\n current: \"text-foreground font-medium\",\n link: \"hover:text-foreground transition-colors\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nconst breadcrumbSeparatorVariants = cva(\n \"flex-shrink-0 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"mx-1\",\n compact: \"mx-0.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BreadcrumbEntry {\n label: string;\n href?: string;\n current?: boolean;\n}\n\nexport interface BreadcrumbProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof breadcrumbVariants> {\n items: BreadcrumbEntry[];\n separator?: \"default\" | \"slash\" | \"arrow\" | \"dot\";\n showHome?: boolean;\n homeHref?: string;\n onItemClick?: (item: BreadcrumbEntry, index: number) => void;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n (\n {\n className,\n variant,\n separator = \"default\",\n items,\n showHome = false,\n homeHref = \"/\",\n onItemClick,\n ...props\n },\n ref\n ) => {\n const getSeparator = () => {\n switch (separator) {\n case \"slash\":\n return \"/\";\n case \"arrow\":\n return \"→\";\n case \"dot\":\n return \"•\";\n default:\n return <CaretRight className=\"h-4 w-4\" />;\n }\n };\n\n const handleItemClick = (item: BreadcrumbEntry, index: number) => {\n if (onItemClick) {\n onItemClick(item, index);\n }\n };\n\n const renderItem = (item: BreadcrumbEntry, index: number, isLast: boolean) => {\n const isCurrent = item.current || isLast;\n const itemContent = (\n <span\n className={cn(\n breadcrumbItemVariants({\n variant: isCurrent ? \"current\" : item.href ? \"link\" : \"default\",\n })\n )}\n >\n {item.label}\n </span>\n );\n\n if (item.href && !isCurrent) {\n return (\n <a\n href={item.href}\n className=\"hover:text-foreground transition-colors\"\n onClick={() => handleItemClick(item, index)}\n >\n {itemContent}\n </a>\n );\n }\n\n if (item.href && isCurrent) {\n return (\n <a\n href={item.href}\n aria-current=\"page\"\n aria-disabled=\"true\"\n tabIndex={-1}\n className=\"hover:text-foreground transition-colors pointer-events-none\"\n >\n {itemContent}\n </a>\n );\n }\n\n return (\n <span\n aria-current={isCurrent ? \"page\" : undefined}\n className={isCurrent ? \"text-foreground font-medium\" : \"\"}\n >\n {itemContent}\n </span>\n );\n };\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cn(breadcrumbVariants({ variant, separator }), className)}\n {...props}\n >\n <ol className=\"flex items-center space-x-1\">\n {showHome && (\n <>\n <li>\n <a\n href={homeHref}\n className=\"hover:text-foreground transition-colors\"\n aria-label=\"Home\"\n >\n <House className=\"h-4 w-4\" />\n </a>\n </li>\n <li>\n <span role=\"presentation\" aria-hidden=\"true\" className={cn(breadcrumbSeparatorVariants({ variant }))}>\n {getSeparator()}\n </span>\n </li>\n </>\n )}\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n return (\n <li key={index} className=\"flex items-center\">\n {renderItem(item, index, isLast)}\n {!isLast && (\n <span role=\"presentation\" aria-hidden=\"true\" className={cn(breadcrumbSeparatorVariants({ variant }))}>\n {getSeparator()}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n }\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n// Individual components for more flexibility\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.HTMLAttributes<HTMLOListElement>\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\", className)}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.HTMLAttributes<HTMLLIElement>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n asChild?: boolean;\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? React.Fragment : \"a\";\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n );\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <span className=\"sr-only\">More</span>\n <span>⋯</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n breadcrumbVariants,\n breadcrumbItemVariants,\n breadcrumbSeparatorVariants,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),classVarianceAuthority=require('class-variance-authority'),phosphorReact=require('phosphor-react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var n={house:phosphorReact.House,user:phosphorReact.User,settings:phosphorReact.Gear,search:phosphorReact.MagnifyingGlass,menu:phosphorReact.List,x:phosphorReact.X,"chevron-left":phosphorReact.CaretLeft,"chevron-right":phosphorReact.CaretRight,"chevron-up":phosphorReact.CaretUp,"chevron-down":phosphorReact.CaretDown,"arrow-left":phosphorReact.ArrowLeft,"arrow-right":phosphorReact.ArrowRight,"arrow-up":phosphorReact.ArrowUp,"arrow-down":phosphorReact.ArrowDown,plus:phosphorReact.Plus,minus:phosphorReact.Minus,check:phosphorReact.Check,"x-icon":phosphorReact.X,trash:phosphorReact.Trash,edit:phosphorReact.PencilSimple,copy:phosphorReact.Copy,download:phosphorReact.Download,upload:phosphorReact.Upload,share:phosphorReact.Share,heart:phosphorReact.Heart,star:phosphorReact.Star,bookmark:phosphorReact.Bookmark,mail:phosphorReact.Envelope,phone:phosphorReact.Phone,"message-circle":phosphorReact.ChatCircle,bell:phosphorReact.Bell,"bell-slash":phosphorReact.BellSlash,play:phosphorReact.Play,pause:phosphorReact.Pause,stop:phosphorReact.Stop,"volume-high":phosphorReact.SpeakerHigh,"volume-low":phosphorReact.SpeakerLow,"volume-x":phosphorReact.SpeakerX,camera:phosphorReact.Camera,image:phosphorReact.Image,video:phosphorReact.VideoCamera,file:phosphorReact.File,folder:phosphorReact.Folder,"folder-open":phosphorReact.FolderOpen,"file-text":phosphorReact.FileText,"file-pdf":phosphorReact.FilePdf,"file-image":phosphorReact.FileImage,"check-circle":phosphorReact.CheckCircle,"x-circle":phosphorReact.XCircle,warning:phosphorReact.Warning,info:phosphorReact.Info,question:phosphorReact.Question,clock:phosphorReact.Clock,calendar:phosphorReact.Calendar,timer:phosphorReact.Timer,lock:phosphorReact.Lock,"lock-open":phosphorReact.LockOpen,eye:phosphorReact.Eye,"eye-slash":phosphorReact.EyeSlash,shield:phosphorReact.Shield,"shield-check":phosphorReact.ShieldCheck,wifi:phosphorReact.WifiHigh,"wifi-slash":phosphorReact.WifiX,"battery-warning":phosphorReact.BatteryWarning,cpu:phosphorReact.Cpu,"hard-drive":phosphorReact.HardDrive,sun:phosphorReact.Sun,moon:phosphorReact.Moon,cloud:phosphorReact.Cloud,"cloud-rain":phosphorReact.CloudRain,"cloud-snow":phosphorReact.CloudSnow,"cloud-lightning":phosphorReact.CloudLightning,github:phosphorReact.GithubLogo,twitter:phosphorReact.TwitterLogo,facebook:phosphorReact.FacebookLogo,instagram:phosphorReact.InstagramLogo,linkedin:phosphorReact.LinkedinLogo,youtube:phosphorReact.YoutubeLogo,"shopping-cart":phosphorReact.ShoppingCart,"shopping-bag":phosphorReact.ShoppingBag,"credit-card":phosphorReact.CreditCard,money:phosphorReact.Money,"heart-icon":phosphorReact.Heart,activity:phosphorReact.Activity,car:phosphorReact.Car,bus:phosphorReact.Bus,train:phosphorReact.Train,plane:phosphorReact.Airplane,ship:phosphorReact.Boat,bicycle:phosphorReact.Bicycle,coffee:phosphorReact.Coffee,pizza:phosphorReact.Pizza,hamburger:phosphorReact.Hamburger,basketball:phosphorReact.Basketball,football:phosphorReact.Football,soccer:phosphorReact.SoccerBall,tennis:phosphorReact.TennisBall,"music-note":phosphorReact.MusicNote,"play-circle":phosphorReact.PlayCircle,"pause-circle":phosphorReact.PauseCircle,"stop-circle":phosphorReact.StopCircle,book:phosphorReact.Book,"book-open":phosphorReact.BookOpen,"graduation-cap":phosphorReact.GraduationCap,lightbulb:phosphorReact.Lightbulb,briefcase:phosphorReact.Briefcase,building:phosphorReact.Buildings,"chart-line":phosphorReact.ChartLine,"chart-bar":phosphorReact.ChartBar,"chart-pie":phosphorReact.ChartPie,wrench:phosphorReact.Wrench,"paint-brush":phosphorReact.PaintBrush,tree:phosphorReact.Tree,flower:phosphorReact.Flower,leaf:phosphorReact.Leaf,mountain:phosphorReact.Mountains,rocket:phosphorReact.Rocket,planet:phosphorReact.Planet,"star-icon":phosphorReact.Star,"moon-icon":phosphorReact.Moon,"game-controller":phosphorReact.GameController,puzzle:phosphorReact.PuzzlePiece,gift:phosphorReact.Gift,key:phosphorReact.Key,"map-pin":phosphorReact.MapPin,compass:phosphorReact.Compass,flag:phosphorReact.Flag,trophy:phosphorReact.Trophy,medal:phosphorReact.Medal,crown:phosphorReact.Crown,sparkle:phosphorReact.Sparkle,zap:phosphorReact.Lightning,fire:phosphorReact.Fire,snowflake:phosphorReact.Snowflake,umbrella:phosphorReact.Umbrella,anchor:phosphorReact.Anchor,bug:phosphorReact.Bug,butterfly:phosphorReact.Butterfly,cat:phosphorReact.Cat,dog:phosphorReact.Dog,fish:phosphorReact.Fish,bird:phosphorReact.Bird,"paw-print":phosphorReact.PawPrint,alien:phosphorReact.Alien,spaceship:phosphorReact.Rocket,atom:phosphorReact.Atom,flask:phosphorReact.Flask,"test-tube":phosphorReact.TestTube,syringe:phosphorReact.Syringe,pill:phosphorReact.Pill,skull:phosphorReact.Skull,ghost:phosphorReact.Ghost,scroll:phosphorReact.Scroll,"bookmark-icon":phosphorReact.Bookmark,"compass-icon":phosphorReact.Compass,"flag-icon":phosphorReact.Flag,"trophy-icon":phosphorReact.Trophy,"medal-icon":phosphorReact.Medal,"crown-icon":phosphorReact.Crown,"sparkle-icon":phosphorReact.Sparkle,"zap-icon":phosphorReact.Lightning,"fire-icon":phosphorReact.Fire,"snowflake-icon":phosphorReact.Snowflake,"umbrella-icon":phosphorReact.Umbrella,"anchor-icon":phosphorReact.Anchor,"bug-icon":phosphorReact.Bug,"butterfly-icon":phosphorReact.Butterfly,"cat-icon":phosphorReact.Cat,"dog-icon":phosphorReact.Dog,"fish-icon":phosphorReact.Fish,"bird-icon":phosphorReact.Bird,"paw-print-icon":phosphorReact.PawPrint},Sa=classVarianceAuthority.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-blue-600",secondary:"text-gray-600",success:"text-green-600",warning:"text-yellow-600",error:"text-red-600",muted:"text-gray-400"}},defaultVariants:{size:"md",weight:"regular",color:"current"}}),Ba=r__default.default.forwardRef(({name:i,size:t,weight:e,color:l,className:c,...s},p)=>{let o=n[i];return o?r__default.default.createElement(o,{ref:p,weight:e,className:chunkITRGJNWL_cjs.a(Sa({size:t,weight:e,color:l}),c),...s}):null});Ba.displayName="Icon";var Ma=Object.keys(n);exports.a=Ba;exports.b=Ma;//# sourceMappingURL=chunk-4TYVEXRA.cjs.map
2
+ //# sourceMappingURL=chunk-4TYVEXRA.cjs.map