@sonordev/site-kit 5.8.3 → 6.0.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 (537) hide show
  1. package/README.md +11 -11
  2. package/agent-manifest.json +17 -11
  3. package/dist/{AnalyticsProvider-IGOD64MY.mjs → AnalyticsProvider-6QVM2B6O.mjs} +6 -6
  4. package/dist/{AnalyticsProvider-IGOD64MY.mjs.map → AnalyticsProvider-6QVM2B6O.mjs.map} +1 -1
  5. package/dist/{AnalyticsProvider-DPXR6FSV.js → AnalyticsProvider-AZQXLRWN.js} +10 -10
  6. package/dist/{AnalyticsProvider-DPXR6FSV.js.map → AnalyticsProvider-AZQXLRWN.js.map} +1 -1
  7. package/dist/ArticleFaqSection-3KZ24MFS.js +13 -0
  8. package/dist/ArticleFaqSection-3KZ24MFS.js.map +1 -0
  9. package/dist/ArticleFaqSection-XZPXJVH4.mjs +11 -0
  10. package/dist/ArticleFaqSection-XZPXJVH4.mjs.map +1 -0
  11. package/dist/{BlogViewTracker-Q7Y4MN4B.mjs → ArticleViewTracker-AEWJMXQQ.mjs} +13 -13
  12. package/dist/ArticleViewTracker-AEWJMXQQ.mjs.map +1 -0
  13. package/dist/{BlogViewTracker-S3CSRBIZ.js → ArticleViewTracker-CFBTQ46B.js} +16 -16
  14. package/dist/ArticleViewTracker-CFBTQ46B.js.map +1 -0
  15. package/dist/ChatWidget-6626OPXO.mjs +15 -0
  16. package/dist/{ChatWidget-G3KOUDX5.mjs.map → ChatWidget-6626OPXO.mjs.map} +1 -1
  17. package/dist/ChatWidget-U24AYLXF.js +24 -0
  18. package/dist/{ChatWidget-76R7NOWD.js.map → ChatWidget-U24AYLXF.js.map} +1 -1
  19. package/dist/EngageWidget-TR47W2ZI.mjs +12 -0
  20. package/dist/{EngageWidget-UJ47PQFG.mjs.map → EngageWidget-TR47W2ZI.mjs.map} +1 -1
  21. package/dist/EngageWidget-XUTDFRF3.js +21 -0
  22. package/dist/{EngageWidget-HD4F2ZVE.js.map → EngageWidget-XUTDFRF3.js.map} +1 -1
  23. package/dist/{FileField-WNMEA3PK.mjs → FileField-DNNC5IPS.mjs} +5 -5
  24. package/dist/{FileField-WNMEA3PK.mjs.map → FileField-DNNC5IPS.mjs.map} +1 -1
  25. package/dist/{FileField-FV6WSZMX.js → FileField-R4RQG77G.js} +6 -6
  26. package/dist/{FileField-FV6WSZMX.js.map → FileField-R4RQG77G.js.map} +1 -1
  27. package/dist/{FormSpotlight-2VRQXEFI.js → FormSpotlight-7ILRAD3W.js} +9 -9
  28. package/dist/{FormSpotlight-2VRQXEFI.js.map → FormSpotlight-7ILRAD3W.js.map} +1 -1
  29. package/dist/{FormSpotlight-NGWEPGI4.mjs → FormSpotlight-MXY4I46H.mjs} +3 -3
  30. package/dist/{FormSpotlight-NGWEPGI4.mjs.map → FormSpotlight-MXY4I46H.mjs.map} +1 -1
  31. package/dist/{FormStage-Q3KQVFVW.js → FormStage-CVD3I3SE.js} +9 -9
  32. package/dist/{FormStage-Q3KQVFVW.js.map → FormStage-CVD3I3SE.js.map} +1 -1
  33. package/dist/{FormStage-7L4BBOLC.mjs → FormStage-FDJGRGEU.mjs} +3 -3
  34. package/dist/{FormStage-7L4BBOLC.mjs.map → FormStage-FDJGRGEU.mjs.map} +1 -1
  35. package/dist/ManagedForm-5675CLWS.mjs +16 -0
  36. package/dist/{ManagedForm-Z7QE4KYI.mjs.map → ManagedForm-5675CLWS.mjs.map} +1 -1
  37. package/dist/ManagedForm-KYIK54SL.js +25 -0
  38. package/dist/{ManagedForm-4ZGU4R3G.js.map → ManagedForm-KYIK54SL.js.map} +1 -1
  39. package/dist/{ManagedNewsletterForm-4TVO2VL4.mjs → ManagedNewsletterForm-DFLDGNQU.mjs} +11 -11
  40. package/dist/ManagedNewsletterForm-DFLDGNQU.mjs.map +1 -0
  41. package/dist/{ManagedNewsletterForm-22EPZB7Z.js → ManagedNewsletterForm-IH3MRJOD.js} +13 -13
  42. package/dist/ManagedNewsletterForm-IH3MRJOD.js.map +1 -0
  43. package/dist/{SignalCore-2N7UZGF3.js → SignalCore-6LYIZFXK.js} +11 -11
  44. package/dist/{SignalCore-2N7UZGF3.js.map → SignalCore-6LYIZFXK.js.map} +1 -1
  45. package/dist/{SignalCore-57OK3DHA.mjs → SignalCore-ZH3R6XD3.mjs} +5 -5
  46. package/dist/{SignalCore-57OK3DHA.mjs.map → SignalCore-ZH3R6XD3.mjs.map} +1 -1
  47. package/dist/SitemapSync-PKBXWVI6.mjs +9 -0
  48. package/dist/{SitemapSync-WIUEYOBS.mjs.map → SitemapSync-PKBXWVI6.mjs.map} +1 -1
  49. package/dist/SitemapSync-PZ76V5MX.js +18 -0
  50. package/dist/{SitemapSync-GF4OKN4Z.js.map → SitemapSync-PZ76V5MX.js.map} +1 -1
  51. package/dist/analytics/index.js +9 -9
  52. package/dist/analytics/index.mjs +4 -4
  53. package/dist/{blog-styles-7AKRUMV7.mjs → article-styles-DACUAOVT.mjs} +124 -124
  54. package/dist/article-styles-DACUAOVT.mjs.map +1 -0
  55. package/dist/{blog-styles-6EY3BS5Y.js → article-styles-JHHTNHOK.js} +125 -125
  56. package/dist/article-styles-JHHTNHOK.js.map +1 -0
  57. package/dist/article-tables-EWXG4LNP.js +17 -0
  58. package/dist/article-tables-EWXG4LNP.js.map +1 -0
  59. package/dist/article-tables-OGE52LNT.mjs +4 -0
  60. package/dist/article-tables-OGE52LNT.mjs.map +1 -0
  61. package/dist/{blog/BlogPost.d.ts → articles/Article.d.ts} +18 -16
  62. package/dist/articles/Article.d.ts.map +1 -0
  63. package/dist/{blog/BlogFAQ.d.ts → articles/ArticleFAQ.d.ts} +6 -6
  64. package/dist/articles/ArticleFAQ.d.ts.map +1 -0
  65. package/dist/articles/ArticleFaqSection.d.ts +3 -0
  66. package/dist/articles/ArticleFaqSection.d.ts.map +1 -0
  67. package/dist/{blog/BlogList.d.ts → articles/ArticleList.d.ts} +16 -16
  68. package/dist/articles/ArticleList.d.ts.map +1 -0
  69. package/dist/{blog/BlogViewTracker.d.ts → articles/ArticleViewTracker.d.ts} +4 -4
  70. package/dist/articles/ArticleViewTracker.d.ts.map +1 -0
  71. package/dist/{blog → articles}/AuthorCard.d.ts +3 -3
  72. package/dist/articles/AuthorCard.d.ts.map +1 -0
  73. package/dist/{blog → articles}/AuthorPage.d.ts +1 -1
  74. package/dist/articles/AuthorPage.d.ts.map +1 -0
  75. package/dist/{blog → articles}/ClusterLandingPage.d.ts +6 -6
  76. package/dist/articles/ClusterLandingPage.d.ts.map +1 -0
  77. package/dist/{blog → articles}/ClusterNavigation.d.ts +5 -5
  78. package/dist/articles/ClusterNavigation.d.ts.map +1 -0
  79. package/dist/{blog → articles}/ManagedNewsletterForm.d.ts +1 -1
  80. package/dist/articles/ManagedNewsletterForm.d.ts.map +1 -0
  81. package/dist/{blog → articles}/NewsletterShell.d.ts +1 -1
  82. package/dist/articles/NewsletterShell.d.ts.map +1 -0
  83. package/dist/{blog → articles}/NewsletterWidget.d.ts +4 -4
  84. package/dist/articles/NewsletterWidget.d.ts.map +1 -0
  85. package/dist/{blog/BlogLayout.d.ts → articles/PublicationLayout.d.ts} +18 -18
  86. package/dist/articles/PublicationLayout.d.ts.map +1 -0
  87. package/dist/{blog/BlogSidebar.d.ts → articles/PublicationSidebar.d.ts} +8 -8
  88. package/dist/articles/PublicationSidebar.d.ts.map +1 -0
  89. package/dist/{blog → articles}/RelatedPosts.d.ts +6 -6
  90. package/dist/articles/RelatedPosts.d.ts.map +1 -0
  91. package/dist/{blog → articles}/ServiceCallout.d.ts +4 -4
  92. package/dist/articles/ServiceCallout.d.ts.map +1 -0
  93. package/dist/{blog → articles}/TableOfContents.d.ts +1 -1
  94. package/dist/articles/TableOfContents.d.ts.map +1 -0
  95. package/dist/{blog/blog-styles.d.ts → articles/article-styles.d.ts} +5 -5
  96. package/dist/articles/article-styles.d.ts.map +1 -0
  97. package/dist/{blog/blog-tables.d.ts → articles/article-tables.d.ts} +4 -4
  98. package/dist/articles/article-tables.d.ts.map +1 -0
  99. package/dist/articles/artwork.d.ts +14 -0
  100. package/dist/articles/artwork.d.ts.map +1 -0
  101. package/dist/{blog → articles}/author-schema.d.ts +6 -5
  102. package/dist/articles/author-schema.d.ts.map +1 -0
  103. package/dist/{blog → articles}/author-social.d.ts +2 -2
  104. package/dist/articles/author-social.d.ts.map +1 -0
  105. package/dist/{blog → articles}/excerpt.d.ts +2 -2
  106. package/dist/articles/excerpt.d.ts.map +1 -0
  107. package/dist/{blog → articles}/index.d.ts +26 -31
  108. package/dist/articles/index.d.ts.map +1 -0
  109. package/dist/{blog → articles}/index.js +39 -73
  110. package/dist/articles/index.js.map +1 -0
  111. package/dist/{blog → articles}/index.mjs +16 -17
  112. package/dist/articles/index.mjs.map +1 -0
  113. package/dist/articles/news-sitemap.d.ts +47 -0
  114. package/dist/articles/news-sitemap.d.ts.map +1 -0
  115. package/dist/{blog/processBlogHtml.d.ts → articles/processArticleHtml.d.ts} +4 -4
  116. package/dist/articles/processArticleHtml.d.ts.map +1 -0
  117. package/dist/articles/public-reads.d.ts +27 -0
  118. package/dist/articles/public-reads.d.ts.map +1 -0
  119. package/dist/{blog → articles}/reading-time.d.ts +2 -2
  120. package/dist/articles/reading-time.d.ts.map +1 -0
  121. package/dist/{blog → articles}/routes.d.ts +16 -12
  122. package/dist/articles/routes.d.ts.map +1 -0
  123. package/dist/{blog → articles}/server-core.d.ts +94 -81
  124. package/dist/articles/server-core.d.ts.map +1 -0
  125. package/dist/articles/server-ui.d.ts +29 -0
  126. package/dist/articles/server-ui.d.ts.map +1 -0
  127. package/dist/{chunk-W2U5SLMY.js → articles/server-ui.js} +378 -499
  128. package/dist/articles/server-ui.js.map +1 -0
  129. package/dist/{chunk-MWKI6ZIS.mjs → articles/server-ui.mjs} +328 -474
  130. package/dist/articles/server-ui.mjs.map +1 -0
  131. package/dist/{blog → articles}/server.d.ts +94 -81
  132. package/dist/articles/server.d.ts.map +1 -0
  133. package/dist/articles/server.js +236 -0
  134. package/dist/articles/server.mjs +11 -0
  135. package/dist/{blog → articles}/types.d.ts +34 -34
  136. package/dist/articles/types.d.ts.map +1 -0
  137. package/dist/articles/widget-styles.d.ts +9 -0
  138. package/dist/articles/widget-styles.d.ts.map +1 -0
  139. package/dist/brand/extract-brand-profile.d.ts +1 -1
  140. package/dist/{chunk-PIEHBSCN.js → chunk-254IW4FC.js} +9 -9
  141. package/dist/{chunk-PIEHBSCN.js.map → chunk-254IW4FC.js.map} +1 -1
  142. package/dist/chunk-2KRAY5NC.mjs +6 -0
  143. package/dist/{chunk-5FETEH3Y.mjs.map → chunk-2KRAY5NC.mjs.map} +1 -1
  144. package/dist/{chunk-MQS6AF5K.mjs → chunk-2WEBUZNP.mjs} +3 -3
  145. package/dist/{chunk-MQS6AF5K.mjs.map → chunk-2WEBUZNP.mjs.map} +1 -1
  146. package/dist/{chunk-4C5CZJIN.mjs → chunk-2YSB4FIC.mjs} +4 -4
  147. package/dist/{chunk-4C5CZJIN.mjs.map → chunk-2YSB4FIC.mjs.map} +1 -1
  148. package/dist/{chunk-I7HOMMIK.js → chunk-3GHPFLEH.js} +15 -15
  149. package/dist/{chunk-I7HOMMIK.js.map → chunk-3GHPFLEH.js.map} +1 -1
  150. package/dist/{chunk-CY2RFEW6.js → chunk-3LCJJ6Y6.js} +3 -3
  151. package/dist/{chunk-CY2RFEW6.js.map → chunk-3LCJJ6Y6.js.map} +1 -1
  152. package/dist/{chunk-QOOLMSBY.mjs → chunk-3OCXVTN5.mjs} +3 -3
  153. package/dist/{chunk-QOOLMSBY.mjs.map → chunk-3OCXVTN5.mjs.map} +1 -1
  154. package/dist/{chunk-AJBOEV4I.mjs → chunk-3T2CVHFO.mjs} +3 -3
  155. package/dist/chunk-3T2CVHFO.mjs.map +1 -0
  156. package/dist/{chunk-NR7YZQRR.js → chunk-3U5SVB4W.js} +4 -4
  157. package/dist/{chunk-NR7YZQRR.js.map → chunk-3U5SVB4W.js.map} +1 -1
  158. package/dist/{chunk-I3ND4XYW.js → chunk-4BEGKFMN.js} +8 -8
  159. package/dist/{chunk-I3ND4XYW.js.map → chunk-4BEGKFMN.js.map} +1 -1
  160. package/dist/{chunk-YFX3Q56O.mjs → chunk-4KAMU5HD.mjs} +3 -3
  161. package/dist/chunk-4KAMU5HD.mjs.map +1 -0
  162. package/dist/{chunk-ZPLN537Q.mjs → chunk-4WCA2HM6.mjs} +2 -2
  163. package/dist/chunk-4WCA2HM6.mjs.map +1 -0
  164. package/dist/{chunk-6CCS2EGF.js → chunk-5DSUPTBU.js} +13 -13
  165. package/dist/{chunk-6CCS2EGF.js.map → chunk-5DSUPTBU.js.map} +1 -1
  166. package/dist/{chunk-GHECYDSZ.mjs → chunk-5F2FIM5A.mjs} +16 -15
  167. package/dist/chunk-5F2FIM5A.mjs.map +1 -0
  168. package/dist/{chunk-Y5QZPUL3.mjs → chunk-5YVQWLSQ.mjs} +5 -5
  169. package/dist/chunk-5YVQWLSQ.mjs.map +1 -0
  170. package/dist/chunk-6DCAMW62.mjs +55 -0
  171. package/dist/chunk-6DCAMW62.mjs.map +1 -0
  172. package/dist/{chunk-Q2NBD54V.js → chunk-7THQ4UW3.js} +2 -2
  173. package/dist/chunk-7THQ4UW3.js.map +1 -0
  174. package/dist/{chunk-LGOQ65JQ.mjs → chunk-7TKSRUQU.mjs} +7 -7
  175. package/dist/{chunk-LGOQ65JQ.mjs.map → chunk-7TKSRUQU.mjs.map} +1 -1
  176. package/dist/{chunk-4TLFZ6NR.mjs → chunk-AS2HUIDW.mjs} +3 -3
  177. package/dist/chunk-AS2HUIDW.mjs.map +1 -0
  178. package/dist/{chunk-YN7QHLWF.js → chunk-BBBJHYPH.js} +5 -5
  179. package/dist/chunk-BBBJHYPH.js.map +1 -0
  180. package/dist/{chunk-2TS4ALOA.js → chunk-BZG34WHF.js} +14 -14
  181. package/dist/{chunk-2TS4ALOA.js.map → chunk-BZG34WHF.js.map} +1 -1
  182. package/dist/{chunk-4LYW6PMU.mjs → chunk-C2CTLLIO.mjs} +3 -3
  183. package/dist/chunk-C2CTLLIO.mjs.map +1 -0
  184. package/dist/{chunk-O237KKCX.mjs → chunk-C5VITBN7.mjs} +5 -5
  185. package/dist/chunk-C5VITBN7.mjs.map +1 -0
  186. package/dist/{chunk-75A4KY4X.mjs → chunk-CFRJ2MK5.mjs} +2 -2
  187. package/dist/chunk-CFRJ2MK5.mjs.map +1 -0
  188. package/dist/{chunk-G2WC3CXW.js → chunk-CLO3K7PF.js} +2 -2
  189. package/dist/chunk-CLO3K7PF.js.map +1 -0
  190. package/dist/{chunk-SFC3OWSE.mjs → chunk-CSSNZGTU.mjs} +4 -4
  191. package/dist/{chunk-SFC3OWSE.mjs.map → chunk-CSSNZGTU.mjs.map} +1 -1
  192. package/dist/{chunk-7VZYP4K5.js → chunk-CZGGUPPQ.js} +15 -15
  193. package/dist/{chunk-7VZYP4K5.js.map → chunk-CZGGUPPQ.js.map} +1 -1
  194. package/dist/{chunk-FTB5LAD3.js → chunk-D47W5DE4.js} +4 -4
  195. package/dist/{chunk-FTB5LAD3.js.map → chunk-D47W5DE4.js.map} +1 -1
  196. package/dist/{chunk-AK6JZ3OE.mjs → chunk-EDLNMGQC.mjs} +3 -3
  197. package/dist/{chunk-DO6ATNLN.js.map → chunk-EDLNMGQC.mjs.map} +1 -1
  198. package/dist/chunk-EL74YDNX.js +8 -0
  199. package/dist/{chunk-7R6H3GQ4.js.map → chunk-EL74YDNX.js.map} +1 -1
  200. package/dist/{chunk-HX6ZG3PP.js → chunk-EMHSHAVW.js} +3 -3
  201. package/dist/chunk-EMHSHAVW.js.map +1 -0
  202. package/dist/{chunk-7TC3GRXQ.js → chunk-G6KQ3C3W.js} +25 -23
  203. package/dist/chunk-G6KQ3C3W.js.map +1 -0
  204. package/dist/{chunk-HEOLGDUX.mjs → chunk-GQ3SDRL6.mjs} +4 -4
  205. package/dist/{chunk-HEOLGDUX.mjs.map → chunk-GQ3SDRL6.mjs.map} +1 -1
  206. package/dist/{chunk-IIHIRHSW.js → chunk-HFCQGSD2.js} +18 -18
  207. package/dist/{chunk-IIHIRHSW.js.map → chunk-HFCQGSD2.js.map} +1 -1
  208. package/dist/{chunk-XZO5I4RS.mjs → chunk-HIZJD7TU.mjs} +3 -3
  209. package/dist/{chunk-XZO5I4RS.mjs.map → chunk-HIZJD7TU.mjs.map} +1 -1
  210. package/dist/{chunk-UQY5KC64.mjs → chunk-HOOVYWTO.mjs} +4 -4
  211. package/dist/{chunk-UQY5KC64.mjs.map → chunk-HOOVYWTO.mjs.map} +1 -1
  212. package/dist/{chunk-NBT4L2D7.js → chunk-HX5JPNMN.js} +8 -8
  213. package/dist/{chunk-NBT4L2D7.js.map → chunk-HX5JPNMN.js.map} +1 -1
  214. package/dist/chunk-HXHRS3PX.mjs +349 -0
  215. package/dist/chunk-HXHRS3PX.mjs.map +1 -0
  216. package/dist/{chunk-XBX2K3GA.js → chunk-IBJOGXQI.js} +4 -4
  217. package/dist/{chunk-XBX2K3GA.js.map → chunk-IBJOGXQI.js.map} +1 -1
  218. package/dist/{chunk-3OO5EDKD.mjs → chunk-JMNBU2RG.mjs} +9 -9
  219. package/dist/{chunk-3OO5EDKD.mjs.map → chunk-JMNBU2RG.mjs.map} +1 -1
  220. package/dist/{chunk-R7GHP3FY.js → chunk-JONWE26J.js} +3 -3
  221. package/dist/chunk-JONWE26J.js.map +1 -0
  222. package/dist/{chunk-PQYQHZWV.mjs → chunk-JSXLTZUP.mjs} +6 -6
  223. package/dist/{chunk-PQYQHZWV.mjs.map → chunk-JSXLTZUP.mjs.map} +1 -1
  224. package/dist/{chunk-FD72QL42.mjs → chunk-JXCMCASE.mjs} +3 -3
  225. package/dist/{chunk-FD72QL42.mjs.map → chunk-JXCMCASE.mjs.map} +1 -1
  226. package/dist/{chunk-TR3F3CLV.js → chunk-KA4NNWOK.js} +10 -10
  227. package/dist/{chunk-TR3F3CLV.js.map → chunk-KA4NNWOK.js.map} +1 -1
  228. package/dist/{chunk-K4TCEAUX.js → chunk-KR7ATPAN.js} +5 -5
  229. package/dist/chunk-KR7ATPAN.js.map +1 -0
  230. package/dist/{chunk-JLVCWC6A.mjs → chunk-KZVSB5WE.mjs} +2 -2
  231. package/dist/chunk-KZVSB5WE.mjs.map +1 -0
  232. package/dist/chunk-LWCAZDY2.js +355 -0
  233. package/dist/chunk-LWCAZDY2.js.map +1 -0
  234. package/dist/{chunk-5HFD36AN.js → chunk-MCG4BSRW.js} +5 -5
  235. package/dist/{chunk-5HFD36AN.js.map → chunk-MCG4BSRW.js.map} +1 -1
  236. package/dist/{chunk-S2Y7LVQ2.js → chunk-MIYGP34I.js} +14 -14
  237. package/dist/{chunk-S2Y7LVQ2.js.map → chunk-MIYGP34I.js.map} +1 -1
  238. package/dist/{chunk-PI3FHABB.js → chunk-MS2EE6LT.js} +10 -10
  239. package/dist/{chunk-PI3FHABB.js.map → chunk-MS2EE6LT.js.map} +1 -1
  240. package/dist/{chunk-QQQAW6WY.js → chunk-N6CB7MK7.js} +6 -6
  241. package/dist/{chunk-QQQAW6WY.js.map → chunk-N6CB7MK7.js.map} +1 -1
  242. package/dist/{chunk-LMEUYRRR.js → chunk-NAA5J2JM.js} +233 -120
  243. package/dist/chunk-NAA5J2JM.js.map +1 -0
  244. package/dist/{chunk-OE7CTIOU.mjs → chunk-NE6QGHFT.mjs} +4 -4
  245. package/dist/{chunk-OE7CTIOU.mjs.map → chunk-NE6QGHFT.mjs.map} +1 -1
  246. package/dist/{chunk-NCDF2RK4.mjs → chunk-NR52QHOD.mjs} +3 -3
  247. package/dist/{chunk-NCDF2RK4.mjs.map → chunk-NR52QHOD.mjs.map} +1 -1
  248. package/dist/{chunk-GQF6QAQS.js → chunk-OGNX6JT4.js} +5 -5
  249. package/dist/chunk-OGNX6JT4.js.map +1 -0
  250. package/dist/{chunk-FVW6FT6L.js → chunk-OSU4QA5M.js} +8 -8
  251. package/dist/{chunk-FVW6FT6L.js.map → chunk-OSU4QA5M.js.map} +1 -1
  252. package/dist/{chunk-UEUWC3PH.mjs → chunk-PJYTYM5G.mjs} +3 -3
  253. package/dist/{chunk-UEUWC3PH.mjs.map → chunk-PJYTYM5G.mjs.map} +1 -1
  254. package/dist/{chunk-DO6ATNLN.js → chunk-PRAHDLKT.js} +5 -5
  255. package/dist/chunk-PRAHDLKT.js.map +1 -0
  256. package/dist/{chunk-RFAAY3BW.mjs → chunk-QEM2F2DC.mjs} +3 -3
  257. package/dist/{chunk-RFAAY3BW.mjs.map → chunk-QEM2F2DC.mjs.map} +1 -1
  258. package/dist/{chunk-F3KA6V2Y.js → chunk-QOCLSJIU.js} +3 -3
  259. package/dist/{chunk-F3KA6V2Y.js.map → chunk-QOCLSJIU.js.map} +1 -1
  260. package/dist/{chunk-R5IPDAMM.mjs → chunk-QVBAAPNT.mjs} +3 -3
  261. package/dist/{chunk-R5IPDAMM.mjs.map → chunk-QVBAAPNT.mjs.map} +1 -1
  262. package/dist/{chunk-POJZA67T.mjs → chunk-RC4L4DV2.mjs} +4 -4
  263. package/dist/{chunk-POJZA67T.mjs.map → chunk-RC4L4DV2.mjs.map} +1 -1
  264. package/dist/{chunk-ZVI7MBVF.mjs → chunk-RDPI27TS.mjs} +12 -10
  265. package/dist/chunk-RDPI27TS.mjs.map +1 -0
  266. package/dist/{chunk-OEW2LFOV.js → chunk-RLUNEEGM.js} +4 -4
  267. package/dist/{chunk-OEW2LFOV.js.map → chunk-RLUNEEGM.js.map} +1 -1
  268. package/dist/{chunk-HBHS5VRN.mjs → chunk-RPCODOWG.mjs} +3 -3
  269. package/dist/{chunk-HBHS5VRN.mjs.map → chunk-RPCODOWG.mjs.map} +1 -1
  270. package/dist/{chunk-ROSYCNXG.mjs → chunk-RZGVNDO6.mjs} +4 -4
  271. package/dist/{chunk-ROSYCNXG.mjs.map → chunk-RZGVNDO6.mjs.map} +1 -1
  272. package/dist/{chunk-MYMZRHTC.js → chunk-SCRB5DZM.js} +8 -8
  273. package/dist/{chunk-MYMZRHTC.js.map → chunk-SCRB5DZM.js.map} +1 -1
  274. package/dist/{chunk-YQTE32QK.js → chunk-SG7CWD2R.js} +17 -16
  275. package/dist/chunk-SG7CWD2R.js.map +1 -0
  276. package/dist/{chunk-XEB77DQS.js → chunk-TBXWJJGT.js} +3 -3
  277. package/dist/chunk-TBXWJJGT.js.map +1 -0
  278. package/dist/{chunk-QXMWNIKL.mjs → chunk-TCCGP3FT.mjs} +3 -3
  279. package/dist/{chunk-QXMWNIKL.mjs.map → chunk-TCCGP3FT.mjs.map} +1 -1
  280. package/dist/{chunk-CZEIHFLW.js → chunk-TCZHRSWY.js} +4 -4
  281. package/dist/{chunk-CZEIHFLW.js.map → chunk-TCZHRSWY.js.map} +1 -1
  282. package/dist/{chunk-LB44BNJ2.js → chunk-TST2IKYO.js} +14 -14
  283. package/dist/{chunk-LB44BNJ2.js.map → chunk-TST2IKYO.js.map} +1 -1
  284. package/dist/{chunk-U2V542EO.mjs → chunk-UHYRVALN.mjs} +2 -2
  285. package/dist/{chunk-U2V542EO.mjs.map → chunk-UHYRVALN.mjs.map} +1 -1
  286. package/dist/{chunk-4L7OHRWB.mjs → chunk-UO6KTHBQ.mjs} +4 -4
  287. package/dist/{chunk-4L7OHRWB.mjs.map → chunk-UO6KTHBQ.mjs.map} +1 -1
  288. package/dist/{chunk-H5NBFNND.js → chunk-UZKXOZHR.js} +2 -2
  289. package/dist/chunk-UZKXOZHR.js.map +1 -0
  290. package/dist/{chunk-NMM27UOF.js → chunk-VINLIMAX.js} +3 -3
  291. package/dist/{chunk-NMM27UOF.js.map → chunk-VINLIMAX.js.map} +1 -1
  292. package/dist/{chunk-UHM3CCCC.js → chunk-WDEGGHTB.js} +12 -12
  293. package/dist/{chunk-UHM3CCCC.js.map → chunk-WDEGGHTB.js.map} +1 -1
  294. package/dist/{chunk-PIPERXI7.mjs → chunk-WV5YQL3W.mjs} +3 -3
  295. package/dist/{chunk-PIPERXI7.mjs.map → chunk-WV5YQL3W.mjs.map} +1 -1
  296. package/dist/{chunk-3EY5E35M.mjs → chunk-X3MY4PL7.mjs} +210 -107
  297. package/dist/chunk-X3MY4PL7.mjs.map +1 -0
  298. package/dist/{chunk-4NVMAYMQ.mjs → chunk-XKXZ4OW4.mjs} +4 -4
  299. package/dist/{chunk-4NVMAYMQ.mjs.map → chunk-XKXZ4OW4.mjs.map} +1 -1
  300. package/dist/{chunk-WINDP776.mjs → chunk-XSBKR3VF.mjs} +5 -5
  301. package/dist/{chunk-WINDP776.mjs.map → chunk-XSBKR3VF.mjs.map} +1 -1
  302. package/dist/{chunk-SEP5D4MI.js → chunk-Y2CP5J6Q.js} +2 -2
  303. package/dist/{chunk-SEP5D4MI.js.map → chunk-Y2CP5J6Q.js.map} +1 -1
  304. package/dist/{chunk-VVBMWV4O.js → chunk-YGDQVZEL.js} +7 -7
  305. package/dist/{chunk-VVBMWV4O.js.map → chunk-YGDQVZEL.js.map} +1 -1
  306. package/dist/{chunk-KV7XXLJV.mjs → chunk-YPGUV6BT.mjs} +3 -3
  307. package/dist/{chunk-KV7XXLJV.mjs.map → chunk-YPGUV6BT.mjs.map} +1 -1
  308. package/dist/chunk-YRCR7WY3.js +65 -0
  309. package/dist/chunk-YRCR7WY3.js.map +1 -0
  310. package/dist/{chunk-F2KW4OJF.mjs → chunk-YWLBQ3L5.mjs} +4 -4
  311. package/dist/{chunk-F2KW4OJF.mjs.map → chunk-YWLBQ3L5.mjs.map} +1 -1
  312. package/dist/{chunk-CNTDV7HM.js → chunk-YYEBFQGS.js} +4 -4
  313. package/dist/{chunk-CNTDV7HM.js.map → chunk-YYEBFQGS.js.map} +1 -1
  314. package/dist/chunk-ZL35JCDA.mjs +61 -0
  315. package/dist/chunk-ZL35JCDA.mjs.map +1 -0
  316. package/dist/chunk-ZR43XFUM.js +60 -0
  317. package/dist/chunk-ZR43XFUM.js.map +1 -0
  318. package/dist/{chunk-25F2EXOC.mjs → chunk-ZR4TYCQW.mjs} +3 -3
  319. package/dist/{chunk-25F2EXOC.mjs.map → chunk-ZR4TYCQW.mjs.map} +1 -1
  320. package/dist/cli/commands/setup.d.ts +2 -2
  321. package/dist/cli/commands/sync.d.ts +2 -2
  322. package/dist/cli/commands/sync.d.ts.map +1 -1
  323. package/dist/cli/index.js +76 -76
  324. package/dist/cli/index.mjs +29 -29
  325. package/dist/client/index.js +5 -5
  326. package/dist/client/index.mjs +4 -4
  327. package/dist/commerce/index.js +57 -57
  328. package/dist/commerce/index.mjs +5 -5
  329. package/dist/discover-LPN55L5B.js +21 -0
  330. package/dist/{discover-NGEPXZOD.js.map → discover-LPN55L5B.js.map} +1 -1
  331. package/dist/discover-QGA6QFSR.mjs +4 -0
  332. package/dist/{discover-CYXYKHZ2.mjs.map → discover-QGA6QFSR.mjs.map} +1 -1
  333. package/dist/engage/index.js +13 -13
  334. package/dist/engage/index.mjs +7 -7
  335. package/dist/fleet/contract.d.ts +1 -1
  336. package/dist/fleet/contract.js +12 -12
  337. package/dist/fleet/contract.mjs +1 -1
  338. package/dist/fleet/index.js +20 -20
  339. package/dist/fleet/index.mjs +5 -5
  340. package/dist/forms/index.js +16 -16
  341. package/dist/forms/index.mjs +9 -9
  342. package/dist/forms/server.js +10 -10
  343. package/dist/forms/server.mjs +8 -8
  344. package/dist/forms/static.js +7 -7
  345. package/dist/forms/static.mjs +6 -6
  346. package/dist/images/index.js +11 -11
  347. package/dist/images/index.mjs +4 -4
  348. package/dist/index.d.ts +2 -2
  349. package/dist/index.d.ts.map +1 -1
  350. package/dist/index.js +70 -70
  351. package/dist/index.mjs +12 -12
  352. package/dist/layout/client.js +10 -10
  353. package/dist/layout/client.mjs +9 -9
  354. package/dist/layout/index.js +12 -12
  355. package/dist/layout/index.mjs +10 -10
  356. package/dist/llms/SpeakableSchema.d.ts +1 -1
  357. package/dist/llms/SpeakableSchema.d.ts.map +1 -1
  358. package/dist/llms/client.js +15 -15
  359. package/dist/llms/client.mjs +1 -1
  360. package/dist/llms/generateLLMsTxt.d.ts.map +1 -1
  361. package/dist/llms/index.js +32 -31
  362. package/dist/llms/index.js.map +1 -1
  363. package/dist/llms/index.mjs +8 -7
  364. package/dist/llms/index.mjs.map +1 -1
  365. package/dist/llms/types.d.ts +7 -0
  366. package/dist/llms/types.d.ts.map +1 -1
  367. package/dist/maps/index.js +5 -5
  368. package/dist/maps/index.mjs +3 -3
  369. package/dist/og/index.js +7 -7
  370. package/dist/og/index.mjs +2 -2
  371. package/dist/og/route.d.ts +6 -6
  372. package/dist/og/route.js.map +1 -1
  373. package/dist/og/route.mjs.map +1 -1
  374. package/dist/og/wiring.d.ts +4 -4
  375. package/dist/og/wiring.d.ts.map +1 -1
  376. package/dist/proxy/index.js +5 -5
  377. package/dist/proxy/index.mjs +3 -3
  378. package/dist/redirects/index.js +10 -10
  379. package/dist/redirects/index.mjs +3 -3
  380. package/dist/redirects/not-found.js +7 -7
  381. package/dist/redirects/not-found.mjs +3 -3
  382. package/dist/robots/indexnow.d.ts +17 -0
  383. package/dist/robots/indexnow.d.ts.map +1 -0
  384. package/dist/robots/indexnow.js +39 -0
  385. package/dist/robots/indexnow.js.map +1 -0
  386. package/dist/robots/indexnow.mjs +34 -0
  387. package/dist/robots/indexnow.mjs.map +1 -0
  388. package/dist/search/contract.d.ts +1 -1
  389. package/dist/search/contract.js +3 -3
  390. package/dist/search/contract.mjs +1 -1
  391. package/dist/search/index.js +7 -7
  392. package/dist/search/index.mjs +5 -5
  393. package/dist/seo/client.js +6 -6
  394. package/dist/seo/client.mjs +5 -5
  395. package/dist/seo/index.js +47 -47
  396. package/dist/seo/index.js.map +1 -1
  397. package/dist/seo/index.mjs +12 -12
  398. package/dist/seo/index.mjs.map +1 -1
  399. package/dist/seo/register-sitemap-cli.js +12 -12
  400. package/dist/seo/register-sitemap-cli.mjs +5 -5
  401. package/dist/seo/server.js +21 -21
  402. package/dist/seo/server.mjs +5 -5
  403. package/dist/server/index.js +3 -3
  404. package/dist/server/index.mjs +2 -2
  405. package/dist/{server-api-A2EFCTZX.mjs → server-api-7F5P6CSH.mjs} +6 -6
  406. package/dist/{server-api-A2EFCTZX.mjs.map → server-api-7F5P6CSH.mjs.map} +1 -1
  407. package/dist/{server-api-IWTZ7C3O.js → server-api-OC5JNK6R.js} +24 -24
  408. package/dist/{server-api-IWTZ7C3O.js.map → server-api-OC5JNK6R.js.map} +1 -1
  409. package/dist/shared/build-entries.d.ts +9 -7
  410. package/dist/shared/build-entries.d.ts.map +1 -1
  411. package/dist/shared/version.d.ts +1 -1
  412. package/dist/signal/index.js +11 -11
  413. package/dist/signal/index.mjs +2 -2
  414. package/dist/sitemap/discover.d.ts +1 -1
  415. package/dist/sitemap/index.d.ts +7 -1
  416. package/dist/sitemap/index.d.ts.map +1 -1
  417. package/dist/sitemap/index.js +47 -30
  418. package/dist/sitemap/index.js.map +1 -1
  419. package/dist/sitemap/index.mjs +26 -9
  420. package/dist/sitemap/index.mjs.map +1 -1
  421. package/dist/sitemap/shared.d.ts +1 -1
  422. package/dist/sitemap/shared.d.ts.map +1 -1
  423. package/dist/sites/site-param.d.ts +2 -2
  424. package/dist/sync/index.js +17 -17
  425. package/dist/sync/index.mjs +4 -4
  426. package/dist/types.d.ts +1 -1
  427. package/dist/types.d.ts.map +1 -1
  428. package/dist/writeLLMsTxt-ATADOUVZ.js +20 -0
  429. package/dist/writeLLMsTxt-QJFXBHZF.mjs +11 -0
  430. package/package.json +20 -14
  431. package/dist/BlogPostFaqSection-P3GXVQPA.mjs +0 -11
  432. package/dist/BlogPostFaqSection-P3GXVQPA.mjs.map +0 -1
  433. package/dist/BlogPostFaqSection-YG5J4B4U.js +0 -13
  434. package/dist/BlogPostFaqSection-YG5J4B4U.js.map +0 -1
  435. package/dist/BlogViewTracker-Q7Y4MN4B.mjs.map +0 -1
  436. package/dist/BlogViewTracker-S3CSRBIZ.js.map +0 -1
  437. package/dist/ChatWidget-76R7NOWD.js +0 -24
  438. package/dist/ChatWidget-G3KOUDX5.mjs +0 -15
  439. package/dist/EngageWidget-HD4F2ZVE.js +0 -21
  440. package/dist/EngageWidget-UJ47PQFG.mjs +0 -12
  441. package/dist/ManagedForm-4ZGU4R3G.js +0 -25
  442. package/dist/ManagedForm-Z7QE4KYI.mjs +0 -16
  443. package/dist/ManagedNewsletterForm-22EPZB7Z.js.map +0 -1
  444. package/dist/ManagedNewsletterForm-4TVO2VL4.mjs.map +0 -1
  445. package/dist/SitemapSync-GF4OKN4Z.js +0 -18
  446. package/dist/SitemapSync-WIUEYOBS.mjs +0 -9
  447. package/dist/blog/AuthorCard.d.ts.map +0 -1
  448. package/dist/blog/AuthorPage.d.ts.map +0 -1
  449. package/dist/blog/BlogFAQ.d.ts.map +0 -1
  450. package/dist/blog/BlogLayout.d.ts.map +0 -1
  451. package/dist/blog/BlogList.d.ts.map +0 -1
  452. package/dist/blog/BlogPost.d.ts.map +0 -1
  453. package/dist/blog/BlogPostFaqSection.d.ts +0 -3
  454. package/dist/blog/BlogPostFaqSection.d.ts.map +0 -1
  455. package/dist/blog/BlogSidebar.d.ts.map +0 -1
  456. package/dist/blog/BlogViewTracker.d.ts.map +0 -1
  457. package/dist/blog/ClusterLandingPage.d.ts.map +0 -1
  458. package/dist/blog/ClusterNavigation.d.ts.map +0 -1
  459. package/dist/blog/ManagedNewsletterForm.d.ts.map +0 -1
  460. package/dist/blog/NewsletterShell.d.ts.map +0 -1
  461. package/dist/blog/NewsletterWidget.d.ts.map +0 -1
  462. package/dist/blog/RelatedPosts.d.ts.map +0 -1
  463. package/dist/blog/ServiceCallout.d.ts.map +0 -1
  464. package/dist/blog/TableOfContents.d.ts.map +0 -1
  465. package/dist/blog/artwork.d.ts +0 -14
  466. package/dist/blog/artwork.d.ts.map +0 -1
  467. package/dist/blog/author-schema.d.ts.map +0 -1
  468. package/dist/blog/author-social.d.ts.map +0 -1
  469. package/dist/blog/blog-styles.d.ts.map +0 -1
  470. package/dist/blog/blog-tables.d.ts.map +0 -1
  471. package/dist/blog/excerpt.d.ts.map +0 -1
  472. package/dist/blog/index.d.ts.map +0 -1
  473. package/dist/blog/index.js.map +0 -1
  474. package/dist/blog/index.mjs.map +0 -1
  475. package/dist/blog/processBlogHtml.d.ts.map +0 -1
  476. package/dist/blog/public-reads.d.ts +0 -27
  477. package/dist/blog/public-reads.d.ts.map +0 -1
  478. package/dist/blog/reading-time.d.ts.map +0 -1
  479. package/dist/blog/routes.d.ts.map +0 -1
  480. package/dist/blog/server-core.d.ts.map +0 -1
  481. package/dist/blog/server-ui.d.ts +0 -29
  482. package/dist/blog/server-ui.d.ts.map +0 -1
  483. package/dist/blog/server-ui.js +0 -267
  484. package/dist/blog/server-ui.js.map +0 -1
  485. package/dist/blog/server-ui.mjs +0 -203
  486. package/dist/blog/server-ui.mjs.map +0 -1
  487. package/dist/blog/server.d.ts.map +0 -1
  488. package/dist/blog/server.js +0 -207
  489. package/dist/blog/server.mjs +0 -10
  490. package/dist/blog/types.d.ts.map +0 -1
  491. package/dist/blog/widget-styles.d.ts +0 -9
  492. package/dist/blog/widget-styles.d.ts.map +0 -1
  493. package/dist/blog-styles-6EY3BS5Y.js.map +0 -1
  494. package/dist/blog-styles-7AKRUMV7.mjs.map +0 -1
  495. package/dist/blog-tables-DWDEWA3S.js +0 -17
  496. package/dist/blog-tables-DWDEWA3S.js.map +0 -1
  497. package/dist/blog-tables-QGIHOESZ.mjs +0 -4
  498. package/dist/blog-tables-QGIHOESZ.mjs.map +0 -1
  499. package/dist/chunk-3EY5E35M.mjs.map +0 -1
  500. package/dist/chunk-4LYW6PMU.mjs.map +0 -1
  501. package/dist/chunk-4TLFZ6NR.mjs.map +0 -1
  502. package/dist/chunk-5B4J3IBX.mjs +0 -164
  503. package/dist/chunk-5B4J3IBX.mjs.map +0 -1
  504. package/dist/chunk-5FETEH3Y.mjs +0 -6
  505. package/dist/chunk-75A4KY4X.mjs.map +0 -1
  506. package/dist/chunk-7R6H3GQ4.js +0 -8
  507. package/dist/chunk-7TC3GRXQ.js.map +0 -1
  508. package/dist/chunk-AJBOEV4I.mjs.map +0 -1
  509. package/dist/chunk-AK6JZ3OE.mjs.map +0 -1
  510. package/dist/chunk-FHPW7XVH.js +0 -175
  511. package/dist/chunk-FHPW7XVH.js.map +0 -1
  512. package/dist/chunk-G2WC3CXW.js.map +0 -1
  513. package/dist/chunk-GHECYDSZ.mjs.map +0 -1
  514. package/dist/chunk-GQF6QAQS.js.map +0 -1
  515. package/dist/chunk-H5NBFNND.js.map +0 -1
  516. package/dist/chunk-HX6ZG3PP.js.map +0 -1
  517. package/dist/chunk-JLVCWC6A.mjs.map +0 -1
  518. package/dist/chunk-K4TCEAUX.js.map +0 -1
  519. package/dist/chunk-LMEUYRRR.js.map +0 -1
  520. package/dist/chunk-MWKI6ZIS.mjs.map +0 -1
  521. package/dist/chunk-O237KKCX.mjs.map +0 -1
  522. package/dist/chunk-Q2NBD54V.js.map +0 -1
  523. package/dist/chunk-R7GHP3FY.js.map +0 -1
  524. package/dist/chunk-W2U5SLMY.js.map +0 -1
  525. package/dist/chunk-XEB77DQS.js.map +0 -1
  526. package/dist/chunk-Y5QZPUL3.mjs.map +0 -1
  527. package/dist/chunk-YFX3Q56O.mjs.map +0 -1
  528. package/dist/chunk-YN7QHLWF.js.map +0 -1
  529. package/dist/chunk-YQTE32QK.js.map +0 -1
  530. package/dist/chunk-ZPLN537Q.mjs.map +0 -1
  531. package/dist/chunk-ZVI7MBVF.mjs.map +0 -1
  532. package/dist/discover-CYXYKHZ2.mjs +0 -4
  533. package/dist/discover-NGEPXZOD.js +0 -21
  534. package/dist/writeLLMsTxt-CQ7A4AAL.js +0 -19
  535. package/dist/writeLLMsTxt-NX5MSPYX.mjs +0 -10
  536. /package/dist/{blog → articles}/server.js.map +0 -0
  537. /package/dist/{blog → articles}/server.mjs.map +0 -0
