@sonordev/site-kit 6.3.5 → 6.4.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 (267) hide show
  1. package/agent-manifest.json +8 -2
  2. package/dist/{AnalyticsProvider-2A75HPK6.mjs → AnalyticsProvider-4K5T7OQ7.mjs} +6 -6
  3. package/dist/{AnalyticsProvider-2A75HPK6.mjs.map → AnalyticsProvider-4K5T7OQ7.mjs.map} +1 -1
  4. package/dist/{AnalyticsProvider-2H3POGSJ.js → AnalyticsProvider-QXZN5O6D.js} +10 -10
  5. package/dist/{AnalyticsProvider-2H3POGSJ.js.map → AnalyticsProvider-QXZN5O6D.js.map} +1 -1
  6. package/dist/{ArticleViewTracker-75BLDTHR.mjs → ArticleViewTracker-BUG2TOHS.mjs} +5 -5
  7. package/dist/{ArticleViewTracker-75BLDTHR.mjs.map → ArticleViewTracker-BUG2TOHS.mjs.map} +1 -1
  8. package/dist/{ArticleViewTracker-R3LNZ4A4.js → ArticleViewTracker-FFMHR7AY.js} +6 -6
  9. package/dist/{ArticleViewTracker-R3LNZ4A4.js.map → ArticleViewTracker-FFMHR7AY.js.map} +1 -1
  10. package/dist/{ChatWidget-F6UWIR7I.mjs → ChatWidget-CRQPBDEF.mjs} +7 -7
  11. package/dist/{ChatWidget-F6UWIR7I.mjs.map → ChatWidget-CRQPBDEF.mjs.map} +1 -1
  12. package/dist/{ChatWidget-BLZSLYN2.js → ChatWidget-XFYLVXAX.js} +10 -10
  13. package/dist/{ChatWidget-BLZSLYN2.js.map → ChatWidget-XFYLVXAX.js.map} +1 -1
  14. package/dist/EngageWidget-S234YAT2.js +21 -0
  15. package/dist/{EngageWidget-YONW3W3Z.js.map → EngageWidget-S234YAT2.js.map} +1 -1
  16. package/dist/EngageWidget-SQU4T7CI.mjs +12 -0
  17. package/dist/{EngageWidget-4WB74GQR.mjs.map → EngageWidget-SQU4T7CI.mjs.map} +1 -1
  18. package/dist/{FileField-GXNFYVSY.mjs → FileField-HNEBEBLB.mjs} +5 -5
  19. package/dist/{FileField-GXNFYVSY.mjs.map → FileField-HNEBEBLB.mjs.map} +1 -1
  20. package/dist/{FileField-KYQVN4XB.js → FileField-XG4EYAZW.js} +6 -6
  21. package/dist/{FileField-KYQVN4XB.js.map → FileField-XG4EYAZW.js.map} +1 -1
  22. package/dist/{FormSpotlight-ZOSI7MXH.js → FormSpotlight-IODREOPN.js} +9 -9
  23. package/dist/{FormSpotlight-ZOSI7MXH.js.map → FormSpotlight-IODREOPN.js.map} +1 -1
  24. package/dist/{FormSpotlight-F4YZOWHA.mjs → FormSpotlight-VKD774PZ.mjs} +3 -3
  25. package/dist/{FormSpotlight-F4YZOWHA.mjs.map → FormSpotlight-VKD774PZ.mjs.map} +1 -1
  26. package/dist/{FormStage-DICKOW7R.js → FormStage-37KKZQH4.js} +9 -9
  27. package/dist/{FormStage-DICKOW7R.js.map → FormStage-37KKZQH4.js.map} +1 -1
  28. package/dist/{FormStage-TIQ43MF6.mjs → FormStage-PRZNRYNC.mjs} +3 -3
  29. package/dist/{FormStage-TIQ43MF6.mjs.map → FormStage-PRZNRYNC.mjs.map} +1 -1
  30. package/dist/ManagedForm-4PZOCKCV.mjs +16 -0
  31. package/dist/{ManagedForm-KKJOIEFW.mjs.map → ManagedForm-4PZOCKCV.mjs.map} +1 -1
  32. package/dist/ManagedForm-JCMEE626.js +25 -0
  33. package/dist/{ManagedForm-ZUPV4DPQ.js.map → ManagedForm-JCMEE626.js.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-NFV2JGNA.js → ManagedNewsletterForm-CTC33B2U.js} +7 -7
  35. package/dist/{ManagedNewsletterForm-NFV2JGNA.js.map → ManagedNewsletterForm-CTC33B2U.js.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-JOTIWXLQ.mjs → ManagedNewsletterForm-KMZG24OE.mjs} +6 -6
  37. package/dist/{ManagedNewsletterForm-JOTIWXLQ.mjs.map → ManagedNewsletterForm-KMZG24OE.mjs.map} +1 -1
  38. package/dist/{SignalCore-DLRQTFKK.js → SignalCore-YHT7WPXV.js} +11 -11
  39. package/dist/{SignalCore-DLRQTFKK.js.map → SignalCore-YHT7WPXV.js.map} +1 -1
  40. package/dist/{SignalCore-MUN44S6K.mjs → SignalCore-YIPKKIUG.mjs} +5 -5
  41. package/dist/{SignalCore-MUN44S6K.mjs.map → SignalCore-YIPKKIUG.mjs.map} +1 -1
  42. package/dist/SitemapSync-GN4OXIM2.js +18 -0
  43. package/dist/{SitemapSync-5TKLHXFL.js.map → SitemapSync-GN4OXIM2.js.map} +1 -1
  44. package/dist/SitemapSync-NG763CGN.mjs +9 -0
  45. package/dist/{SitemapSync-BIWCTMRJ.mjs.map → SitemapSync-NG763CGN.mjs.map} +1 -1
  46. package/dist/analytics/AnalyticsProvider.d.ts +0 -6
  47. package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
  48. package/dist/analytics/WebVitals.d.ts +4 -1
  49. package/dist/analytics/WebVitals.d.ts.map +1 -1
  50. package/dist/analytics/index.js +9 -9
  51. package/dist/analytics/index.mjs +4 -4
  52. package/dist/analytics/measurement-context.d.ts +13 -0
  53. package/dist/analytics/measurement-context.d.ts.map +1 -0
  54. package/dist/analytics/page-observation.d.ts +39 -0
  55. package/dist/analytics/page-observation.d.ts.map +1 -0
  56. package/dist/articles/AuthorPage.d.ts +1 -1
  57. package/dist/articles/AuthorPage.d.ts.map +1 -1
  58. package/dist/articles/author-schema.d.ts +59 -13
  59. package/dist/articles/author-schema.d.ts.map +1 -1
  60. package/dist/articles/index.js +24 -23
  61. package/dist/articles/index.js.map +1 -1
  62. package/dist/articles/index.mjs +12 -11
  63. package/dist/articles/index.mjs.map +1 -1
  64. package/dist/articles/routes.d.ts +9 -0
  65. package/dist/articles/routes.d.ts.map +1 -1
  66. package/dist/articles/server-core.d.ts +5 -2
  67. package/dist/articles/server-core.d.ts.map +1 -1
  68. package/dist/articles/server-ui.js +45 -45
  69. package/dist/articles/server-ui.mjs +8 -8
  70. package/dist/articles/server.d.ts +5 -2
  71. package/dist/articles/server.d.ts.map +1 -1
  72. package/dist/articles/server.js +72 -56
  73. package/dist/articles/server.mjs +3 -3
  74. package/dist/articles/types.d.ts +17 -0
  75. package/dist/articles/types.d.ts.map +1 -1
  76. package/dist/{chunk-H6F7T5Z6.mjs → chunk-24LFAQEG.mjs} +5 -5
  77. package/dist/{chunk-H6F7T5Z6.mjs.map → chunk-24LFAQEG.mjs.map} +1 -1
  78. package/dist/chunk-3AOKYAZ2.js +135 -0
  79. package/dist/chunk-3AOKYAZ2.js.map +1 -0
  80. package/dist/{chunk-QII2TNKS.mjs → chunk-4C3INRHE.mjs} +72 -15
  81. package/dist/chunk-4C3INRHE.mjs.map +1 -0
  82. package/dist/{chunk-ZR43XFUM.js → chunk-55J2KE7D.js} +3 -3
  83. package/dist/chunk-55J2KE7D.js.map +1 -0
  84. package/dist/{chunk-SIQX3GL3.mjs → chunk-5BARLEAI.mjs} +3 -3
  85. package/dist/{chunk-SIQX3GL3.mjs.map → chunk-5BARLEAI.mjs.map} +1 -1
  86. package/dist/{chunk-HTCMZAXW.mjs → chunk-5T3J24K4.mjs} +4 -4
  87. package/dist/{chunk-HTCMZAXW.mjs.map → chunk-5T3J24K4.mjs.map} +1 -1
  88. package/dist/{chunk-RWERWLRM.js → chunk-5W4S7XQD.js} +3 -3
  89. package/dist/{chunk-RWERWLRM.js.map → chunk-5W4S7XQD.js.map} +1 -1
  90. package/dist/{chunk-6DCAMW62.mjs → chunk-6C47333H.mjs} +3 -3
  91. package/dist/chunk-6C47333H.mjs.map +1 -0
  92. package/dist/{chunk-2OA274JZ.mjs → chunk-6QPKC6XP.mjs} +3 -3
  93. package/dist/{chunk-2OA274JZ.mjs.map → chunk-6QPKC6XP.mjs.map} +1 -1
  94. package/dist/{chunk-R7XCEUEI.mjs → chunk-BI7DH42Z.mjs} +4 -4
  95. package/dist/{chunk-R7XCEUEI.mjs.map → chunk-BI7DH42Z.mjs.map} +1 -1
  96. package/dist/{chunk-ID4RGBQT.js → chunk-C7J4XLBN.js} +15 -15
  97. package/dist/{chunk-ID4RGBQT.js.map → chunk-C7J4XLBN.js.map} +1 -1
  98. package/dist/{chunk-LWCAZDY2.js → chunk-CDRQYJUT.js} +4 -4
  99. package/dist/{chunk-LWCAZDY2.js.map → chunk-CDRQYJUT.js.map} +1 -1
  100. package/dist/chunk-CIB3RHNZ.js +8 -0
  101. package/dist/{chunk-LSB3CWSB.js.map → chunk-CIB3RHNZ.js.map} +1 -1
  102. package/dist/{chunk-NCLF7RUL.js → chunk-CUZ3I6CO.js} +5 -5
  103. package/dist/{chunk-NCLF7RUL.js.map → chunk-CUZ3I6CO.js.map} +1 -1
  104. package/dist/{chunk-UEYZXWIP.js → chunk-EWDWLY74.js} +11 -11
  105. package/dist/{chunk-UEYZXWIP.js.map → chunk-EWDWLY74.js.map} +1 -1
  106. package/dist/{chunk-4EMMMKDR.js → chunk-F2GECCK7.js} +12 -12
  107. package/dist/{chunk-4EMMMKDR.js.map → chunk-F2GECCK7.js.map} +1 -1
  108. package/dist/chunk-GFSQMK35.mjs +127 -0
  109. package/dist/chunk-GFSQMK35.mjs.map +1 -0
  110. package/dist/{chunk-XP63NBUV.js → chunk-GGGX54ZE.js} +14 -14
  111. package/dist/{chunk-XP63NBUV.js.map → chunk-GGGX54ZE.js.map} +1 -1
  112. package/dist/{chunk-ZPITTAT5.mjs → chunk-GSU6VTCZ.mjs} +3 -3
  113. package/dist/{chunk-ZPITTAT5.mjs.map → chunk-GSU6VTCZ.mjs.map} +1 -1
  114. package/dist/{chunk-XQPNCDGF.js → chunk-GXSSFQ5D.js} +15 -15
  115. package/dist/{chunk-XQPNCDGF.js.map → chunk-GXSSFQ5D.js.map} +1 -1
  116. package/dist/{chunk-BJ4T65OK.mjs → chunk-H4TSADY3.mjs} +3 -3
  117. package/dist/{chunk-BJ4T65OK.mjs.map → chunk-H4TSADY3.mjs.map} +1 -1
  118. package/dist/{chunk-3UT3XR6M.js → chunk-HSLPN3QK.js} +7 -7
  119. package/dist/{chunk-3UT3XR6M.js.map → chunk-HSLPN3QK.js.map} +1 -1
  120. package/dist/{chunk-QAYB7NCH.js → chunk-HTCNRTN6.js} +129 -69
  121. package/dist/chunk-HTCNRTN6.js.map +1 -0
  122. package/dist/{chunk-Y3SYVAP6.mjs → chunk-JXRGIE3V.mjs} +4 -4
  123. package/dist/{chunk-Y3SYVAP6.mjs.map → chunk-JXRGIE3V.mjs.map} +1 -1
  124. package/dist/chunk-K3PVUXKB.mjs +6 -0
  125. package/dist/{chunk-7JGD5TUI.mjs.map → chunk-K3PVUXKB.mjs.map} +1 -1
  126. package/dist/{chunk-L2KN3GYW.mjs → chunk-KOPFFKG2.mjs} +3 -3
  127. package/dist/{chunk-L2KN3GYW.mjs.map → chunk-KOPFFKG2.mjs.map} +1 -1
  128. package/dist/{chunk-LP6KJPAL.js → chunk-KZBDH5A3.js} +4 -4
  129. package/dist/{chunk-LP6KJPAL.js.map → chunk-KZBDH5A3.js.map} +1 -1
  130. package/dist/{chunk-DJAJB6AZ.mjs → chunk-LPDXS2B2.mjs} +3 -3
  131. package/dist/{chunk-DJAJB6AZ.mjs.map → chunk-LPDXS2B2.mjs.map} +1 -1
  132. package/dist/{chunk-I5X7BX6I.mjs → chunk-M3JCHPK3.mjs} +127 -67
  133. package/dist/chunk-M3JCHPK3.mjs.map +1 -0
  134. package/dist/{chunk-RSAQ7WGF.mjs → chunk-M62L2N5A.mjs} +3 -3
  135. package/dist/{chunk-RSAQ7WGF.mjs.map → chunk-M62L2N5A.mjs.map} +1 -1
  136. package/dist/{chunk-G3L26XQ7.js → chunk-OIPG3EGM.js} +5 -5
  137. package/dist/{chunk-G3L26XQ7.js.map → chunk-OIPG3EGM.js.map} +1 -1
  138. package/dist/{chunk-X3MY4PL7.mjs → chunk-QAQTDHHT.mjs} +10 -14
  139. package/dist/chunk-QAQTDHHT.mjs.map +1 -0
  140. package/dist/{chunk-VFXLB5JU.mjs → chunk-QOKMH2TD.mjs} +3 -3
  141. package/dist/{chunk-VFXLB5JU.mjs.map → chunk-QOKMH2TD.mjs.map} +1 -1
  142. package/dist/{chunk-HXHRS3PX.mjs → chunk-RCB6HEHM.mjs} +3 -3
  143. package/dist/{chunk-HXHRS3PX.mjs.map → chunk-RCB6HEHM.mjs.map} +1 -1
  144. package/dist/{chunk-NAA5J2JM.js → chunk-RQROZLH3.js} +47 -51
  145. package/dist/chunk-RQROZLH3.js.map +1 -0
  146. package/dist/{chunk-PHE5MIW4.js → chunk-S5QKNXLQ.js} +10 -10
  147. package/dist/{chunk-PHE5MIW4.js.map → chunk-S5QKNXLQ.js.map} +1 -1
  148. package/dist/{chunk-MERNU3MY.mjs → chunk-SBTA6B6Y.mjs} +4 -4
  149. package/dist/{chunk-MERNU3MY.mjs.map → chunk-SBTA6B6Y.mjs.map} +1 -1
  150. package/dist/{chunk-CPRCBO6Y.mjs → chunk-TPDDSEL3.mjs} +3 -3
  151. package/dist/{chunk-CPRCBO6Y.mjs.map → chunk-TPDDSEL3.mjs.map} +1 -1
  152. package/dist/{chunk-C4JCJ66V.js → chunk-U4CYO4NG.js} +5 -5
  153. package/dist/{chunk-C4JCJ66V.js.map → chunk-U4CYO4NG.js.map} +1 -1
  154. package/dist/{chunk-BVSTYFFI.js → chunk-U5NFIHLY.js} +4 -4
  155. package/dist/{chunk-BVSTYFFI.js.map → chunk-U5NFIHLY.js.map} +1 -1
  156. package/dist/{chunk-4KTPBCB3.mjs → chunk-USQPRLSG.mjs} +8 -8
  157. package/dist/{chunk-4KTPBCB3.mjs.map → chunk-USQPRLSG.mjs.map} +1 -1
  158. package/dist/{chunk-RR6U3Z76.js → chunk-VDEQVXNV.js} +3 -3
  159. package/dist/{chunk-RR6U3Z76.js.map → chunk-VDEQVXNV.js.map} +1 -1
  160. package/dist/{chunk-WYUYAMFL.js → chunk-VMNPLCZB.js} +14 -14
  161. package/dist/{chunk-WYUYAMFL.js.map → chunk-VMNPLCZB.js.map} +1 -1
  162. package/dist/{chunk-5EVGWCUB.js → chunk-W7IAG5YD.js} +3 -3
  163. package/dist/{chunk-5EVGWCUB.js.map → chunk-W7IAG5YD.js.map} +1 -1
  164. package/dist/{chunk-K5Q7UYZM.mjs → chunk-WIWHM47B.mjs} +3 -3
  165. package/dist/{chunk-K5Q7UYZM.mjs.map → chunk-WIWHM47B.mjs.map} +1 -1
  166. package/dist/{chunk-KRU755E3.js → chunk-XZHR4E2D.js} +8 -8
  167. package/dist/{chunk-KRU755E3.js.map → chunk-XZHR4E2D.js.map} +1 -1
  168. package/dist/{chunk-EW2GKDDC.js → chunk-YACU35MY.js} +9 -9
  169. package/dist/{chunk-EW2GKDDC.js.map → chunk-YACU35MY.js.map} +1 -1
  170. package/dist/chunk-YMZNEDFP.js +39 -0
  171. package/dist/chunk-YMZNEDFP.js.map +1 -0
  172. package/dist/{chunk-QMVBKSTZ.mjs → chunk-YRKWJCML.mjs} +3 -3
  173. package/dist/{chunk-QMVBKSTZ.mjs.map → chunk-YRKWJCML.mjs.map} +1 -1
  174. package/dist/chunk-Z2URIOKG.mjs +36 -0
  175. package/dist/chunk-Z2URIOKG.mjs.map +1 -0
  176. package/dist/{chunk-S2LJ26WQ.mjs → chunk-ZEBOOUBP.mjs} +3 -3
  177. package/dist/{chunk-S2LJ26WQ.mjs.map → chunk-ZEBOOUBP.mjs.map} +1 -1
  178. package/dist/{chunk-QXD7AWGV.js → chunk-ZOBUA65N.js} +74 -17
  179. package/dist/chunk-ZOBUA65N.js.map +1 -0
  180. package/dist/cli/index.js +3 -3
  181. package/dist/cli/index.mjs +1 -1
  182. package/dist/client/index.js +4 -4
  183. package/dist/client/index.mjs +3 -3
  184. package/dist/commerce/index.js +57 -57
  185. package/dist/commerce/index.mjs +5 -5
  186. package/dist/engage/DesignRenderer.d.ts.map +1 -1
  187. package/dist/engage/EngageWidget.d.ts.map +1 -1
  188. package/dist/engage/element-rules.d.ts +39 -0
  189. package/dist/engage/element-rules.d.ts.map +1 -0
  190. package/dist/engage/index.js +9 -9
  191. package/dist/engage/index.mjs +6 -6
  192. package/dist/fleet/index.js +8 -8
  193. package/dist/fleet/index.mjs +4 -4
  194. package/dist/forms/index.js +13 -13
  195. package/dist/forms/index.mjs +7 -7
  196. package/dist/forms/server.js +2 -2
  197. package/dist/forms/server.mjs +1 -1
  198. package/dist/images/index.js +11 -11
  199. package/dist/images/index.mjs +4 -4
  200. package/dist/index.js +63 -63
  201. package/dist/index.mjs +9 -9
  202. package/dist/layout/client.js +8 -8
  203. package/dist/layout/client.mjs +7 -7
  204. package/dist/layout/index.js +10 -10
  205. package/dist/layout/index.mjs +8 -8
  206. package/dist/llms/index.d.ts +2 -0
  207. package/dist/llms/index.d.ts.map +1 -1
  208. package/dist/llms/index.js +129 -14
  209. package/dist/llms/index.js.map +1 -1
  210. package/dist/llms/index.mjs +115 -5
  211. package/dist/llms/index.mjs.map +1 -1
  212. package/dist/llms/revalidate.d.ts +3 -0
  213. package/dist/llms/revalidate.d.ts.map +1 -1
  214. package/dist/llms/seo-revalidate.d.ts +105 -0
  215. package/dist/llms/seo-revalidate.d.ts.map +1 -0
  216. package/dist/maps/index.js +5 -5
  217. package/dist/maps/index.mjs +3 -3
  218. package/dist/mcp/transport.d.ts +166 -0
  219. package/dist/mcp/transport.d.ts.map +1 -0
  220. package/dist/mcp/transport.js +137 -0
  221. package/dist/mcp/transport.js.map +1 -0
  222. package/dist/mcp/transport.mjs +123 -0
  223. package/dist/mcp/transport.mjs.map +1 -0
  224. package/dist/search/index.js +4 -4
  225. package/dist/search/index.mjs +3 -3
  226. package/dist/seo/client.js +5 -5
  227. package/dist/seo/client.mjs +4 -4
  228. package/dist/seo/index.js +5 -5
  229. package/dist/seo/index.mjs +4 -4
  230. package/dist/seo/register-sitemap-cli.js +1 -1
  231. package/dist/seo/register-sitemap-cli.mjs +1 -1
  232. package/dist/server/index.js +3 -3
  233. package/dist/server/index.mjs +2 -2
  234. package/dist/shared/build-entries.d.ts +7 -0
  235. package/dist/shared/build-entries.d.ts.map +1 -1
  236. package/dist/shared/request-guards.d.ts +27 -0
  237. package/dist/shared/request-guards.d.ts.map +1 -0
  238. package/dist/shared/version.d.ts +1 -1
  239. package/dist/signal/index.js +11 -11
  240. package/dist/signal/index.mjs +2 -2
  241. package/dist/sitemap/index.js +3 -3
  242. package/dist/sitemap/index.mjs +2 -2
  243. package/dist/sync/index.js +17 -17
  244. package/dist/sync/index.mjs +4 -4
  245. package/dist/{writeLLMsTxt-LYYC3ZSN.mjs → writeLLMsTxt-IYJILIU3.mjs} +3 -3
  246. package/dist/{writeLLMsTxt-XHLHJ5XY.js → writeLLMsTxt-SQG4B63X.js} +4 -4
  247. package/package.json +6 -1
  248. package/dist/EngageWidget-4WB74GQR.mjs +0 -12
  249. package/dist/EngageWidget-YONW3W3Z.js +0 -21
  250. package/dist/ManagedForm-KKJOIEFW.mjs +0 -16
  251. package/dist/ManagedForm-ZUPV4DPQ.js +0 -25
  252. package/dist/SitemapSync-5TKLHXFL.js +0 -18
  253. package/dist/SitemapSync-BIWCTMRJ.mjs +0 -9
  254. package/dist/chunk-6DCAMW62.mjs.map +0 -1
  255. package/dist/chunk-7JGD5TUI.mjs +0 -6
  256. package/dist/chunk-I5X7BX6I.mjs.map +0 -1
  257. package/dist/chunk-LSB3CWSB.js +0 -8
  258. package/dist/chunk-NAA5J2JM.js.map +0 -1
  259. package/dist/chunk-QAYB7NCH.js.map +0 -1
  260. package/dist/chunk-QII2TNKS.mjs.map +0 -1
  261. package/dist/chunk-QXD7AWGV.js.map +0 -1
  262. package/dist/chunk-X3MY4PL7.mjs.map +0 -1
  263. package/dist/chunk-YRCR7WY3.js +0 -65
  264. package/dist/chunk-YRCR7WY3.js.map +0 -1
  265. package/dist/chunk-ZL35JCDA.mjs +0 -61
  266. package/dist/chunk-ZL35JCDA.mjs.map +0 -1
  267. package/dist/chunk-ZR43XFUM.js.map +0 -1
