@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,8 +1,8 @@
1
1
  /**
2
- * @sonordev/site-kit/blog - Service Callout / CTA Component
2
+ * @sonordev/site-kit/articles - Service Callout / CTA Component
3
3
  *
4
- * Renders a promotional call-to-action section within blog posts.
5
- * Automatically generated by Signal AI during blog creation, linking
4
+ * Renders a promotional call-to-action section within articles.
5
+ * Automatically generated by Signal AI during article creation, linking
6
6
  * article content to the business's relevant services.
7
7
  *
8
8
  * Two variants:
@@ -41,7 +41,7 @@ export interface ServiceCalloutProps {
41
41
  }
42
42
  export declare function ServiceCallout({ title, description, cta, url, variant, styles, unstyled, }: ServiceCalloutProps): React.JSX.Element;
43
43
  /**
44
- * Renders all service callouts for a blog post.
44
+ * Renders all service callouts for an article.
45
45
  * First callout uses 'featured' variant, subsequent use 'inline'.
46
46
  */
47
47
  export declare function ServiceCallouts({ callouts, styles, unstyled, }: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceCallout.d.ts","sourceRoot":"","sources":["../../src/articles/ServiceCallout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC/B,oDAAoD;IACpD,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA0FD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,GAAkB,EAClB,GAAG,EACH,OAAoB,EACpB,MAAM,EACN,QAAgB,GACjB,EAAE,mBAAmB,qBAsErB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAM,EACN,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnF,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,4BAgBA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @sonordev/site-kit/blog - Table of Contents Component
2
+ * @sonordev/site-kit/articles - Table of Contents Component
3
3
  */
4
4
  import React from 'react';
5
5
  import type { TableOfContentsProps } from './types';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../src/articles/TableOfContents.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAA8B,MAAM,OAAO,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAyBnD,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,SAAS,EACT,QAAY,GACb,EAAE,oBAAoB,4BAyEtB"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Scoped CSS for BlogPost and BlogList default rendering.
2
+ * Scoped CSS for Article and ArticleList default rendering.
3
3
  *
4
4
  * Injected via `<style>` in the server component output so consumers
5
- * get a polished blog with zero configuration.
5
+ * get a polished article with zero configuration.
6
6
  *
7
7
  * All colours use `--sk-*` CSS custom properties with `color-mix()` fallbacks
8
8
  * that adapt to both light and dark host sites. The host can set:
@@ -17,6 +17,6 @@
17
17
  *
18
18
  * If none are set the defaults produce a clean neutral light-mode look.
19
19
  */
20
- export declare const blogPostCss: string;
21
- export declare const blogListCss: string;
22
- //# sourceMappingURL=blog-styles.d.ts.map
20
+ export declare const articleCss: string;
21
+ export declare const articleListCss: string;
22
+ //# sourceMappingURL=article-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article-styles.d.ts","sourceRoot":"","sources":["../../src/articles/article-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,eAAO,MAAM,UAAU,QAuZf,CAAA;AAMR,eAAO,MAAM,cAAc,QAyKnB,CAAA"}
@@ -3,11 +3,11 @@
3
3
  * captions, header associations, links and table semantics survive unchanged.
4
4
  */
5
5
  /**
6
- * Single source of truth for default blog table wrappers. Safe to call twice;
6
+ * Single source of truth for default article table wrappers. Safe to call twice;
7
7
  * already wrapped tables and HTML examples are left alone. This is a layout
8
8
  * transform, not an HTML sanitizer: content still follows the host's trust policy.
9
9
  */
10
- export declare function wrapBlogTables(html: string): string;
10
+ export declare function wrapArticleTables(html: string): string;
11
11
  /** Native overflow only when content needs it; small tables retain their layout. */
12
- export declare const blogTableCss: string;
13
- //# sourceMappingURL=blog-tables.d.ts.map
12
+ export declare const articleTableCss: string;
13
+ //# sourceMappingURL=article-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article-tables.d.ts","sourceRoot":"","sources":["../../src/articles/article-tables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6DH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkDtD;AAED,oFAAoF;AACpF,eAAO,MAAM,eAAe,QAuCpB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { CSSProperties } from 'react';
2
+ import type { Article } from './types';
3
+ export interface ArticleArtwork {
4
+ src: string | undefined;
5
+ alt: string;
6
+ composed: boolean;
7
+ }
8
+ type ArtworkSource = Pick<Article, 'title' | 'featured_image' | 'featured_image_alt' | 'editorial_image' | 'editorial_image_alt'>;
9
+ /** Single source of truth for article artwork versus complete promotional cards. */
10
+ export declare function resolveArticleArtwork(post: ArtworkSource, placement?: 'article' | 'card'): ArticleArtwork;
11
+ /** Preserve generated text and graphics across every stock card surface. */
12
+ export declare function articleArtworkImageStyle(artwork: ArticleArtwork): CSSProperties | undefined;
13
+ export {};
14
+ //# sourceMappingURL=artwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artwork.d.ts","sourceRoot":"","sources":["../../src/articles/artwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,qBAAqB,CAAC,CAAA;AAEjI,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,GAAE,SAAS,GAAG,MAAe,GAAG,cAAc,CAejH;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,GAAG,SAAS,CAI3F"}
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @sonordev/site-kit/blog — Author JSON-LD (pure)
2
+ * @sonordev/site-kit/articles — Author JSON-LD (pure)
3
3
  *
4
4
  * Split out of `./server-core` on purpose. `generateAuthorSchema` is a pure
5
- * function — it maps a `BlogAuthor` to a Person schema object and touches no
5
+ * function — it maps a `ArticleAuthor` to a Person schema object and touches no
6
6
  * env, no config, and no network. It only ever lived in `server-core` because
7
7
  * the other author helpers there (`getAuthorBySlug`, `getAuthorPosts`) do fetch.
8
8
  *
9
- * `AuthorPage` is exported from the client-stamped `@sonordev/site-kit/blog`
9
+ * `AuthorPage` is exported from the client-stamped `@sonordev/site-kit/articles`
10
10
  * barrel (see `./index.ts`), so importing this one function from `server-core`
11
11
  * dragged that whole server module — its `x-api-key` fetches included — into
12
12
  * the browser bundle. Keeping the pure half here means `AuthorPage` can stay in
@@ -15,11 +15,12 @@
15
15
  * Anything added here must stay pure. If it needs an API key or a fetch, it
16
16
  * belongs in `./server-core`, not in this file.
17
17
  */
18
- import type { BlogAuthor } from './types';
18
+ import type { ArticleAuthor } from './types';
19
+ import { type PublicationRoutingOptions } from './routes';
19
20
  /**
20
21
  * Generate Person JSON-LD schema for an author page
21
22
  */
22
- export declare function generateAuthorSchema(author: BlogAuthor, options?: {
23
+ export declare function generateAuthorSchema(author: ArticleAuthor, options?: PublicationRoutingOptions & {
23
24
  siteUrl?: string;
24
25
  siteName?: string;
25
26
  }): object;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-schema.d.ts","sourceRoot":"","sources":["../../src/articles/author-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAkD,KAAK,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAEzG;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,yBAAyB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAChF,MAAM,CAyCR"}
@@ -1,4 +1,4 @@
1
- import type { BlogAuthor } from './types';
1
+ import type { ArticleAuthor } from './types';
2
2
  export interface AuthorSocialLink {
3
3
  label: string;
4
4
  href: string;
@@ -11,5 +11,5 @@ export interface AuthorSocialLink {
11
11
  * API response ever carried. Real columns win; legacy handles get their host
12
12
  * prefixed unless they are already full URLs.
13
13
  */
14
- export declare function getAuthorSocialLinks(author: Pick<BlogAuthor, 'linkedin_url' | 'twitter_url' | 'website_url' | 'website' | 'social_links'>): AuthorSocialLink[];
14
+ export declare function getAuthorSocialLinks(author: Pick<ArticleAuthor, 'linkedin_url' | 'twitter_url' | 'website_url' | 'website' | 'social_links'>): AuthorSocialLink[];
15
15
  //# sourceMappingURL=author-social.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-social.d.ts","sourceRoot":"","sources":["../../src/articles/author-social.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAKD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CACV,aAAa,EACb,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,cAAc,CAC5E,GACA,gBAAgB,EAAE,CAoBpB"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Excerpt sanitizing for blog metadata, schema and feeds.
2
+ * Excerpt sanitizing for article metadata, schema and feeds.
3
3
  *
4
4
  * Pure (no `server-only` chain) so it is unit-testable and safe to reuse.
5
5
  * Source of truth for turning a stored excerpt into display-safe prose.
@@ -8,7 +8,7 @@
8
8
  * Turn a stored excerpt into something safe to put in a meta description,
9
9
  * a schema `description`, or an RSS `<description>`.
10
10
  *
11
- * The AI blog pipeline stores content as JSON sections
11
+ * The AI article pipeline stores content as JSON sections
12
12
  * (`{"heading": "## ...", "content": "## ...\n\nIf you're asking **how**..."}`)
13
13
  * and that value has been shipping verbatim into <meta name="description">.
14
14
  * nkylawfirm.com had three live articles whose SERP snippet was raw JSON with
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excerpt.d.ts","sourceRoot":"","sources":["../../src/articles/excerpt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,SAAS,SAAM,GAAG,MAAM,CAgDvF"}
@@ -1,24 +1,24 @@
1
1
  /**
2
- * @sonordev/site-kit/blog
2
+ * @sonordev/site-kit/articles
3
3
  *
4
- * Complete blog integration for Sonor-managed content.
4
+ * Complete article integration for Sonor-managed content.
5
5
  * Create posts in the Sonor dashboard, automatically embedded in your site.
6
6
  *
7
- * Async server components (BlogLayout, BlogList, BlogPost, BlogSidebar,
8
- * RelatedPosts, the *Page helpers) come from `blog/server-ui`. This entry is
7
+ * Async server components (PublicationLayout, ArticleList, Article, PublicationSidebar,
8
+ * RelatedPosts, the *Page helpers) come from `articles/server-ui`. This entry is
9
9
  * 'use client'-stamped, so importing them from here hands Next an async
10
10
  * component across a client boundary and the route 500s in production.
11
11
  *
12
12
  * @example
13
13
  * ```tsx
14
- * // Blog index page — both from server-ui; this barrel is for client components only
15
- * import { BlogList, BlogLayout } from '@sonordev/site-kit/blog/server-ui'
14
+ * // Publication index page — both from server-ui; this barrel is for client components only
15
+ * import { ArticleList, PublicationLayout } from '@sonordev/site-kit/articles/server-ui'
16
16
  *
17
- * export default function BlogPage() {
17
+ * export default function PublicationPage() {
18
18
  * return (
19
- * <BlogLayout hero={{ title: 'Blog', subtitle: 'Latest articles' }}>
20
- * <BlogList showCategoryFilter showPagination />
21
- * </BlogLayout>
19
+ * <PublicationLayout hero={{ title: 'Blog', subtitle: 'Latest articles' }}>
20
+ * <ArticleList showCategoryFilter showPagination />
21
+ * </PublicationLayout>
22
22
  * )
23
23
  * }
24
24
  * ```
@@ -26,42 +26,37 @@
26
26
  * @example
27
27
  * ```tsx
28
28
  * // Single post page: UI from server-ui, data/metadata from server
29
- * import { BlogPost } from '@sonordev/site-kit/blog/server-ui'
30
- * import { generateBlogPostMetadata, generateBlogStaticParams } from '@sonordev/site-kit/blog/server'
29
+ * import { Article } from '@sonordev/site-kit/articles/server-ui'
30
+ * import { generateArticleMetadata, generateArticleStaticParams } from '@sonordev/site-kit/articles/server'
31
31
  *
32
- * export const generateStaticParams = generateBlogStaticParams
32
+ * export const generateStaticParams = generateArticleStaticParams
33
33
  * export async function generateMetadata({ params }) {
34
- * return generateBlogPostMetadata(params.slug, { siteName: 'My Site' })
34
+ * return generateArticleMetadata(params.slug, { siteName: 'My Site' })
35
35
  * }
36
36
  *
37
37
  * export default function Post({ params }) {
38
- * return <BlogPost slug={params.slug} showRelated showToc />
38
+ * return <Article slug={params.slug} showRelated showToc />
39
39
  * }
40
40
  * ```
41
41
  */
42
- export { BlogPost } from './BlogPost';
43
- export type { BlogPostServerProps, BlogPostStyles } from './BlogPost';
44
- export { BlogList } from './BlogList';
45
- export type { BlogListServerProps, BlogListStyles } from './BlogList';
46
- export { BlogSidebar } from './BlogSidebar';
47
- export type { BlogSidebarProps } from './BlogSidebar';
42
+ export type { ArticleServerProps, ArticleStyles } from './Article';
43
+ export type { ArticleListServerProps, ArticleListStyles } from './ArticleList';
44
+ export type { PublicationSidebarProps } from './PublicationSidebar';
48
45
  export { NewsletterWidget } from './NewsletterWidget';
49
46
  export type { NewsletterWidgetProps } from './NewsletterWidget';
50
- export { BlogLayout, BlogPage, BlogPostPage, CategoryPage } from './BlogLayout';
51
- export type { BlogLayoutProps, BlogPageProps, BlogPostPageProps, CategoryPageProps } from './BlogLayout';
47
+ export type { PublicationLayoutProps, PublicationPageProps, ArticlePageProps, CategoryPageProps } from './PublicationLayout';
52
48
  export { AuthorCard } from './AuthorCard';
53
49
  export { AuthorPage } from './AuthorPage';
54
- export { RelatedPosts } from './RelatedPosts';
55
50
  export { TableOfContents } from './TableOfContents';
56
51
  export { ServiceCallout, ServiceCallouts } from './ServiceCallout';
57
52
  export type { ServiceCalloutProps } from './ServiceCallout';
58
- export { BlogFAQ } from './BlogFAQ';
59
- export type { BlogFAQProps, FaqItem } from './BlogFAQ';
53
+ export { ArticleFAQ } from './ArticleFAQ';
54
+ export type { ArticleFAQProps, FaqItem } from './ArticleFAQ';
60
55
  export { ClusterNavigation } from './ClusterNavigation';
61
56
  export type { ClusterNavigationProps } from './ClusterNavigation';
62
57
  /**
63
58
  * `ClusterLandingPage` is deliberately NOT re-exported here — import it from
64
- * `@sonordev/site-kit/blog/server-ui`.
59
+ * `@sonordev/site-kit/articles/server-ui`.
65
60
  *
66
61
  * This barrel is stamped `'use client'` at build time (it is listed in
67
62
  * `CLIENT_ENTRIES`, `src/shared/build-entries.ts`), so every module it reaches
@@ -77,8 +72,8 @@ export type { ClusterNavigationProps } from './ClusterNavigation';
77
72
  */
78
73
  export type { ClusterLandingPageProps } from './ClusterLandingPage';
79
74
  export * from './types';
80
- export { blogCategorySlug, createBlogRoutes, resolveBlogPostUrl, resolveBlogUrl } from './routes';
81
- export type { BlogRoutePost, BlogRoutingOptions } from './routes';
82
- export { resolveBlogArtwork } from './artwork';
83
- export { addExternalLinkTargets, linkClassificationHost, normalizeSiteHost, resolveBlogSiteUrl, } from './processBlogHtml';
75
+ export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from './routes';
76
+ export type { ArticleRoutePost, PublicationRoutingOptions } from './routes';
77
+ export { resolveArticleArtwork } from './artwork';
78
+ export { addExternalLinkTargets, linkClassificationHost, normalizeSiteHost, resolvePublicationSiteUrl, } from './processArticleHtml';
84
79
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/articles/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAUH,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAElE,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAE9E,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5H,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAGnE,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACjH,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAKjD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAA"}
@@ -1,17 +1,15 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkGQF6QAQS_js = require('../chunk-GQF6QAQS.js');
5
- var chunkDO6ATNLN_js = require('../chunk-DO6ATNLN.js');
6
- var chunkW2U5SLMY_js = require('../chunk-W2U5SLMY.js');
7
- require('../chunk-HX6ZG3PP.js');
8
- var chunkK4TCEAUX_js = require('../chunk-K4TCEAUX.js');
9
- var chunkFHPW7XVH_js = require('../chunk-FHPW7XVH.js');
4
+ var chunkOGNX6JT4_js = require('../chunk-OGNX6JT4.js');
5
+ var chunkPRAHDLKT_js = require('../chunk-PRAHDLKT.js');
6
+ var chunkLWCAZDY2_js = require('../chunk-LWCAZDY2.js');
7
+ require('../chunk-EMHSHAVW.js');
8
+ var chunkKR7ATPAN_js = require('../chunk-KR7ATPAN.js');
9
+ var chunkYRCR7WY3_js = require('../chunk-YRCR7WY3.js');
10
+ var chunkZR43XFUM_js = require('../chunk-ZR43XFUM.js');
10
11
  var chunkJ7QI3GDX_js = require('../chunk-J7QI3GDX.js');
11
- require('../chunk-YN7QHLWF.js');
12
- require('../chunk-R7GHP3FY.js');
13
- require('../chunk-H5NBFNND.js');
14
- require('../chunk-SWIKKSKL.js');
12
+ require('../chunk-JONWE26J.js');
15
13
  require('../chunk-SNAQBZPT.js');
16
14
  var React = require('react');
17
15
  var jsxRuntime = require('react/jsx-runtime');
@@ -20,7 +18,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
18
 
21
19
  var React__default = /*#__PURE__*/_interopDefault(React);
22
20
 
23
- var ManagedNewsletterForm = React__default.default.lazy(() => import('../ManagedNewsletterForm-22EPZB7Z.js'));
21
+ var ManagedNewsletterForm = React__default.default.lazy(() => import('../ManagedNewsletterForm-IH3MRJOD.js'));
24
22
  function NewsletterWidget({
25
23
  title = "Subscribe to Our Newsletter",
26
24
  description = "Get the latest posts delivered straight to your inbox.",
@@ -47,12 +45,12 @@ function NewsletterWidget({
47
45
  }
48
46
  if (!onSubmit) {
49
47
  console.warn(
50
- "[Blog] NewsletterWidget needs an onSubmit callback or a formSlug \u2014 rendering nothing rather than a form that discards emails."
48
+ "[Articles] NewsletterWidget needs an onSubmit callback or a formSlug \u2014 rendering nothing rather than a form that discards emails."
51
49
  );
52
50
  return null;
53
51
  }
54
52
  return /* @__PURE__ */ jsxRuntime.jsx(
55
- chunkDO6ATNLN_js.NewsletterShell,
53
+ chunkPRAHDLKT_js.NewsletterShell,
56
54
  {
57
55
  title,
58
56
  description,
@@ -211,7 +209,7 @@ function AuthorCard({ author, showBio = true, showSocial = true, showTrustBlock
211
209
  author.company ? ` at ${author.company}` : ""
212
210
  ] }),
213
211
  showBio && author.bio && /* @__PURE__ */ jsxRuntime.jsx("p", { style: { margin: "4px 0", color: "var(--sk-text-secondary)", fontSize: 14 }, children: author.bio }),
214
- showSocial && chunkW2U5SLMY_js.getAuthorSocialLinks(author).length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: 12, marginTop: 8 }, children: chunkW2U5SLMY_js.getAuthorSocialLinks(author).map((link) => /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", children: link.label }, link.label)) })
212
+ showSocial && chunkLWCAZDY2_js.getAuthorSocialLinks(author).length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: 12, marginTop: 8 }, children: chunkLWCAZDY2_js.getAuthorSocialLinks(author).map((link) => /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", children: link.label }, link.label)) })
215
213
  ] })
216
214
  ] }),
217
215
  showTrustBlock && /* @__PURE__ */ jsxRuntime.jsx(TrustBlock, { author })
@@ -272,7 +270,7 @@ function AuthorHero({ author }) {
272
270
  );
273
271
  }
274
272
  function SocialLinks({ author }) {
275
- const links = chunkW2U5SLMY_js.getAuthorSocialLinks(author);
273
+ const links = chunkLWCAZDY2_js.getAuthorSocialLinks(author);
276
274
  if (links.length === 0) return null;
277
275
  return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: 16, marginTop: 16 }, children: links.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
278
276
  "a",
@@ -299,7 +297,7 @@ function SocialLinks({ author }) {
299
297
  )) });