@@ -1,11 +1,64 @@
1
1
  'use strict';
2
2
 
3
- var chunkFHPW7XVH_js = require('./chunk-FHPW7XVH.js');
4
- var chunkYN7QHLWF_js = require('./chunk-YN7QHLWF.js');
3
+ var chunkYRCR7WY3_js = require('./chunk-YRCR7WY3.js');
4
+ var chunkZR43XFUM_js = require('./chunk-ZR43XFUM.js');
5
+ var chunkBBBJHYPH_js = require('./chunk-BBBJHYPH.js');
5
6
  var chunkO5GHP7UO_js = require('./chunk-O5GHP7UO.js');
6
7
  var navigation = require('next/navigation');
7
8
 
8
- // src/blog/excerpt.ts
9
+ // src/articles/public-reads.ts
10
+ async function fetchArticleBySlug({ apiUrl, apiKey, site }, slug) {
11
+ try {
12
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/posts/${slug}`, site), {
13
+ headers: { "x-api-key": apiKey },
14
+ next: { revalidate: 60 }
15
+ });
16
+ if (!response.ok) {
17
+ if (response.status !== 404) console.error("[Articles] Failed to fetch post:", response.statusText);
18
+ return null;
19
+ }
20
+ const data = await response.json();
21
+ return data.post || null;
22
+ } catch (error) {
23
+ console.error("[Articles] Error fetching post:", error);
24
+ return null;
25
+ }
26
+ }
27
+ async function fetchArticleCategories({ apiUrl, apiKey, site }) {
28
+ try {
29
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/categories`, site), {
30
+ headers: { "x-api-key": apiKey },
31
+ next: { revalidate: 300 }
32
+ });
33
+ if (!response.ok) return [];
34
+ const data = await response.json();
35
+ return data.categories || [];
36
+ } catch (error) {
37
+ console.error("[Articles] Error fetching categories:", error);
38
+ return [];
39
+ }
40
+ }
41
+ async function fetchRelatedArticles({ apiUrl, apiKey, site }, currentPostId, limit, cache = {}) {
42
+ try {
43
+ const response = await fetch(`${apiUrl}/public/articles/related`, {
44
+ method: "POST",
45
+ headers: { "Content-Type": "application/json", "x-api-key": apiKey },
46
+ body: JSON.stringify(chunkBBBJHYPH_js.withSiteBody({ current_post_id: currentPostId, limit }, site)),
47
+ ...cache.revalidate !== void 0 ? { next: { revalidate: cache.revalidate } } : {}
48
+ });
49
+ if (!response.ok) {
50
+ console.error("[Articles] Failed to fetch related posts:", response.statusText);
51
+ return [];
52
+ }
53
+ const data = await response.json();
54
+ return data.posts || [];
55
+ } catch (error) {
56
+ console.error("[Articles] Error fetching related posts:", error);
57
+ return [];
58
+ }
59
+ }
60
+
61
+ // src/articles/excerpt.ts
9
62
  function sanitizeExcerpt(raw, maxLength = 160) {
10
63
  if (!raw) return "";
11
64
  let text = String(raw).trim();
@@ -37,7 +90,45 @@ function sanitizeExcerpt(raw, maxLength = 160) {
37
90
  return `${(lastSpace > maxLength * 0.6 ? cut.slice(0, lastSpace) : cut).replace(/[\s,;:—–-]+$/, "")}\u2026`;
38
91
  }
39
92
 
40
- // src/blog/server-core.ts
93
+ // src/articles/news-sitemap.ts
94
+ var NEWS_SITEMAP_WINDOW_MS = 2 * 24 * 60 * 60 * 1e3;
95
+ var NEWS_SITEMAP_MAX_URLS = 1e3;
96
+ var FEED_DEFAULT_ITEMS = 20;
97
+ function escapeXml(text) {
98
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
99
+ }
100
+ function cdata(html) {
101
+ return `<![CDATA[${html.replace(/]]>/g, "]]]]><![CDATA[>")}]]>`;
102
+ }
103
+ function recentNewsPosts(posts, now = /* @__PURE__ */ new Date()) {
104
+ const cutoff = now.getTime() - NEWS_SITEMAP_WINDOW_MS;
105
+ return posts.filter((post) => {
106
+ const published = post.published_at ? Date.parse(post.published_at) : NaN;
107
+ return Number.isFinite(published) && published >= cutoff && published <= now.getTime();
108
+ }).sort((a, b) => Date.parse(b.published_at) - Date.parse(a.published_at)).slice(0, NEWS_SITEMAP_MAX_URLS);
109
+ }
110
+ function buildNewsSitemapXml(posts, options, now = /* @__PURE__ */ new Date()) {
111
+ const language = options.language || "en";
112
+ const items = recentNewsPosts(posts, now).map((post) => {
113
+ const url = chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl: options.siteUrl });
114
+ return ` <url>
115
+ <loc>${escapeXml(url)}</loc>
116
+ <news:news>
117
+ <news:publication>
118
+ <news:name>${escapeXml(options.publicationName)}</news:name>
119
+ <news:language>${escapeXml(language)}</news:language>
120
+ </news:publication>
121
+ <news:publication_date>${new Date(post.published_at).toISOString()}</news:publication_date>
122
+ <news:title>${escapeXml(post.title)}</news:title>
123
+ </news:news>
124
+ </url>`;
125
+ });
126
+ return `<?xml version="1.0" encoding="UTF-8"?>
127
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
128
+ ${items.join("\n")}${items.length ? "\n" : ""}</urlset>`;
129
+ }
130
+
131
+ // src/articles/server-core.ts
41
132
  var SEO_LIMITS = {
42
133
  title: { min: 30, max: 60, recommended: 55 },
43
134
  metaDescription: { min: 120, max: 160, recommended: 155 },
@@ -81,7 +172,7 @@ function validateMetaDescription(description, focusKeyphrase) {
81
172
  }
82
173
  return { field: "meta_description", value: description, length, limit: SEO_LIMITS.metaDescription, status, message };
83
174
  }