@@ -1 +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"]}
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","safeJsonLd","generateAuthorSchema","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, siteUrl, siteName, jsonLd = true }: AuthorPageProps) {\n const routes = createPublicationRoutes({ basePath, ...routing })\n\n return (\n <div className=\"sk-author-page\">\n {/* JSON-LD: the ProfilePage. Pass siteUrl so its URLs and Person @id are absolute. */}\n {jsonLd && (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: safeJsonLd(generateAuthorSchema(author, { basePath, ...routing, siteUrl, siteName })),\n }}\n />\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"]}
@@ -1,21 +1,21 @@
1
1
  'use client';
2
2
  import { NewsletterShell } from '../chunk-EDLNMGQC.mjs';
3
3
  export { ArticleFAQ } from '../chunk-C5VITBN7.mjs';
4
- import { getAuthorSocialLinks, readingTimeMinutes } from '../chunk-HXHRS3PX.mjs';
5
- export { ClusterNavigation, ServiceCallout, ServiceCallouts } from '../chunk-HXHRS3PX.mjs';
4
+ import { getAuthorSocialLinks, readingTimeMinutes } from '../chunk-RCB6HEHM.mjs';
5
+ export { ClusterNavigation, ServiceCallout, ServiceCallouts } from '../chunk-RCB6HEHM.mjs';
6
6
  import '../chunk-4KAMU5HD.mjs';