300
298
  }
301
299
  function PostCard({ post, href }) {
302
- const artwork = chunkFHPW7XVH_js.resolveBlogArtwork(post);
300
+ const artwork = chunkYRCR7WY3_js.resolveArticleArtwork(post);
303
301
  const date = post.published_at ? new Date(post.published_at).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" }) : null;
304
302
  return /* @__PURE__ */ jsxRuntime.jsxs(
305
303
  "article",
@@ -320,7 +318,7 @@ function PostCard({ post, href }) {
320
318
  src: artwork.src,
321
319
  alt: artwork.alt,
322
320
  "data-sk-composed-card": artwork.composed || void 0,
323
- style: { width: "100%", height: "100%", objectFit: "cover", ...chunkFHPW7XVH_js.blogArtworkImageStyle(artwork) },
321
+ style: { width: "100%", height: "100%", objectFit: "cover", ...chunkYRCR7WY3_js.articleArtworkImageStyle(artwork) },
324
322
  loading: "lazy"
325
323
  }
326
324
  ) }),
@@ -328,8 +326,8 @@ function PostCard({ post, href }) {
328
326
  date && /* @__PURE__ */ jsxRuntime.jsx("time", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginBottom: 6 }, children: date }),
329
327
  /* @__PURE__ */ jsxRuntime.jsx("a", { href, style: { textDecoration: "none", color: "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { margin: "0 0 8px", fontSize: 18, fontWeight: 600, lineHeight: 1.3, color: "var(--sk-text-primary, #111827)" }, children: post.title }) }),
330
328
  post.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { style: { margin: 0, fontSize: 14, lineHeight: 1.6, color: "var(--sk-text-secondary, #4b5563)", flex: 1 }, children: post.excerpt }),
331
- chunkW2U5SLMY_js.readingTimeMinutes(post) && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginTop: 12 }, children: [
332
- chunkW2U5SLMY_js.readingTimeMinutes(post),
329
+ chunkLWCAZDY2_js.readingTimeMinutes(post) && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginTop: 12 }, children: [
330
+ chunkLWCAZDY2_js.readingTimeMinutes(post),
333
331
  " min read"
334
332
  ] })