84
- function validateBlogPostSeo(post) {
175
+ function validateArticleSeo(post) {
85
176
  const results = [];
86
177
  const focusKeyphrase = post.focus_keyphrase;
87
178
  if (post.meta_title || post.title) {
@@ -127,28 +218,28 @@ function validateBlogPostSeo(post) {
127
218
  }
128
219
  return results;
129
220
  }
130
- async function getBlogPost(slug, options) {
221
+ async function getArticle(slug, options) {
131
222
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
132
223
  if (!config) {
133
- console.warn("[Blog] No API key configured");
224
+ console.warn("[Articles] No API key configured");
134
225
  return null;
135
226
  }
136
- return chunkFHPW7XVH_js.fetchBlogPostBySlug({ ...config, site: options?.site }, slug);
227
+ return fetchArticleBySlug({ ...config, site: options?.site }, slug);
137
228
  }
138
- async function requireBlogPost(slug, options) {
139
- const post = await getBlogPost(slug, options);
229
+ async function requireArticle(slug, options) {
230
+ const post = await getArticle(slug, options);
140
231
  if (!post) navigation.notFound();
141
232
  return post;
142
233
  }
143
- async function getAllBlogSlugs() {
234
+ async function getAllArticleSlugs() {
144
235
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
145
236
  if (!config) {
146
- console.warn("[Blog] No API key configured");
237
+ console.warn("[Articles] No API key configured");
147
238
  return [];
148
239
  }
149
240
  const { apiUrl, apiKey } = config;
150
241
  try {
151
- const response = await fetch(chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/slugs`), {
242
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/slugs`), {
152
243
  headers: { "x-api-key": apiKey },
153
244
  next: { revalidate: 300 }
154
245
  });
@@ -156,30 +247,30 @@ async function getAllBlogSlugs() {
156
247
  const data = await response.json();
157
248
  return data.slugs || [];
158
249
  } catch (error) {
159
- console.error("[Blog] Error fetching slugs:", error);
250
+ console.error("[Articles] Error fetching slugs:", error);
160
251
  return [];
161
252
  }
162
253
  }
163
- async function getBlogCategories(options) {
254
+ async function getArticleCategories(options) {
164
255
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
165
256
  if (!config) return [];
166
- return await chunkFHPW7XVH_js.fetchBlogCategories({ ...config, site: options?.site });
257
+ return await fetchArticleCategories({ ...config, site: options?.site });
167
258
  }
168
- async function generateBlogPostMetadata(slug, options = {}) {
169
- const post = await getBlogPost(slug);
259
+ async function generateArticleMetadata(slug, options = {}) {
260
+ const post = await getArticle(slug);
170
261
  const { siteName, siteUrl = "", defaultImage, twitterHandle } = options;
171
262
  if (!post) {
172
263
  if (options.notFound !== false) navigation.notFound();
173
264
  return {
174
265
  title: "Post Not Found",
175
- description: "The requested blog post could not be found.",
266
+ description: "The requested article could not be found.",
176
267
  robots: { index: false, follow: true }
177
268
  };
178
269
  }
179
270
  const title = post.meta_title || post.title;
180
271
  const description = sanitizeExcerpt(post.meta_description || post.excerpt);
181
272
  const image = options.images === false ? void 0 : post.featured_image || defaultImage;
182
- const url = chunkFHPW7XVH_js.resolveBlogPostUrl(post, options);
273
+ const url = chunkZR43XFUM_js.resolveArticleUrl(post, options);
183
274
  return {
184
275
  title,
185
276
  description,
@@ -218,7 +309,7 @@ async function generateBlogPostMetadata(slug, options = {}) {
218
309
  }
219
310
  };
220
311
  }
221
- function generateBlogIndexMetadata(options) {
312
+ function generatePublicationMetadata(options) {
222
313
  const {
223
314
  title = "Blog",
224
315
  description = "Read our latest articles and insights.",
@@ -227,14 +318,14 @@ function generateBlogIndexMetadata(options) {
227
318
  defaultImage,
228
319
  twitterHandle
229
320
  } = options;
230
- const base = chunkFHPW7XVH_js.createBlogRoutes(options).index;
321
+ const base = chunkZR43XFUM_js.createPublicationRoutes(options).index;
231
322
  return {
232
323
  title,
233
324
  description,
234
325
  openGraph: {
235
326
  title,
236
327
  description,
237
- url: chunkFHPW7XVH_js.resolveBlogUrl(base, siteUrl),
328
+ url: chunkZR43XFUM_js.resolvePublicationUrl(base, siteUrl),
238
329
  siteName,
239
330
  type: "website",
240
331
  ...defaultImage && { images: [{ url: defaultImage }] }
@@ -248,9 +339,9 @@ function generateBlogIndexMetadata(options) {
248
339
  }
249
340
  };
250
341
  }
251
- function generateBlogCategoryMetadata(categoryName, options = {}) {
342
+ function generateArticleCategoryMetadata(categoryName, options = {}) {
252
343
  const { siteName, siteUrl = "", defaultImage } = options;
253
- const title = `${categoryName} - Blog`;
344
+ const title = `${categoryName} - Articles`;
254
345
  const description = `Browse all posts in ${categoryName}.`;
255
346
  const slug = options.categorySlug ?? categoryName.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
256
347
  return {
@@ -259,7 +350,7 @@ function generateBlogCategoryMetadata(categoryName, options = {}) {
259
350
  openGraph: {
260
351
  title,
261
352
  description,
262
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).category(slug), siteUrl),
353
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).category(slug), siteUrl),
263
354
  siteName,
264
355
  type: "website",
265
356
  ...defaultImage && { images: [{ url: defaultImage }] }
@@ -269,69 +360,84 @@ function generateBlogCategoryMetadata(categoryName, options = {}) {
269
360
  function isNextStaticParamsProps(value) {
270
361
  return "params" in value;
271
362
  }
272
- async function generateBlogStaticParams(arg = {}) {
363
+ async function generateArticleStaticParams(arg = {}) {
273
364
  const options = isNextStaticParamsProps(arg) ? {} : arg;
274
- const posts = await getBlogRouteEntries(options);
365
+ const posts = await getArticleRouteEntries(options);
275
366
  return posts.map((post) => {
276
- const category = chunkFHPW7XVH_js.blogCategorySlug(post.category || options.category);
367
+ const category = chunkZR43XFUM_js.articleCategorySlug(post.category || options.category);
277
368
  return { slug: post.slug, ...options.includeCategoryInPath && category ? { category } : {} };
278
369
  });
279
370
  }
280
371
  async function generateCategoryStaticParams() {
281
- const categories = await getBlogCategories();
372
+ const categories = await getArticleCategories();
282
373
  return categories.map((c) => ({ category: c.slug }));
283
374
  }
284
- async function getBlogRouteEntries(options, withCanonicals = false) {
375
+ function absoluteImage(image, siteUrl) {
376
+ const value = image?.trim();
377
+ if (!value) return null;
378
+ try {
379
+ return new URL(value, siteUrl.endsWith("/") ? siteUrl : `${siteUrl}/`).toString();
380
+ } catch {
381
+ return null;
382
+ }
383
+ }
384
+ async function getArticleRouteEntries(options, withCanonicals = false) {
285
385
  if (withCanonicals || options.includeCategoryInPath || options.postPath) {
286
- return (await getAllBlogPosts({ maxPosts: Infinity })).map((post) => ({ ...post, last_modified: post.updated_at }));
386
+ return (await getAllArticles({ maxPosts: Infinity })).map((post) => ({ ...post, last_modified: post.updated_at }));
287
387
  }
288
- return getAllBlogSlugs();
388
+ return getAllArticleSlugs();
289
389
  }
290
- async function generateBlogSitemap(siteUrl, options = {}) {
291
- const slugs = await getBlogRouteEntries(options, true);
292
- const categories = options.includeCategories === false ? [] : await getBlogCategories();
390
+ async function generateArticleSitemap(siteUrl, options = {}) {
391
+ const slugs = await getArticleRouteEntries(options, true);
392
+ const categories = options.includeCategories === false ? [] : await getArticleCategories();
293
393
  const clusters = options.includeClusters === false ? [] : await getTopicClusters();
294
394
  const entries = [
295
- // Blog index
395
+ // Publication index
296
396
  {
297
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).index, siteUrl),
397
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).index, siteUrl),
298
398
  changeFrequency: "daily",
299
399
  priority: 0.8
300
400
  }
301
401
  ];
302
402
  clusters.forEach((cluster) => {
303
403
  entries.push({
304
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).cluster(cluster.cluster_slug), siteUrl),
404
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),
305
405
  changeFrequency: "weekly",
306
406
  priority: 0.8
307
407
  });
308
408
  });
309
409
  categories.forEach((cat) => {
310
410
  entries.push({
311
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).category(cat.slug), siteUrl),
411
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).category(cat.slug), siteUrl),
312
412
  changeFrequency: "weekly",
313
413
  priority: 0.6
314
414
  });
315
415
  });
316
416
  slugs.forEach((post) => {
317
417
  const isPillar = post.article_type === "pillar";
418
+ const image = absoluteImage(post.featured_image, siteUrl);
318
419
  entries.push({
319
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl }),
420
+ url: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl }),
320
421
  lastModified: post.last_modified ? new Date(post.last_modified) : void 0,
321
422
  changeFrequency: isPillar ? "weekly" : "monthly",
322
- priority: isPillar ? 0.9 : 0.7
423
+ priority: isPillar ? 0.9 : 0.7,
424
+ ...image ? { images: [image] } : {}
323
425
  });
324
426
  });
325
427
  return entries;
326
428
  }