7
7
  export { addExternalLinkTargets, linkClassificationHost, normalizeSiteHost, resolvePublicationSiteUrl } from '../chunk-5YVQWLSQ.mjs';
8
- import { generateAuthorSchema, resolveArticleArtwork, articleArtworkImageStyle } from '../chunk-ZL35JCDA.mjs';
9
- export { resolveArticleArtwork } from '../chunk-ZL35JCDA.mjs';
10
- import { createPublicationRoutes } from '../chunk-6DCAMW62.mjs';
11
- export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from '../chunk-6DCAMW62.mjs';
8
+ import { generateAuthorSchema, resolveArticleArtwork, articleArtworkImageStyle } from '../chunk-GFSQMK35.mjs';
9
+ export { resolveArticleArtwork } from '../chunk-GFSQMK35.mjs';
10
+ import { createPublicationRoutes } from '../chunk-6C47333H.mjs';
11
+ export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from '../chunk-6C47333H.mjs';
12
12
  import { safeJsonLd } from '../chunk-662YHKWW.mjs';
13
13
  import '../chunk-C2CTLLIO.mjs';
14
14
  import '../chunk-BEXTDHO4.mjs';
15
15
  import React, { useState, Suspense, useEffect } from 'react';
16
16
  import { jsx, jsxs } from 'react/jsx-runtime';