335
333
  ] })
@@ -338,8 +336,8 @@ function PostCard({ post, href }) {
338
336
  );
339
337
  }
340
338
  function AuthorPage({ author, posts, basePath, routing }) {
341
- const routes = chunkFHPW7XVH_js.createBlogRoutes({ basePath, ...routing });
342
- const schema = chunkFHPW7XVH_js.generateAuthorSchema(author);
339
+ const routes = chunkZR43XFUM_js.createPublicationRoutes({ basePath, ...routing });
340
+ const schema = chunkYRCR7WY3_js.generateAuthorSchema(author);
343
341
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sk-author-page", children: [
344
342
  /* @__PURE__ */ jsxRuntime.jsx(
345
343
  "script",
@@ -456,89 +454,57 @@ function TableOfContents({
456
454
  ] });
457
455
  }
458
456
 
459
- Object.defineProperty(exports, "BlogFAQ", {
457
+ Object.defineProperty(exports, "ArticleFAQ", {
460
458
  enumerable: true,
461
- get: function () { return chunkGQF6QAQS_js.BlogFAQ; }
462
- });
463
- Object.defineProperty(exports, "BlogLayout", {
464
- enumerable: true,
465
- get: function () { return chunkW2U5SLMY_js.BlogLayout; }
466
- });
467
- Object.defineProperty(exports, "BlogList", {
468
- enumerable: true,
469
- get: function () { return chunkW2U5SLMY_js.BlogList; }
470
- });
471
- Object.defineProperty(exports, "BlogPage", {
472
- enumerable: true,
473
- get: function () { return chunkW2U5SLMY_js.BlogPage; }
474
- });
475
- Object.defineProperty(exports, "BlogPost", {
476
- enumerable: true,
477
- get: function () { return chunkW2U5SLMY_js.BlogPost; }
478
- });
479
- Object.defineProperty(exports, "BlogPostPage", {
480
- enumerable: true,
481
- get: function () { return chunkW2U5SLMY_js.BlogPostPage; }
482
- });
483
- Object.defineProperty(exports, "BlogSidebar", {
484
- enumerable: true,
485
- get: function () { return chunkW2U5SLMY_js.BlogSidebar; }
486
- });
487
- Object.defineProperty(exports, "CategoryPage", {
488
- enumerable: true,
489
- get: function () { return chunkW2U5SLMY_js.CategoryPage; }
459
+ get: function () { return chunkOGNX6JT4_js.ArticleFAQ; }
490
460
  });
491
461
  Object.defineProperty(exports, "ClusterNavigation", {
492
462
  enumerable: true,
493
- get: function () { return chunkW2U5SLMY_js.ClusterNavigation; }
494
- });
495
- Object.defineProperty(exports, "RelatedPosts", {
496
- enumerable: true,
497
- get: function () { return chunkW2U5SLMY_js.RelatedPosts; }
463
+ get: function () { return chunkLWCAZDY2_js.ClusterNavigation; }
498
464
  });
499
465
  Object.defineProperty(exports, "ServiceCallout", {
500
466
  enumerable: true,
501
- get: function () { return chunkW2U5SLMY_js.ServiceCallout; }
467
+ get: function () { return chunkLWCAZDY2_js.ServiceCallout; }
502
468
  });
503
469
  Object.defineProperty(exports, "ServiceCallouts", {
504
470
  enumerable: true,
505
- get: function () { return chunkW2U5SLMY_js.ServiceCallouts; }
471
+ get: function () { return chunkLWCAZDY2_js.ServiceCallouts; }
506
472
  });
507
473
  Object.defineProperty(exports, "addExternalLinkTargets", {
508
474
  enumerable: true,
509
- get: function () { return chunkK4TCEAUX_js.addExternalLinkTargets; }
475
+ get: function () { return chunkKR7ATPAN_js.addExternalLinkTargets; }
510
476
  });
511
477
  Object.defineProperty(exports, "linkClassificationHost", {
512
478
  enumerable: true,
513
- get: function () { return chunkK4TCEAUX_js.linkClassificationHost; }
479
+ get: function () { return chunkKR7ATPAN_js.linkClassificationHost; }
514
480
  });
515
481
  Object.defineProperty(exports, "normalizeSiteHost", {
516
482
  enumerable: true,
517
- get: function () { return chunkK4TCEAUX_js.normalizeSiteHost; }
483
+ get: function () { return chunkKR7ATPAN_js.normalizeSiteHost; }
518
484
  });
519
- Object.defineProperty(exports, "resolveBlogSiteUrl", {
485
+ Object.defineProperty(exports, "resolvePublicationSiteUrl", {
520
486
  enumerable: true,
521
- get: function () { return chunkK4TCEAUX_js.resolveBlogSiteUrl; }
487
+ get: function () { return chunkKR7ATPAN_js.resolvePublicationSiteUrl; }
522
488
  });
523
- Object.defineProperty(exports, "blogCategorySlug", {
489
+ Object.defineProperty(exports, "resolveArticleArtwork", {
524
490
  enumerable: true,
525
- get: function () { return chunkFHPW7XVH_js.blogCategorySlug; }
491
+ get: function () { return chunkYRCR7WY3_js.resolveArticleArtwork; }
526
492
  });
527
- Object.defineProperty(exports, "createBlogRoutes", {
493
+ Object.defineProperty(exports, "articleCategorySlug", {
528
494
  enumerable: true,
529
- get: function () { return chunkFHPW7XVH_js.createBlogRoutes; }
495
+ get: function () { return chunkZR43XFUM_js.articleCategorySlug; }
530
496
  });
531
- Object.defineProperty(exports, "resolveBlogArtwork", {
497
+ Object.defineProperty(exports, "createPublicationRoutes", {
532
498
  enumerable: true,
533
- get: function () { return chunkFHPW7XVH_js.resolveBlogArtwork; }
499
+ get: function () { return chunkZR43XFUM_js.createPublicationRoutes; }
534
500
  });
535
- Object.defineProperty(exports, "resolveBlogPostUrl", {
501
+ Object.defineProperty(exports, "resolveArticleUrl", {
536
502
  enumerable: true,
537
- get: function () { return chunkFHPW7XVH_js.resolveBlogPostUrl; }
503
+ get: function () { return chunkZR43XFUM_js.resolveArticleUrl; }
538
504
  });
539
- Object.defineProperty(exports, "resolveBlogUrl", {
505
+ Object.defineProperty(exports, "resolvePublicationUrl", {
540
506
  enumerable: true,
541
- get: function () { return chunkFHPW7XVH_js.resolveBlogUrl; }
507
+ get: function () { return chunkZR43XFUM_js.resolvePublicationUrl; }
542
508
  });
543
509
  exports.AuthorCard = AuthorCard;
544
510
  exports.AuthorPage = AuthorPage;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/articles/NewsletterWidget.tsx","../../src/articles/AuthorCard.tsx","../../src/articles/AuthorPage.tsx","../../src/articles/TableOfContents.tsx"],"names":["React","useState","jsx","Suspense","NewsletterShell","jsxs","getAuthorSocialLinks","resolveArticleArtwork","articleArtworkImageStyle","readingTimeMinutes","createPublicationRoutes","generateAuthorSchema","safeJsonLd","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["'use client'\n\n/**\n * @sonordev/site-kit article — newsletter signup widget\n *\n * Two working modes (the old version rendered a form whose submit handler\n * discarded the email):\n *\n * - `onSubmit`: the site owns delivery — we await the callback.\n * - `formSlug`: the widget drives the managed-forms rail (useForm), so\n * submissions inherit Sonor's newsletter routing (email_subscribers),\n * honeypot, reCAPTCHA, and attribution for free.\n *\n * `onSubmit` wins when both are set. With neither, the widget renders\n * nothing and warns — a dead form that swallows emails must not resurrect.\n *\n * Lives in its own module (not PublicationSidebar.tsx) on purpose: it needs hooks,\n * and PublicationSidebar is also bundled into the un-stamped server entry\n * articles/server-ui, where hooks would enter the react-server graph.\n */\n\nimport React, { Suspense, useState } from 'react'\nimport { NewsletterShell } from './NewsletterShell'\n\n// Lazy: the managed-forms mode drags the whole forms engine (useForm,\n// submit rail, sonorFetch, site token) — ~10KB gzipped — which most article\n// consumers never render. The dynamic import keeps it out of the eager\n// article bundle; tsup stamps the split chunk 'use client'.\nconst ManagedNewsletterForm = React.lazy(() => import('./ManagedNewsletterForm'))\n\nexport interface NewsletterWidgetProps {\n title?: string\n description?: string\n buttonText?: string\n /** Site-owned delivery. Wins over formSlug when both are set. */\n onSubmit?: (email: string) => Promise<void>\n /** Slug of a managed Sonor form (newsletter routing) to submit through. */\n formSlug?: string\n successMessage?: string\n}\n\nexport function NewsletterWidget({\n title = 'Subscribe to Our Newsletter',\n description = 'Get the latest posts delivered straight to your inbox.',\n buttonText = 'Subscribe',\n onSubmit,\n formSlug,\n successMessage = \"You're subscribed — thanks!\",\n}: NewsletterWidgetProps) {\n const [email, setEmail] = useState('')\n const [status, setStatus] = useState<'idle' | 'submitting' | 'success' | 'error'>('idle')\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n\n if (!onSubmit && formSlug) {\n return (\n <Suspense fallback={null}>\n <ManagedNewsletterForm\n key={formSlug}\n formSlug={formSlug}\n title={title}\n description={description}\n buttonText={buttonText}\n successMessage={successMessage}\n />\n </Suspense>\n )\n }\n\n if (!onSubmit) {\n console.warn(\n '[Articles] NewsletterWidget needs an onSubmit callback or a formSlug — rendering nothing rather than a form that discards emails.'\n )\n return null\n }\n\n return (\n <NewsletterShell\n title={title}\n description={description}\n buttonText={buttonText}\n email={email}\n onEmailChange={setEmail}\n onFormSubmit={(e) => {\n e.preventDefault()\n setStatus('submitting')\n setErrorMessage(null)\n onSubmit(email)\n .then(() => setStatus('success'))\n .catch((err) => {\n setStatus('error')\n setErrorMessage(err instanceof Error ? err.message : null)\n })\n }}\n status={status}\n successMessage={successMessage}\n errorMessage={errorMessage}\n />\n )\n}\n","/**\n * @sonordev/site-kit/articles - Author Card Component\n */\n\nimport React from 'react'\nimport type { AuthorCardProps, ArticleAuthor } from './types'\nimport { getAuthorSocialLinks } from './author-social'\n\n// ============================================================================\n// Trust Block (E-E-A-T)\n// ============================================================================\n\nfunction TrustBlock({ author }: { author: ArticleAuthor }) {\n const hasYears = typeof author.years_experience === 'number' && author.years_experience > 0\n const hasCredentials = author.credentials && author.credentials.length > 0\n const hasExpertise = author.expertise_areas && author.expertise_areas.length > 0\n const hasPublications = author.featured_publications && author.featured_publications.length > 0\n const hasAwards = author.awards && author.awards.length > 0\n const isVerified = author.is_subject_matter_expert || author.has_verified_credentials\n\n const hasAnything = hasYears || hasCredentials || hasExpertise || hasPublications || hasAwards || isVerified\n if (!hasAnything) return null\n\n return (\n <div\n className=\"sk-author-trust\"\n style={{\n marginTop: 16,\n padding: 16,\n borderRadius: 10,\n border: '1px solid var(--sk-border, #e5e7eb)',\n background: 'var(--sk-surface, #f9fafb)',\n }}\n >\n <h5\n style={{\n margin: '0 0 12px',\n fontSize: 13,\n fontWeight: 600,\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n color: 'var(--sk-text-tertiary, #6b7280)',\n }}\n >\n Why Trust This Author\n </h5>\n\n {/* Verified badge + years */}\n <div style={{ display: 'flex', flexWrap: 'wrap' as const, gap: 8, marginBottom: hasCredentials || hasExpertise || hasPublications || hasAwards ? 12 : 0 }}>\n {isVerified && (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 4,\n padding: '4px 10px',\n borderRadius: 9999,\n fontSize: 12,\n fontWeight: 600,\n background: 'rgba(20, 184, 166, 0.1)',\n color: 'rgb(13, 148, 136)',\n border: '1px solid rgba(20, 184, 166, 0.2)',\n }}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n Verified Expert\n </span>\n )}\n {hasYears && (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n padding: '4px 10px',\n borderRadius: 9999,\n fontSize: 12,\n fontWeight: 600,\n background: 'rgba(99, 102, 241, 0.1)',\n color: 'rgb(79, 70, 229)',\n border: '1px solid rgba(99, 102, 241, 0.2)',\n }}\n >\n {author.years_experience}+ Years Experience\n </span>\n )}\n </div>\n\n {/* Credentials */}\n {hasCredentials && (\n <div style={{ marginBottom: 10 }}>\n <span style={{ fontSize: 12, fontWeight: 600, color: 'var(--sk-text-secondary, #374151)' }}>Credentials</span>\n <ul style={{ margin: '4px 0 0', padding: '0 0 0 18px', fontSize: 13, color: 'var(--sk-text-secondary, #4b5563)', lineHeight: 1.6 }}>\n {author.credentials!.map((c, i) => (\n <li key={i}>{c}</li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Expertise pills */}\n {hasExpertise && (\n <div style={{ marginBottom: 10 }}>\n <span style={{ fontSize: 12, fontWeight: 600, color: 'var(--sk-text-secondary, #374151)', display: 'block', marginBottom: 6 }}>Expertise</span>\n <div style={{ display: 'flex', flexWrap: 'wrap' as const, gap: 6 }}>\n {author.expertise_areas!.map((area, i) => (\n <span\n key={i}\n style={{\n padding: '3px 10px',\n borderRadius: 9999,\n fontSize: 12,\n background: 'var(--sk-pill-bg, #e5e7eb)',\n color: 'var(--sk-text-secondary, #374151)',\n }}\n >\n {area}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {/* Featured publications */}\n {hasPublications && (\n <div style={{ marginBottom: 10 }}>\n <span style={{ fontSize: 12, fontWeight: 600, color: 'var(--sk-text-secondary, #374151)' }}>Featured In</span>\n <ul style={{ margin: '4px 0 0', padding: '0 0 0 18px', fontSize: 13, color: 'var(--sk-text-secondary, #4b5563)', lineHeight: 1.6 }}>\n {author.featured_publications!.map((pub, i) => (\n <li key={i}>{pub}</li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Awards */}\n {hasAwards && (\n <div>\n <span style={{ fontSize: 12, fontWeight: 600, color: 'var(--sk-text-secondary, #374151)' }}>Awards</span>\n <ul style={{ margin: '4px 0 0', padding: '0 0 0 18px', fontSize: 13, color: 'var(--sk-text-secondary, #4b5563)', lineHeight: 1.6 }}>\n {author.awards!.map((award, i) => (\n <li key={i}>{award}</li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )\n}\n\n// ============================================================================\n// AuthorCard\n// ============================================================================\n\nexport function AuthorCard({ author, showBio = true, showSocial = true, showTrustBlock = false, className }: AuthorCardProps) {\n return (\n <div className={className} style={{ display: 'flex', flexDirection: 'column' as const }}>\n <div style={{ display: 'flex', gap: 16, alignItems: 'flex-start' }}>\n {author.avatar_url && (\n <img\n src={author.avatar_url}\n alt={author.name}\n style={{\n width: 64,\n height: 64,\n borderRadius: '50%',\n objectFit: 'cover' as const,\n }}\n />\n )}\n <div>\n <h4 style={{ margin: 0 }}>{author.name}</h4>\n {author.title && (\n <p style={{ margin: '2px 0 0', fontSize: 13, color: 'var(--sk-text-tertiary, #6b7280)' }}>\n {author.title}{author.company ? ` at ${author.company}` : ''}\n </p>\n )}\n {showBio && author.bio && (\n <p style={{ margin: '4px 0', color: 'var(--sk-text-secondary)', fontSize: 14 }}>{author.bio}</p>\n )}\n {showSocial && getAuthorSocialLinks(author).length > 0 && (\n <div style={{ display: 'flex', gap: 12, marginTop: 8 }}>\n {getAuthorSocialLinks(author).map((link) => (\n <a key={link.label} href={link.href} target=\"_blank\" rel=\"noopener noreferrer\">\n {link.label}\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {showTrustBlock && <TrustBlock author={author} />}\n </div>\n )\n}\n\nexport { TrustBlock }\n","/**\n * @sonordev/site-kit/articles - Author Page Component (Server Component)\n *\n * Full author profile page with hero, trust block, social links, and articles grid.\n */\n\nimport React from 'react'\nimport type { AuthorPageProps, ArticleAuthor, Article } from './types'\nimport { TrustBlock } from './AuthorCard'\n// From './author-schema', NOT './server-core' — this component is exported from\n// the client-stamped `@sonordev/site-kit/articles` barrel, and server-core's fetches\n// carry the raw `x-api-key`. See ./author-schema for the full rationale.\nimport { generateAuthorSchema } from './author-schema'\nimport { readingTimeMinutes } from './reading-time'\nimport { getAuthorSocialLinks } from './author-social'\nimport { safeJsonLd } from '../seo/safeJsonLd'\nimport { articleArtworkImageStyle, resolveArticleArtwork } from './artwork'\nimport { createPublicationRoutes } from './routes'\n\n// ============================================================================\n// Sub-components\n// ============================================================================\n\nfunction AuthorHero({ author }: { author: ArticleAuthor }) {\n return (\n <header\n className=\"sk-author-hero\"\n style={{\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n textAlign: 'center' as const,\n padding: '48px 24px 32px',\n }}\n >\n {author.avatar_url && (\n <img\n src={author.avatar_url}\n alt={author.name}\n width={120}\n height={120}\n style={{\n width: 120,\n height: 120,\n borderRadius: '50%',\n objectFit: 'cover' as const,\n marginBottom: 20,\n border: '3px solid var(--sk-border, #e5e7eb)',\n }}\n />\n )}\n <h1 style={{ margin: 0, fontSize: 32, fontWeight: 700, color: 'var(--sk-text-primary, #111827)' }}>\n {author.name}\n </h1>\n {(author.title || author.company) && (\n <p style={{ margin: '6px 0 0', fontSize: 16, color: 'var(--sk-text-secondary, #4b5563)' }}>\n {author.title}{author.title && author.company ? ' at ' : ''}{author.company}\n </p>\n )}\n {author.bio && (\n <p\n style={{\n margin: '16px auto 0',\n maxWidth: 640,\n fontSize: 15,\n lineHeight: 1.7,\n color: 'var(--sk-text-secondary, #4b5563)',\n }}\n >\n {author.bio}\n </p>\n )}\n\n {/* Social links */}\n <SocialLinks author={author} />\n </header>\n )\n}\n\nfunction SocialLinks({ author }: { author: ArticleAuthor }) {\n const links = getAuthorSocialLinks(author)\n\n if (links.length === 0) return null\n\n return (\n <div style={{ display: 'flex', gap: 16, marginTop: 16 }}>\n {links.map((link) => (\n <a\n key={link.label}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n padding: '6px 14px',\n borderRadius: 8,\n fontSize: 13,\n fontWeight: 500,\n color: 'rgb(13, 148, 136)',\n background: 'rgba(20, 184, 166, 0.08)',\n border: '1px solid rgba(20, 184, 166, 0.15)',\n textDecoration: 'none',\n }}\n >\n {link.label}\n </a>\n ))}\n </div>\n )\n}\n\nfunction PostCard({ post, href }: { post: Article; href: string }) {\n const artwork = resolveArticleArtwork(post)\n const date = post.published_at\n ? new Date(post.published_at).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' })\n : null\n\n return (\n <article\n className=\"sk-author-post-card\"\n style={{\n borderRadius: 12,\n border: '1px solid var(--sk-border, #e5e7eb)',\n overflow: 'hidden',\n background: 'var(--sk-card-bg, #fff)',\n display: 'flex',\n flexDirection: 'column' as const,\n }}\n >\n {artwork.src && (\n <a href={href} style={{ display: 'block', overflow: 'hidden', aspectRatio: artwork.composed ? undefined : '16/9' }}>\n <img\n src={artwork.src}\n alt={artwork.alt}\n data-sk-composed-card={artwork.composed || undefined}\n style={{ width: '100%', height: '100%', objectFit: 'cover' as const, ...articleArtworkImageStyle(artwork) }}\n loading=\"lazy\"\n />\n </a>\n )}\n <div style={{ padding: 20, flex: 1, display: 'flex', flexDirection: 'column' as const }}>\n {date && (\n <time style={{ fontSize: 12, color: 'var(--sk-text-tertiary, #6b7280)', marginBottom: 6 }}>{date}</time>\n )}\n <a href={href} style={{ textDecoration: 'none', color: 'inherit' }}>\n <h3 style={{ margin: '0 0 8px', fontSize: 18, fontWeight: 600, lineHeight: 1.3, color: 'var(--sk-text-primary, #111827)' }}>\n {post.title}\n </h3>\n </a>\n {post.excerpt && (\n <p style={{ margin: 0, fontSize: 14, lineHeight: 1.6, color: 'var(--sk-text-secondary, #4b5563)', flex: 1 }}>\n {post.excerpt}\n </p>\n )}\n {readingTimeMinutes(post) && (\n <span style={{ fontSize: 12, color: 'var(--sk-text-tertiary, #6b7280)', marginTop: 12 }}>\n {readingTimeMinutes(post)} min read\n </span>\n )}\n </div>\n </article>\n )\n}\n\n// ============================================================================\n// AuthorPage\n// ============================================================================\n\nexport function AuthorPage({ author, posts, basePath, routing }: AuthorPageProps) {\n const routes = createPublicationRoutes({ basePath, ...routing })\n const schema = generateAuthorSchema(author)\n\n return (\n <div className=\"sk-author-page\">\n {/* JSON-LD */}\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{ __html: safeJsonLd(schema) }}\n />\n\n {/* Hero */}\n <AuthorHero author={author} />\n\n {/* Trust block */}\n <div style={{ maxWidth: 640, margin: '0 auto', padding: '0 24px' }}>\n <TrustBlock author={author} />\n </div>\n\n {/* Articles */}\n {posts.length > 0 && (\n <section style={{ maxWidth: 1080, margin: '40px auto 0', padding: '0 24px 48px' }}>\n <h2 style={{ fontSize: 22, fontWeight: 600, marginBottom: 24, color: 'var(--sk-text-primary, #111827)' }}>\n Articles by {author.name}\n {typeof author.post_count === 'number' && (\n <span style={{ fontWeight: 400, fontSize: 15, color: 'var(--sk-text-tertiary, #6b7280)', marginLeft: 8 }}>\n ({author.post_count})\n </span>\n )}\n </h2>\n <div\n className=\"sk-author-posts-grid\"\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 1fr))',\n gap: 24,\n }}\n >\n {posts.map((post) => (\n <PostCard key={post.id} post={post} href={routes.post(post)} />\n ))}\n </div>\n </section>\n )}\n </div>\n )\n}\n","/**\n * @sonordev/site-kit/articles - Table of Contents Component\n */\n\n'use client'\n\nimport React, { useState, useEffect } from 'react'\nimport type { TableOfContentsProps } from './types'\n\ninterface TocItem {\n id: string\n text: string\n level: number\n}\n\nfunction parseHeadings(content: string): TocItem[] {\n // Extract headings from HTML content\n const headingRegex = /<h([2-4])[^>]*id=\"([^\"]*)\"[^>]*>(.*?)<\\/h[2-4]>/gi\n const items: TocItem[] = []\n let match\n\n while ((match = headingRegex.exec(content)) !== null) {\n items.push({\n level: parseInt(match[1]),\n id: match[2],\n text: match[3].replace(/<[^>]*>/g, ''), // Strip any nested HTML\n })\n }\n\n return items\n}\n\nexport function TableOfContents({\n content,\n className,\n maxDepth = 3,\n}: TableOfContentsProps) {\n const [activeId, setActiveId] = useState<string>('')\n const items = parseHeadings(content).filter((item) => item.level <= maxDepth)\n\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n setActiveId(entry.target.id)\n }\n })\n },\n {\n rootMargin: '-20% 0% -35% 0%',\n threshold: 0,\n }\n )\n\n // Observe all headings\n items.forEach((item) => {\n const element = document.getElementById(item.id)\n if (element) {\n observer.observe(element)\n }\n })\n\n return () => observer.disconnect()\n }, [items])\n\n if (items.length === 0) return null\n\n const handleClick = (id: string) => {\n const element = document.getElementById(id)\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' })\n }\n }\n\n return (\n <nav className={className} aria-label=\"Table of contents\">\n <h4 style={{ margin: '0 0 12px', fontSize: 14, fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.05em' }}>\n On This Page\n </h4>\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {items.map((item) => (\n <li\n key={item.id}\n style={{\n paddingLeft: (item.level - 2) * 12,\n marginBottom: 8,\n }}\n >\n <button\n onClick={() => handleClick(item.id)}\n style={{\n all: 'unset',\n cursor: 'pointer',\n fontSize: 14,\n color: activeId === item.id ? 'var(--sk-primary-hover)' : 'var(--sk-text-secondary)',\n fontWeight: activeId === item.id ? 500 : 400,\n transition: 'color 0.2s',\n }}\n >\n {item.text}\n </button>\n </li>\n ))}\n </ul>\n </nav>\n )\n}\n"]}