327
- function generateBlogPostSchema(post, options = {}) {
429
+ async function generateNewsSitemap(options) {
430
+ const posts = await getAllArticles({ maxPosts: 50, site: options.site });
431
+ return buildNewsSitemapXml(posts, options);
432
+ }
433
+ function generateArticleSchema(post, options = {}) {
328
434
  const { siteUrl = "", siteName, logoUrl } = options;
329
435
  const schema = {
330
436
  "@context": "https://schema.org",
331
437
  "@type": "BlogPosting",
332
438
  headline: post.title,
333
439
  description: sanitizeExcerpt(post.excerpt || post.meta_description),
334
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl }),
440
+ url: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl }),
335
441
  datePublished: post.published_at,
336
442
  dateModified: post.updated_at,
337
443
  author: {
@@ -339,7 +445,7 @@ function generateBlogPostSchema(post, options = {}) {
339
445
  name: typeof post.author === "string" ? post.author : post.author?.name
340
446
  }
341
447
  };
342
- const articleImage = chunkFHPW7XVH_js.resolveBlogArtwork(post, "article").src;
448
+ const articleImage = chunkYRCR7WY3_js.resolveArticleArtwork(post, "article").src;
343
449
  if (articleImage) schema.image = articleImage;
344
450
  if (siteName || logoUrl) {
345
451
  schema.publisher = {
@@ -366,14 +472,14 @@ function generateBlogPostSchema(post, options = {}) {
366
472
  }
367
473
  return schema;
368
474
  }
369
- function generateBlogListSchema(options = {}) {
475
+ function generateArticleListSchema(options = {}) {
370
476
  const { siteUrl = "", siteName, description } = options;
371
477
  return {
372
478
  "@context": "https://schema.org",
373
479
  "@type": "Blog",
374
480
  name: siteName ? `${siteName} Blog` : "Blog",
375
481
  description: description || "Our latest articles and insights.",
376
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).index, siteUrl)
482
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).index, siteUrl)
377
483
  };