17
17
 
18
- var ManagedNewsletterForm = React.lazy(() => import('../ManagedNewsletterForm-JOTIWXLQ.mjs'));
18
+ var ManagedNewsletterForm = React.lazy(() => import('../ManagedNewsletterForm-KMZG24OE.mjs'));
19
19
  function NewsletterWidget({
20
20
  title = "Subscribe to Our Newsletter",
21
21
  description = "Get the latest posts delivered straight to your inbox.",
@@ -332,15 +332,16 @@ function PostCard({ post, href }) {
332
332
  }
333
333
  );
334
334
  }
335
- function AuthorPage({ author, posts, basePath, routing }) {
335
+ function AuthorPage({ author, posts, basePath, routing, siteUrl, siteName, jsonLd = true }) {
336
336
  const routes = createPublicationRoutes({ basePath, ...routing });
337
- const schema = generateAuthorSchema(author);
338
337
  return /* @__PURE__ */ jsxs("div", { className: "sk-author-page", children: [
339
- /* @__PURE__ */ jsx(
338
+ jsonLd && /* @__PURE__ */ jsx(
340
339
  "script",
341
340
  {
342
341
  type: "application/ld+json",
343
- dangerouslySetInnerHTML: { __html: safeJsonLd(schema) }
342
+ dangerouslySetInnerHTML: {
343
+ __html: safeJsonLd(generateAuthorSchema(author, { basePath, ...routing, siteUrl, siteName }))
344
+ }
344
345
  }
345
346
  ),
346
347
  /* @__PURE__ */ jsx(AuthorHero, { author }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/articles/NewsletterWidget.tsx","../../src/articles/AuthorCard.tsx","../../src/articles/AuthorPage.tsx","../../src/articles/TableOfContents.tsx"],"names":["jsx","jsxs","useState"],"mappings":"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","file":"index.mjs","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"]}
1
+ {"version":3,"sources":["../../src/articles/NewsletterWidget.tsx","../../src/articles/AuthorCard.tsx","../../src/articles/AuthorPage.tsx","../../src/articles/TableOfContents.tsx"],"names":["jsx","jsxs","useState"],"mappings":"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","file":"index.mjs","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, siteUrl, siteName, jsonLd = true }: AuthorPageProps) {\n const routes = createPublicationRoutes({ basePath, ...routing })\n\n return (\n <div className=\"sk-author-page\">\n {/* JSON-LD: the ProfilePage. Pass siteUrl so its URLs and Person @id are absolute. */}\n {jsonLd && (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: safeJsonLd(generateAuthorSchema(author, { basePath, ...routing, siteUrl, siteName })),\n }}\n />\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"]}
@@ -24,6 +24,15 @@ export interface PublicationRoutingOptions {
24
24
  postPath?: (post: ArticleRoutePost) => string;
25
25
  /** A custom category destination, for example /theforge?category=guides. */
26
26
  categoryPath?: (slug: string) => string;
27
+ /**
28
+ * Whether this site serves author pages. `true` means they live at the
29
+ * default `<publication>/author/<slug>`; a function gives a custom path, for
30
+ * example ``(slug) => `/author/${slug}` `` when author pages sit at the site
31
+ * root. Article JSON-LD links bylines to author pages ONLY when this is set
32
+ * (or the author row has `author_page_url`), because most sites have none
33
+ * and a byline URL that 404s is worse than no URL.
34
+ */
35
+ authorPages?: boolean | ((slug: string) => string);
27
36
  }
28
37
  export declare function articleCategorySlug(category: ArticleRoutePost['category']): string;
29
38
  /** Single source of truth for publication paths. Custom routes never change OG artwork. */
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/articles/routes.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD,MAAM,WAAW,yBAAyB;IACxC,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAA;IAC7C,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACxC;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,MAAM,CAGlF;AAUD,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,yBAA8B;;eAMhE,gBAAgB,GAAG,MAAM;mBAKrB,MAAM,GAAG,MAAM;oBAMd,MAAM;mBACP,MAAM;;;EAIxB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,MAAM,CAExE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,yBAAyB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAUhI"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/articles/routes.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD,MAAM,WAAW,yBAAyB;IACxC,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAA;IAC7C,4EAA4E;IAC5E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;CACnD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,MAAM,CAGlF;AAUD,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,yBAA8B;;eAMhE,gBAAgB,GAAG,MAAM;mBAKrB,MAAM,GAAG,MAAM;oBAMd,MAAM;mBACP,MAAM;;;EAOxB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,MAAM,CAExE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,GAAE,yBAAyB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAUhI"}
@@ -450,7 +450,10 @@ export declare function generateAuthorPageMetadata(author: ArticleAuthor, option
450
450
  siteName?: string;
451
451
  }): Metadata;
452
452
  /**
453
- * Person JSON-LD for an author page.
453
+ * Author JSON-LD: `generateAuthorSchema` (the author page's ProfilePage with
454
+ * the Person as mainEntity), `generateAuthorPersonSchema` (the bare Person for
455
+ * embedding), `generateArticleAuthorNode` (an article byline) and
456
+ * `authorEntityId` (the Person @id rule).
454
457
  *
455
458
  * The implementation lives in `./author-schema` because it is pure, and
456
459
  * `AuthorPage` — which is exported from the client-stamped `articles` barrel —
@@ -458,7 +461,7 @@ export declare function generateAuthorPageMetadata(author: ArticleAuthor, option
458
461
  * into the browser bundle. Re-exported so `@sonordev/site-kit/articles/server`
459
462
  * keeps its existing public API.
460
463
  */
461
- export { generateAuthorSchema } from './author-schema';
464
+ export { authorEntityId, generateArticleAuthorNode, generateAuthorPersonSchema, generateAuthorSchema, withArticleAuthorIdentity, type AuthorSchemaOptions, } from './author-schema';
462
465
  /** Portal article document shape (alias of `Article` from `./types`) */
463
466
  export type { Article as ArticleRecord } from './types';
464
467
  export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from './routes';
@@ -1 +1 @@
1
- {"version":3,"file":"server-core.d.ts","sourceRoot":"","sources":["../../src/articles/server-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-core.d.ts","sourceRoot":"","sources":["../../src/articles/server-core.ts"],"names":[],"mappings":"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"}