378
484
  }
379
485
  function generateFaqSchema(faqItems) {
@@ -398,7 +504,7 @@ function generateHowToSchema(post, steps, options = {}) {
398
504
  "@type": "HowTo",
399
505
  name: post.title,
400
506
  description: sanitizeExcerpt(post.excerpt || post.meta_description),
401
- image: chunkFHPW7XVH_js.resolveBlogArtwork(post, "article").src,
507
+ image: chunkYRCR7WY3_js.resolveArticleArtwork(post, "article").src,
402
508
  totalTime: post.reading_time ? `PT${post.reading_time}M` : void 0,
403
509
  step: steps.map((step, index) => ({
404
510
  "@type": "HowToStep",
@@ -406,17 +512,17 @@ function generateHowToSchema(post, steps, options = {}) {
406
512
  name: step.name,
407
513
  text: step.text,
408
514
  image: step.image,
409
- url: step.url || `${chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl }).split("#")[0]}#step-${index + 1}`
515
+ url: step.url || `${chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl }).split("#")[0]}#step-${index + 1}`
410
516
  }))
411
517
  };
412
518
  }
413
519
  var FEED_MAX_POSTS = 100;
414
- async function getAllBlogPosts(options = {}) {
520
+ async function getAllArticles(options = {}) {
415
521
  const maxPosts = options.maxPosts ?? FEED_MAX_POSTS;
416
522
  if (!(maxPosts > 0)) return [];
417
523
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
418
524
  if (!config) {
419
- console.warn("[Blog] No API key configured");
525
+ console.warn("[Articles] No API key configured");
420
526
  return [];
421
527
  }
422
528
  const { apiUrl, apiKey } = config;
@@ -425,7 +531,7 @@ async function getAllBlogPosts(options = {}) {
425
531
  try {
426
532
  while (posts.length < maxPosts) {
427
533
  const response = await fetch(
428
- chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/posts?per_page=50&page=${page}`, options.site),
534
+ chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/posts?per_page=50&page=${page}`, options.site),
429
535
  {
430
536
  headers: { "x-api-key": apiKey },
431
537
  next: { revalidate: 300 }
@@ -439,13 +545,10 @@ async function getAllBlogPosts(options = {}) {
439
545
  page += 1;
440
546
  }
441
547
  } catch (error) {
442
- console.error("[Blog] Error fetching posts for RSS:", error);
548
+ console.error("[Articles] Error fetching posts for RSS:", error);
443
549
  }
444
550
  return posts.slice(0, maxPosts);
445
551
  }
446
- function escapeXml(text) {
447
- return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
448
- }
449
552
  function stripHtml(html) {
450
553
  return html.replace(/<[^>]*>/g, "").trim();
451
554
  }
@@ -453,7 +556,7 @@ async function generateRssFeed(options) {
453
556
  const {
454
557
  siteUrl,
455
558
  siteName,
456
- description = "Latest blog posts and insights",
559
+ description = "Latest articles and insights",
457
560
  language = "en-us",
458
561
  copyright,
459
562
  managingEditor,
@@ -461,7 +564,7 @@ async function generateRssFeed(options) {
461
564
  ttl = 60,
462
565
  imageUrl
463
566
  } = options;
464
- const posts = await getAllBlogPosts();
567
+ const posts = await getAllArticles({ maxPosts: options.maxItems ?? FEED_DEFAULT_ITEMS });
465
568
  const now = (/* @__PURE__ */ new Date()).toUTCString();
466
569
  let rss = `<?xml version="1.0" encoding="UTF-8"?>
467
570
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
@@ -473,7 +576,7 @@ async function generateRssFeed(options) {
473
576
  <lastBuildDate>${now}</lastBuildDate>
474
577
  <pubDate>${now}</pubDate>
475
578
  <ttl>${ttl}</ttl>
476
- <atom:link href="${escapeXml(chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).rss, siteUrl))}" rel="self" type="application/rss+xml"/>
579
+ <atom:link href="${escapeXml(chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).rss, siteUrl))}" rel="self" type="application/rss+xml"/>
477
580
  `;
478
581
  if (copyright) {
479
582
  rss += ` <copyright>${escapeXml(copyright)}</copyright>
@@ -496,7 +599,7 @@ async function generateRssFeed(options) {
496
599
  `;
497
600
  }
498
601
  for (const post of posts) {
499
- const postUrl = chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl });
602
+ const postUrl = chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl });
500
603
  const pubDate = post.published_at ? new Date(post.published_at).toUTCString() : now;
501
604
  const author = typeof post.author === "string" ? post.author : post.author?.name || "Unknown";
502
605
  const fullContent = post.content_html || post.content || "";
@@ -506,7 +609,7 @@ async function generateRssFeed(options) {
506
609
  <link>${escapeXml(postUrl)}</link>
507
610
  <guid isPermaLink="true">${escapeXml(postUrl)}</guid>
508
611
  <description>${escapeXml(description2)}</description>
509
- <content:encoded><![CDATA[${fullContent}]]></content:encoded>
612
+ <content:encoded>${cdata(fullContent)}</content:encoded>
510
613
  <pubDate>${pubDate}</pubDate>
511
614
  <author>${escapeXml(author)}</author>
512
615
  `;
@@ -537,18 +640,18 @@ async function generateAtomFeed(options) {
537
640
  const {
538
641
  siteUrl,
539
642
  siteName,
540
- description = "Latest blog posts and insights",
643
+ description = "Latest articles and insights",
541
644
  managingEditor
542
645
  } = options;
543
- const posts = await getAllBlogPosts();
646
+ const posts = await getAllArticles({ maxPosts: options.maxItems ?? FEED_DEFAULT_ITEMS });
544
647
  const now = (/* @__PURE__ */ new Date()).toISOString();
545
648
  let atom = `<?xml version="1.0" encoding="UTF-8"?>
546
649
  <feed xmlns="http://www.w3.org/2005/Atom">
547
650
  <title>${escapeXml(siteName)}</title>
548
651
  <subtitle>${escapeXml(description)}</subtitle>
549
- <link href="${escapeXml(chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).atom, siteUrl))}" rel="self"/>
652
+ <link href="${escapeXml(chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).atom, siteUrl))}" rel="self"/>
550
653
  <link href="${siteUrl}"/>
551
- <id>${escapeXml(chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).index, siteUrl))}</id>
654
+ <id>${escapeXml(chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).index, siteUrl))}</id>
552
655
  <updated>${now}</updated>
553
656
  `;
554
657
  if (managingEditor) {
@@ -558,7 +661,7 @@ async function generateAtomFeed(options) {
558
661
  `;
559
662
  }
560
663
  for (const post of posts) {
561
- const postUrl = chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl });
664
+ const postUrl = chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl });
562
665
  const updated = post.updated_at || post.published_at || now;
563
666
  const published = post.published_at || now;
564
667
  const author = typeof post.author === "string" ? post.author : post.author?.name || "Unknown";
@@ -573,7 +676,7 @@ async function generateAtomFeed(options) {
573
676
  <name>${escapeXml(author)}</name>
574
677
  </author>
575
678
  <summary>${escapeXml(sanitizeExcerpt(post.excerpt, 300) || stripHtml(fullContent).substring(0, 300))}</summary>
576
- <content type="html"><![CDATA[${fullContent}]]></content>
679
+ <content type="html">${cdata(fullContent)}</content>
577
680
  </entry>
578
681
  `;
579
682
  }
@@ -585,7 +688,7 @@ async function getTopicClusters(options) {
585
688
  if (!config) return [];
586
689
  const { apiUrl, apiKey } = config;
587
690
  try {
588
- const response = await fetch(chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/clusters`, options?.site), {
691
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/clusters`, options?.site), {
589
692
  headers: { "x-api-key": apiKey },
590
693
  next: { revalidate: 300 }
591
694
  });
@@ -609,7 +712,7 @@ async function getTopicClusters(options) {
609
712
  interlink_map: []
610
713
  }));
611
714
  } catch (error) {
612
- console.error("[Blog] Error fetching topic clusters:", error);
715
+ console.error("[Articles] Error fetching topic clusters:", error);
613
716
  return [];
614
717
  }
615
718
  }
@@ -618,7 +721,7 @@ async function getTopicCluster(slug, options) {
618
721
  if (!config) return null;
619
722
  const { apiUrl, apiKey } = config;
620
723
  try {
621
- const response = await fetch(chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/clusters/${slug}`, options?.site), {
724
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/clusters/${slug}`, options?.site), {
622
725
  headers: { "x-api-key": apiKey },
623
726
  next: { revalidate: 300 }
624
727
  });
@@ -644,7 +747,7 @@ async function getTopicCluster(slug, options) {
644
747
  interlink_map: data.interlink_map || []
645
748
  };
646
749
  } catch (error) {
647
- console.error("[Blog] Error fetching topic cluster:", error);
750
+ console.error("[Articles] Error fetching topic cluster:", error);
648
751
  return null;
649
752
  }
650
753
  }
@@ -665,7 +768,7 @@ function getClusterNavigation(post) {
665
768
  }
666
769
  async function identifyTopicClusters(categorySlug) {
667
770
  console.warn(
668
- "[Blog] identifyTopicClusters() is deprecated. Use getTopicCluster(slug) for real cluster data managed in the Sonor dashboard."
771
+ "[Articles] identifyTopicClusters() is deprecated. Use getTopicCluster(slug) for real cluster data managed in the Sonor dashboard."
669
772
  );
670
773
  const posts = await getPostsByCategory(categorySlug);
671
774
  if (posts.length < 3) return null;
@@ -684,7 +787,7 @@ async function getPostsByCategory(categorySlug, options) {
684
787
  if (!config) return [];
685
788
  const { apiUrl, apiKey } = config;
686
789
  try {
687
- const response = await fetch(chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/posts?category=${encodeURIComponent(categorySlug)}&per_page=50`, options?.site), {
790
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/posts?category=${encodeURIComponent(categorySlug)}&per_page=50`, options?.site), {
688
791
  headers: { "x-api-key": apiKey },
689
792
  next: { revalidate: 300 }
690
793
  });
@@ -692,7 +795,7 @@ async function getPostsByCategory(categorySlug, options) {
692
795
  const data = await response.json();
693
796
  return data.posts || [];
694
797
  } catch (error) {
695
- console.error("[Blog] Error fetching category posts:", error);
798
+ console.error("[Articles] Error fetching category posts:", error);
696
799
  return [];
697
800
  }
698
801
  }
@@ -708,7 +811,7 @@ function generateClusterItemListSchema(cluster, options = {}) {
708
811
  "@type": "ListItem",
709
812
  position: i + 1,
710
813
  name: post.title,
711
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl })
814
+ url: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl })
712
815
  }))
713
816
  };
714
817
  }
@@ -720,7 +823,7 @@ function generateClusterArticleSchema(post, cluster, options = {}) {
720
823
  "@type": "Article",
721
824
  headline: post.title,
722
825
  description: sanitizeExcerpt(post.excerpt || post.meta_description),
723
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl }),
826
+ url: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl }),
724
827
  datePublished: post.published_at,
725
828
  dateModified: post.updated_at,
726
829
  author: {
@@ -729,7 +832,7 @@ function generateClusterArticleSchema(post, cluster, options = {}) {
729
832
  },
730
833
  keywords: post.focus_keyphrase || post.keywords
731
834
  };
732
- const articleImage = chunkFHPW7XVH_js.resolveBlogArtwork(post, "article").src;
835
+ const articleImage = chunkYRCR7WY3_js.resolveArticleArtwork(post, "article").src;
733
836
  if (articleImage) schema.image = articleImage;
734
837
  if (siteName || logoUrl) {
735
838
  schema.publisher = {
@@ -742,13 +845,13 @@ function generateClusterArticleSchema(post, cluster, options = {}) {
742
845
  schema.hasPart = cluster.supports.map((s) => ({
743
846
  "@type": "Article",
744
847
  headline: s.title,
745
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(s, { ...options, siteUrl })
848
+ url: chunkZR43XFUM_js.resolveArticleUrl(s, { ...options, siteUrl })
746
849
  }));
747
850
  } else if (!isPillar && cluster.pillar) {
748
851
  schema.isPartOf = {
749
852
  "@type": "Article",
750
853
  headline: cluster.pillar.title,
751
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(cluster.pillar, { ...options, siteUrl })
854
+ url: chunkZR43XFUM_js.resolveArticleUrl(cluster.pillar, { ...options, siteUrl })
752
855
  };
753
856
  }
754
857
  if (cluster.geo_target) {
@@ -763,18 +866,18 @@ function generateClusterBreadcrumbSchema(post, cluster, options = {}) {
763
866
  const { siteUrl = "", siteName = "Home" } = options;
764
867
  const items = [
765
868
  { "@type": "ListItem", position: 1, name: siteName, item: siteUrl },
766
- { "@type": "ListItem", position: 2, name: "Blog", item: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).index, siteUrl) },
869
+ { "@type": "ListItem", position: 2, name: "Blog", item: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).index, siteUrl) },
767
870
  {
768
871
  "@type": "ListItem",
769
872
  position: 3,
770
873
  name: cluster.cluster_name,
771
- item: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).cluster(cluster.cluster_slug), siteUrl)
874
+ item: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl)
772
875
  },
773
876
  {
774
877
  "@type": "ListItem",
775
878
  position: 4,
776
879
  name: post.title,
777
- item: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl })
880
+ item: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl })
778
881
  }
779
882
  ];
780
883
  return {
@@ -790,19 +893,19 @@ function generateClusterLandingSchema(cluster, options = {}) {
790
893
  "@type": "CollectionPage",
791
894
  name: cluster.cluster_name,
792
895
  description: `Comprehensive guide to ${cluster.core_topic}`,
793
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).cluster(cluster.cluster_slug), siteUrl),
896
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),
794
897
  ...siteName && {
795
898
  isPartOf: { "@type": "WebSite", name: siteName, url: siteUrl }
796
899
  },
797
900
  mainEntity: cluster.pillar ? {
798
901
  "@type": "Article",
799
902
  headline: cluster.pillar.title,
800
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(cluster.pillar, { ...options, siteUrl })
903
+ url: chunkZR43XFUM_js.resolveArticleUrl(cluster.pillar, { ...options, siteUrl })
801
904
  } : void 0,
802
905
  hasPart: cluster.supports.map((s) => ({
803
906
  "@type": "Article",
804
907
  headline: s.title,
805
- url: chunkFHPW7XVH_js.resolveBlogPostUrl(s, { ...options, siteUrl })
908
+ url: chunkZR43XFUM_js.resolveArticleUrl(s, { ...options, siteUrl })
806
909
  }))
807
910
  };
808
911
  }
@@ -818,7 +921,7 @@ async function generateClusterPageMetadata(clusterSlug, options = {}) {
818
921
  openGraph: {
819
922
  title,
820
923
  description,
821
- url: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).cluster(cluster.cluster_slug), siteUrl),
924
+ url: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),
822
925
  type: "website"
823
926
  }
824
927
  };
@@ -827,9 +930,9 @@ async function getRelatedInsights(currentSlug, options = {}) {
827
930
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
828
931
  if (!config) return [];
829
932
  const { limit = 3, site } = options;
830
- const current = await getBlogPost(currentSlug, { site });
933
+ const current = await getArticle(currentSlug, { site });
831
934
  if (!current?.id) return [];
832
- return chunkFHPW7XVH_js.fetchRelatedBlogPosts({ ...config, site }, current.id, limit, { revalidate: 300 });
935
+ return fetchRelatedArticles({ ...config, site }, current.id, limit, { revalidate: 300 });
833
936
  }
834
937
  function generateBreadcrumbSchema(post, options = {}) {
835
938
  const { siteUrl = "", siteName = "Home" } = options;
@@ -844,7 +947,7 @@ function generateBreadcrumbSchema(post, options = {}) {
844
947
  "@type": "ListItem",
845
948
  position: 2,
846
949
  name: "Blog",
847
- item: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).index, siteUrl)
950
+ item: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).index, siteUrl)
848
951
  }
849
952
  ];
850
953
  if (post.category) {
@@ -854,20 +957,20 @@ function generateBreadcrumbSchema(post, options = {}) {
854
957
  "@type": "ListItem",
855
958
  position: 3,
856
959
  name: categoryName,
857
- item: chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).category(categorySlug), siteUrl)
960
+ item: chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).category(categorySlug), siteUrl)
858
961
  });
859
962
  items.push({
860
963
  "@type": "ListItem",
861
964
  position: 4,
862
965
  name: post.title,
863
- item: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl })
966
+ item: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl })
864
967
  });
865
968
  } else {
866
969
  items.push({
867
970
  "@type": "ListItem",
868
971
  position: 3,
869
972
  name: post.title,
870
- item: chunkFHPW7XVH_js.resolveBlogPostUrl(post, { ...options, siteUrl })
973
+ item: chunkZR43XFUM_js.resolveArticleUrl(post, { ...options, siteUrl })
871
974
  });
872
975
  }
873
976
  return {
@@ -876,14 +979,14 @@ function generateBreadcrumbSchema(post, options = {}) {
876
979
  itemListElement: items
877
980
  };
878
981
  }
879
- function generateAllBlogSchemas(post, options = {}) {
982
+ function generateAllArticleSchemas(post, options = {}) {
880
983
  const schemas = [];
881
984
  const eeatSchema = post.schema ?? post.schema_json;
882
985
  if (eeatSchema) {
883
986
  const arr = Array.isArray(eeatSchema) ? eeatSchema : [eeatSchema];
884
987
  schemas.push(...arr);
885
988
  } else {
886
- schemas.push(generateBlogPostSchema(post, options));
989
+ schemas.push(generateArticleSchema(post, options));
887
990
  const faqItems = post.faq_items ?? post.faqItems;
888
991
  if (faqItems && faqItems.length > 0) {
889
992
  const faqSchema = generateFaqSchema(faqItems);
@@ -896,12 +999,12 @@ function generateAllBlogSchemas(post, options = {}) {
896
999
  async function getAuthorBySlug(slug, options) {
897
1000
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
898
1001
  if (!config) {
899
- console.warn("[Blog] No API key configured");
1002
+ console.warn("[Articles] No API key configured");
900
1003
  return null;
901
1004
  }
902
1005
  const { apiUrl, apiKey } = config;
903
1006
  try {
904
- const response = await fetch(chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/authors/${slug}`, options?.site), {
1007
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/authors/${slug}`, options?.site), {
905
1008
  headers: { "x-api-key": apiKey },
906
1009
  next: { revalidate: 60 }
907
1010
  });
@@ -909,20 +1012,20 @@ async function getAuthorBySlug(slug, options) {
909
1012
  const data = await response.json();
910
1013
  return data.author || null;
911
1014
  } catch (error) {
912
- console.error("[Blog] Error fetching author:", error);
1015
+ console.error("[Articles] Error fetching author:", error);
913
1016
  return null;
914
1017
  }
915
1018
  }
916
1019
  async function getAuthorPosts(slug, limit = 20, offset = 0, options) {
917
1020
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
918
1021
  if (!config) {
919
- console.warn("[Blog] No API key configured");
1022
+ console.warn("[Articles] No API key configured");
920
1023
  return { author: null, posts: [], total: 0 };
921
1024
  }
922
1025
  const { apiUrl, apiKey } = config;
923
1026
  try {
924
1027
  const response = await fetch(
925
- chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/authors/${slug}/posts?limit=${limit}&offset=${offset}`, options?.site),
1028
+ chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/authors/${slug}/posts?limit=${limit}&offset=${offset}`, options?.site),
926
1029
  {
927
1030
  headers: { "x-api-key": apiKey },
928
1031
  next: { revalidate: 60 }
@@ -944,19 +1047,19 @@ async function getAuthorPosts(slug, limit = 20, offset = 0, options) {
944
1047
  total: data.total || 0
945
1048
  };
946
1049
  } catch (error) {
947
- console.error("[Blog] Error fetching author posts:", error);
1050
+ console.error("[Articles] Error fetching author posts:", error);
948
1051
  return { author: null, posts: [], total: 0 };
949
1052
  }
950
1053
  }
951
1054
  async function getAllAuthorSlugs() {
952
1055
  const config = chunkO5GHP7UO_js.resolveServerApiConfig();
953
1056
  if (!config) {
954
- console.warn("[Blog] No API key configured");
1057
+ console.warn("[Articles] No API key configured");
955
1058
  return [];
956
1059
  }
957
1060
  const { apiUrl, apiKey } = config;
958
1061
  try {
959
- const response = await fetch(chunkYN7QHLWF_js.withSiteParam(`${apiUrl}/public/blog/authors`), {
1062
+ const response = await fetch(chunkBBBJHYPH_js.withSiteParam(`${apiUrl}/public/articles/authors`), {
960
1063
  headers: { "x-api-key": apiKey },
961
1064
  next: { revalidate: 300 }
962
1065
  });
@@ -965,7 +1068,7 @@ async function getAllAuthorSlugs() {
965
1068
  const authors = data.authors || [];
966
1069
  return authors.map((a) => ({ slug: a.slug }));
967
1070
  } catch (error) {
968
- console.error("[Blog] Error fetching author slugs:", error);
1071
+ console.error("[Articles] Error fetching author slugs:", error);
969
1072
  return [];
970
1073
  }
971
1074
  }
@@ -976,7 +1079,7 @@ function generateAuthorPageMetadata(author, options = {}) {
976
1079
  const { siteUrl = "", siteName } = options;
977
1080
  const title = `${author.name}${author.title ? ` - ${author.title}` : ""}`;
978
1081
  const description = author.short_bio || author.bio || `Articles by ${author.name}`;
979
- const url = chunkFHPW7XVH_js.resolveBlogUrl(chunkFHPW7XVH_js.createBlogRoutes(options).author(author.slug), siteUrl);
1082
+ const url = chunkZR43XFUM_js.resolvePublicationUrl(chunkZR43XFUM_js.createPublicationRoutes(options).author(author.slug), siteUrl);
980
1083
  return {
981
1084
  title,
982
1085
  description,
@@ -1000,18 +1103,25 @@ function generateAuthorPageMetadata(author, options = {}) {
1000
1103
  };
1001
1104
  }
1002
1105
 
1106
+ exports.FEED_DEFAULT_ITEMS = FEED_DEFAULT_ITEMS;
1107
+ exports.NEWS_SITEMAP_MAX_URLS = NEWS_SITEMAP_MAX_URLS;
1108
+ exports.NEWS_SITEMAP_WINDOW_MS = NEWS_SITEMAP_WINDOW_MS;
1003
1109
  exports.SEO_LIMITS = SEO_LIMITS;
1004
- exports.generateAllBlogSchemas = generateAllBlogSchemas;
1110
+ exports.buildNewsSitemapXml = buildNewsSitemapXml;
1111
+ exports.cdata = cdata;
1112
+ exports.fetchArticleBySlug = fetchArticleBySlug;
1113
+ exports.fetchArticleCategories = fetchArticleCategories;
1114
+ exports.fetchRelatedArticles = fetchRelatedArticles;
1115
+ exports.generateAllArticleSchemas = generateAllArticleSchemas;
1116
+ exports.generateArticleCategoryMetadata = generateArticleCategoryMetadata;
1117
+ exports.generateArticleListSchema = generateArticleListSchema;
1118
+ exports.generateArticleMetadata = generateArticleMetadata;
1119
+ exports.generateArticleSchema = generateArticleSchema;
1120
+ exports.generateArticleSitemap = generateArticleSitemap;
1121
+ exports.generateArticleStaticParams = generateArticleStaticParams;
1005
1122
  exports.generateAtomFeed = generateAtomFeed;
1006
1123
  exports.generateAuthorPageMetadata = generateAuthorPageMetadata;
1007
1124
  exports.generateAuthorStaticParams = generateAuthorStaticParams;
1008
- exports.generateBlogCategoryMetadata = generateBlogCategoryMetadata;
1009
- exports.generateBlogIndexMetadata = generateBlogIndexMetadata;
1010
- exports.generateBlogListSchema = generateBlogListSchema;
1011
- exports.generateBlogPostMetadata = generateBlogPostMetadata;
1012
- exports.generateBlogPostSchema = generateBlogPostSchema;
1013
- exports.generateBlogSitemap = generateBlogSitemap;
1014
- exports.generateBlogStaticParams = generateBlogStaticParams;
1015
1125
  exports.generateBreadcrumbSchema = generateBreadcrumbSchema;
1016
1126
  exports.generateCategoryStaticParams = generateCategoryStaticParams;
1017
1127
  exports.generateClusterArticleSchema = generateClusterArticleSchema;
@@ -1021,24 +1131,27 @@ exports.generateClusterLandingSchema = generateClusterLandingSchema;
1021
1131
  exports.generateClusterPageMetadata = generateClusterPageMetadata;
1022
1132
  exports.generateFaqSchema = generateFaqSchema;
1023
1133
  exports.generateHowToSchema = generateHowToSchema;
1134
+ exports.generateNewsSitemap = generateNewsSitemap;
1135
+ exports.generatePublicationMetadata = generatePublicationMetadata;
1024
1136
  exports.generateRssFeed = generateRssFeed;
1137
+ exports.getAllArticleSlugs = getAllArticleSlugs;
1138
+ exports.getAllArticles = getAllArticles;
1025
1139
  exports.getAllAuthorSlugs = getAllAuthorSlugs;
1026
- exports.getAllBlogPosts = getAllBlogPosts;
1027
- exports.getAllBlogSlugs = getAllBlogSlugs;
1140
+ exports.getArticle = getArticle;
1141
+ exports.getArticleCategories = getArticleCategories;
1028
1142
  exports.getAuthorBySlug = getAuthorBySlug;
1029
1143
  exports.getAuthorPosts = getAuthorPosts;
1030
- exports.getBlogCategories = getBlogCategories;
1031
- exports.getBlogPost = getBlogPost;
1032
1144
  exports.getClusterNavigation = getClusterNavigation;
1033
1145
  exports.getPostsByCategory = getPostsByCategory;
1034
1146
  exports.getRelatedInsights = getRelatedInsights;
1035
1147
  exports.getTopicCluster = getTopicCluster;
1036
1148
  exports.getTopicClusters = getTopicClusters;
1037
1149
  exports.identifyTopicClusters = identifyTopicClusters;
1038
- exports.requireBlogPost = requireBlogPost;
1150
+ exports.recentNewsPosts = recentNewsPosts;
1151
+ exports.requireArticle = requireArticle;
1039
1152
  exports.sanitizeExcerpt = sanitizeExcerpt;
1040
- exports.validateBlogPostSeo = validateBlogPostSeo;
1153
+ exports.validateArticleSeo = validateArticleSeo;
1041
1154
  exports.validateMetaDescription = validateMetaDescription;
1042
1155
  exports.validateSeoTitle = validateSeoTitle;
1043
- //# sourceMappingURL=chunk-LMEUYRRR.js.map
1044
- //# sourceMappingURL=chunk-LMEUYRRR.js.map
1156
+ //# sourceMappingURL=chunk-NAA5J2JM.js.map
1157
+ //# sourceMappingURL=chunk-NAA5J2JM.js.map