@sonordev/site-kit 1.2.7

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 (300) hide show
  1. package/README.md +376 -0
  2. package/dist/SetupWizard-Cki06kB0.d.mts +12 -0
  3. package/dist/SetupWizard-Cki06kB0.d.ts +12 -0
  4. package/dist/analytics/index.d.mts +93 -0
  5. package/dist/analytics/index.d.ts +93 -0
  6. package/dist/analytics/index.js +89 -0
  7. package/dist/analytics/index.js.map +1 -0
  8. package/dist/analytics/index.mjs +71 -0
  9. package/dist/analytics/index.mjs.map +1 -0
  10. package/dist/api-CWtoFJCO.d.mts +137 -0
  11. package/dist/api-CWtoFJCO.d.ts +137 -0
  12. package/dist/blog/index.d.mts +305 -0
  13. package/dist/blog/index.d.ts +305 -0
  14. package/dist/blog/index.js +1578 -0
  15. package/dist/blog/index.js.map +1 -0
  16. package/dist/blog/index.mjs +1562 -0
  17. package/dist/blog/index.mjs.map +1 -0
  18. package/dist/blog/server.d.mts +229 -0
  19. package/dist/blog/server.d.ts +229 -0
  20. package/dist/blog/server.js +692 -0
  21. package/dist/blog/server.js.map +1 -0
  22. package/dist/blog/server.mjs +666 -0
  23. package/dist/blog/server.mjs.map +1 -0
  24. package/dist/chunk-24277A3Q.mjs +968 -0
  25. package/dist/chunk-24277A3Q.mjs.map +1 -0
  26. package/dist/chunk-373TK6TZ.js +321 -0
  27. package/dist/chunk-373TK6TZ.js.map +1 -0
  28. package/dist/chunk-3MYZS6PD.js +30 -0
  29. package/dist/chunk-3MYZS6PD.js.map +1 -0
  30. package/dist/chunk-43GBM4SX.js +283 -0
  31. package/dist/chunk-43GBM4SX.js.map +1 -0
  32. package/dist/chunk-4XPGGLVP.mjs +53 -0
  33. package/dist/chunk-4XPGGLVP.mjs.map +1 -0
  34. package/dist/chunk-622GAQP5.js +2008 -0
  35. package/dist/chunk-622GAQP5.js.map +1 -0
  36. package/dist/chunk-6BIPAKL4.mjs +28 -0
  37. package/dist/chunk-6BIPAKL4.mjs.map +1 -0
  38. package/dist/chunk-6ZCISNAB.mjs +343 -0
  39. package/dist/chunk-6ZCISNAB.mjs.map +1 -0
  40. package/dist/chunk-72MQFHYJ.js +1429 -0
  41. package/dist/chunk-72MQFHYJ.js.map +1 -0
  42. package/dist/chunk-7557OTHW.js +62 -0
  43. package/dist/chunk-7557OTHW.js.map +1 -0
  44. package/dist/chunk-7FUV73JZ.js +981 -0
  45. package/dist/chunk-7FUV73JZ.js.map +1 -0
  46. package/dist/chunk-7RF6PVHA.mjs +324 -0
  47. package/dist/chunk-7RF6PVHA.mjs.map +1 -0
  48. package/dist/chunk-7RYCHO6D.mjs +134 -0
  49. package/dist/chunk-7RYCHO6D.mjs.map +1 -0
  50. package/dist/chunk-7UKPRW25.mjs +1999 -0
  51. package/dist/chunk-7UKPRW25.mjs.map +1 -0
  52. package/dist/chunk-7URAOG2M.js +14864 -0
  53. package/dist/chunk-7URAOG2M.js.map +1 -0
  54. package/dist/chunk-AFAO3TGS.mjs +810 -0
  55. package/dist/chunk-AFAO3TGS.mjs.map +1 -0
  56. package/dist/chunk-BYLIU6XG.js +343 -0
  57. package/dist/chunk-BYLIU6XG.js.map +1 -0
  58. package/dist/chunk-D63MUKZ6.mjs +4423 -0
  59. package/dist/chunk-D63MUKZ6.mjs.map +1 -0
  60. package/dist/chunk-DDKW2FNA.js +390 -0
  61. package/dist/chunk-DDKW2FNA.js.map +1 -0
  62. package/dist/chunk-DQYMKR27.mjs +341 -0
  63. package/dist/chunk-DQYMKR27.mjs.map +1 -0
  64. package/dist/chunk-DW5UJKHH.js +221 -0
  65. package/dist/chunk-DW5UJKHH.js.map +1 -0
  66. package/dist/chunk-EEZCR6E6.js +50 -0
  67. package/dist/chunk-EEZCR6E6.js.map +1 -0
  68. package/dist/chunk-GCJXQ4AG.mjs +59 -0
  69. package/dist/chunk-GCJXQ4AG.mjs.map +1 -0
  70. package/dist/chunk-JGNQK2G6.mjs +14845 -0
  71. package/dist/chunk-JGNQK2G6.mjs.map +1 -0
  72. package/dist/chunk-JTLOJLWQ.mjs +563 -0
  73. package/dist/chunk-JTLOJLWQ.mjs.map +1 -0
  74. package/dist/chunk-K23A4G76.mjs +202 -0
  75. package/dist/chunk-K23A4G76.mjs.map +1 -0
  76. package/dist/chunk-KKU3K7RG.js +336 -0
  77. package/dist/chunk-KKU3K7RG.js.map +1 -0
  78. package/dist/chunk-KUGMH4ZF.js +571 -0
  79. package/dist/chunk-KUGMH4ZF.js.map +1 -0
  80. package/dist/chunk-LBVWVP72.js +110 -0
  81. package/dist/chunk-LBVWVP72.js.map +1 -0
  82. package/dist/chunk-LIVWLY2P.js +138 -0
  83. package/dist/chunk-LIVWLY2P.js.map +1 -0
  84. package/dist/chunk-M2T6R7BA.mjs +1003 -0
  85. package/dist/chunk-M2T6R7BA.mjs.map +1 -0
  86. package/dist/chunk-MV3QN7PW.mjs +47 -0
  87. package/dist/chunk-MV3QN7PW.mjs.map +1 -0
  88. package/dist/chunk-OB7E654K.js +72 -0
  89. package/dist/chunk-OB7E654K.js.map +1 -0
  90. package/dist/chunk-OIIKTGRL.mjs +380 -0
  91. package/dist/chunk-OIIKTGRL.mjs.map +1 -0
  92. package/dist/chunk-P3UWIUJS.mjs +1427 -0
  93. package/dist/chunk-P3UWIUJS.mjs.map +1 -0
  94. package/dist/chunk-PKN27UMH.mjs +136 -0
  95. package/dist/chunk-PKN27UMH.mjs.map +1 -0
  96. package/dist/chunk-QXV4667R.mjs +105 -0
  97. package/dist/chunk-QXV4667R.mjs.map +1 -0
  98. package/dist/chunk-S7FRYNSU.mjs +315 -0
  99. package/dist/chunk-S7FRYNSU.mjs.map +1 -0
  100. package/dist/chunk-TFLQX7K7.mjs +68 -0
  101. package/dist/chunk-TFLQX7K7.mjs.map +1 -0
  102. package/dist/chunk-UWE5PCYJ.mjs +279 -0
  103. package/dist/chunk-UWE5PCYJ.mjs.map +1 -0
  104. package/dist/chunk-UYFDNX2F.js +4469 -0
  105. package/dist/chunk-UYFDNX2F.js.map +1 -0
  106. package/dist/chunk-W4PALSGM.js +350 -0
  107. package/dist/chunk-W4PALSGM.js.map +1 -0
  108. package/dist/chunk-WECQ6KOB.js +1008 -0
  109. package/dist/chunk-WECQ6KOB.js.map +1 -0
  110. package/dist/chunk-XQQWI6WB.js +814 -0
  111. package/dist/chunk-XQQWI6WB.js.map +1 -0
  112. package/dist/chunk-XZJOZJB6.js +140 -0
  113. package/dist/chunk-XZJOZJB6.js.map +1 -0
  114. package/dist/chunk-ZSMWDLMK.js +63 -0
  115. package/dist/chunk-ZSMWDLMK.js.map +1 -0
  116. package/dist/cli/index.js +37243 -0
  117. package/dist/cli/index.js.map +1 -0
  118. package/dist/cli/index.mjs +37209 -0
  119. package/dist/cli/index.mjs.map +1 -0
  120. package/dist/commerce/index.d.mts +170 -0
  121. package/dist/commerce/index.d.ts +170 -0
  122. package/dist/commerce/index.js +174 -0
  123. package/dist/commerce/index.js.map +1 -0
  124. package/dist/commerce/index.mjs +5 -0
  125. package/dist/commerce/index.mjs.map +1 -0
  126. package/dist/commerce/server.d.mts +107 -0
  127. package/dist/commerce/server.d.ts +107 -0
  128. package/dist/commerce/server.js +187 -0
  129. package/dist/commerce/server.js.map +1 -0
  130. package/dist/commerce/server.mjs +177 -0
  131. package/dist/commerce/server.mjs.map +1 -0
  132. package/dist/config/index.d.mts +43 -0
  133. package/dist/config/index.d.ts +43 -0
  134. package/dist/config/index.js +66 -0
  135. package/dist/config/index.js.map +1 -0
  136. package/dist/config/index.mjs +64 -0
  137. package/dist/config/index.mjs.map +1 -0
  138. package/dist/engage/index.d.mts +33 -0
  139. package/dist/engage/index.d.ts +33 -0
  140. package/dist/engage/index.js +22 -0
  141. package/dist/engage/index.js.map +1 -0
  142. package/dist/engage/index.mjs +5 -0
  143. package/dist/engage/index.mjs.map +1 -0
  144. package/dist/forms/index.d.mts +437 -0
  145. package/dist/forms/index.d.ts +437 -0
  146. package/dist/forms/index.js +1168 -0
  147. package/dist/forms/index.js.map +1 -0
  148. package/dist/forms/index.mjs +1142 -0
  149. package/dist/forms/index.mjs.map +1 -0
  150. package/dist/generators-2XKQMPKH.mjs +4 -0
  151. package/dist/generators-2XKQMPKH.mjs.map +1 -0
  152. package/dist/generators-DTMO36DV.js +33 -0
  153. package/dist/generators-DTMO36DV.js.map +1 -0
  154. package/dist/images/index.d.mts +4 -0
  155. package/dist/images/index.d.ts +4 -0
  156. package/dist/images/index.js +46 -0
  157. package/dist/images/index.js.map +1 -0
  158. package/dist/images/index.mjs +5 -0
  159. package/dist/images/index.mjs.map +1 -0
  160. package/dist/images/server.d.mts +69 -0
  161. package/dist/images/server.d.ts +69 -0
  162. package/dist/images/server.js +21 -0
  163. package/dist/images/server.js.map +1 -0
  164. package/dist/images/server.mjs +4 -0
  165. package/dist/images/server.mjs.map +1 -0
  166. package/dist/index.d.mts +846 -0
  167. package/dist/index.d.ts +846 -0
  168. package/dist/index.js +2623 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/index.mjs +2416 -0
  171. package/dist/index.mjs.map +1 -0
  172. package/dist/layout/index.d.mts +53 -0
  173. package/dist/layout/index.d.ts +53 -0
  174. package/dist/layout/index.js +187 -0
  175. package/dist/layout/index.js.map +1 -0
  176. package/dist/layout/index.mjs +185 -0
  177. package/dist/layout/index.mjs.map +1 -0
  178. package/dist/llms/index.d.mts +448 -0
  179. package/dist/llms/index.d.ts +448 -0
  180. package/dist/llms/index.js +581 -0
  181. package/dist/llms/index.js.map +1 -0
  182. package/dist/llms/index.mjs +529 -0
  183. package/dist/llms/index.mjs.map +1 -0
  184. package/dist/manifest/index.d.mts +62 -0
  185. package/dist/manifest/index.d.ts +62 -0
  186. package/dist/manifest/index.js +85 -0
  187. package/dist/manifest/index.js.map +1 -0
  188. package/dist/manifest/index.mjs +83 -0
  189. package/dist/manifest/index.mjs.map +1 -0
  190. package/dist/middleware/index.d.mts +63 -0
  191. package/dist/middleware/index.d.ts +63 -0
  192. package/dist/middleware/index.js +54 -0
  193. package/dist/middleware/index.js.map +1 -0
  194. package/dist/middleware/index.mjs +51 -0
  195. package/dist/middleware/index.mjs.map +1 -0
  196. package/dist/migrator-2MQHOFDQ.mjs +4 -0
  197. package/dist/migrator-2MQHOFDQ.mjs.map +1 -0
  198. package/dist/migrator-THJCF6MZ.js +37 -0
  199. package/dist/migrator-THJCF6MZ.js.map +1 -0
  200. package/dist/redirects/index.d.mts +78 -0
  201. package/dist/redirects/index.d.ts +78 -0
  202. package/dist/redirects/index.js +26 -0
  203. package/dist/redirects/index.js.map +1 -0
  204. package/dist/redirects/index.mjs +5 -0
  205. package/dist/redirects/index.mjs.map +1 -0
  206. package/dist/reputation/index.d.mts +57 -0
  207. package/dist/reputation/index.d.ts +57 -0
  208. package/dist/reputation/index.js +21 -0
  209. package/dist/reputation/index.js.map +1 -0
  210. package/dist/reputation/index.mjs +4 -0
  211. package/dist/reputation/index.mjs.map +1 -0
  212. package/dist/robots/index.d.mts +38 -0
  213. package/dist/robots/index.d.ts +38 -0
  214. package/dist/robots/index.js +52 -0
  215. package/dist/robots/index.js.map +1 -0
  216. package/dist/robots/index.mjs +50 -0
  217. package/dist/robots/index.mjs.map +1 -0
  218. package/dist/routing-B5XS-6_W.d.mts +118 -0
  219. package/dist/routing-DZYzyDHw.d.ts +118 -0
  220. package/dist/scanner-GAF5PO5F.js +53 -0
  221. package/dist/scanner-GAF5PO5F.js.map +1 -0
  222. package/dist/scanner-LKJKW7IT.mjs +4 -0
  223. package/dist/scanner-LKJKW7IT.mjs.map +1 -0
  224. package/dist/securityHeaders-nwZ6nP4g.d.mts +24 -0
  225. package/dist/securityHeaders-nwZ6nP4g.d.ts +24 -0
  226. package/dist/seo/index.d.mts +600 -0
  227. package/dist/seo/index.d.ts +600 -0
  228. package/dist/seo/index.js +883 -0
  229. package/dist/seo/index.js.map +1 -0
  230. package/dist/seo/index.mjs +773 -0
  231. package/dist/seo/index.mjs.map +1 -0
  232. package/dist/seo/register-sitemap-cli.js +151 -0
  233. package/dist/seo/register-sitemap-cli.js.map +1 -0
  234. package/dist/seo/register-sitemap-cli.mjs +144 -0
  235. package/dist/seo/register-sitemap-cli.mjs.map +1 -0
  236. package/dist/seo/server.d.mts +107 -0
  237. package/dist/seo/server.d.ts +107 -0
  238. package/dist/seo/server.js +207 -0
  239. package/dist/seo/server.js.map +1 -0
  240. package/dist/seo/server.mjs +186 -0
  241. package/dist/seo/server.mjs.map +1 -0
  242. package/dist/server-api-EWXKOQZA.mjs +4 -0
  243. package/dist/server-api-EWXKOQZA.mjs.map +1 -0
  244. package/dist/server-api-GJPNRYUP.js +81 -0
  245. package/dist/server-api-GJPNRYUP.js.map +1 -0
  246. package/dist/setup/client.d.mts +60 -0
  247. package/dist/setup/client.d.ts +60 -0
  248. package/dist/setup/client.js +31 -0
  249. package/dist/setup/client.js.map +1 -0
  250. package/dist/setup/client.mjs +6 -0
  251. package/dist/setup/client.mjs.map +1 -0
  252. package/dist/setup/index.d.mts +5 -0
  253. package/dist/setup/index.d.ts +5 -0
  254. package/dist/setup/index.js +35 -0
  255. package/dist/setup/index.js.map +1 -0
  256. package/dist/setup/index.mjs +6 -0
  257. package/dist/setup/index.mjs.map +1 -0
  258. package/dist/setup/server.d.mts +14 -0
  259. package/dist/setup/server.d.ts +14 -0
  260. package/dist/setup/server.js +13 -0
  261. package/dist/setup/server.js.map +1 -0
  262. package/dist/setup/server.mjs +4 -0
  263. package/dist/setup/server.mjs.map +1 -0
  264. package/dist/site-config/index.d.mts +24 -0
  265. package/dist/site-config/index.d.ts +24 -0
  266. package/dist/site-config/index.js +17 -0
  267. package/dist/site-config/index.js.map +1 -0
  268. package/dist/site-config/index.mjs +4 -0
  269. package/dist/site-config/index.mjs.map +1 -0
  270. package/dist/sitemap/index.d.mts +96 -0
  271. package/dist/sitemap/index.d.ts +96 -0
  272. package/dist/sitemap/index.js +288 -0
  273. package/dist/sitemap/index.js.map +1 -0
  274. package/dist/sitemap/index.mjs +285 -0
  275. package/dist/sitemap/index.mjs.map +1 -0
  276. package/dist/socket-loader-J26QHHOB.js +16 -0
  277. package/dist/socket-loader-J26QHHOB.js.map +1 -0
  278. package/dist/socket-loader-R7S2YJ2J.mjs +14 -0
  279. package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
  280. package/dist/types-0dmq3k20.d.mts +168 -0
  281. package/dist/types-0dmq3k20.d.ts +168 -0
  282. package/dist/types-Blb2QNkV.d.mts +263 -0
  283. package/dist/types-Blb2QNkV.d.ts +263 -0
  284. package/dist/types-BnCwwUX3.d.mts +250 -0
  285. package/dist/types-BnCwwUX3.d.ts +250 -0
  286. package/dist/types-CGlnp43R.d.mts +312 -0
  287. package/dist/types-CGlnp43R.d.ts +312 -0
  288. package/dist/types-D08004rU.d.mts +179 -0
  289. package/dist/types-D08004rU.d.ts +179 -0
  290. package/dist/types-DNSYU7qI.d.mts +127 -0
  291. package/dist/types-DNSYU7qI.d.ts +127 -0
  292. package/dist/types-KZP_VWZp.d.mts +266 -0
  293. package/dist/types-KZP_VWZp.d.ts +266 -0
  294. package/dist/useEventModal-BVTx69XE.d.mts +274 -0
  295. package/dist/useEventModal-Dx1dItTJ.d.ts +274 -0
  296. package/dist/web-vitals-444RLW3B.js +252 -0
  297. package/dist/web-vitals-444RLW3B.js.map +1 -0
  298. package/dist/web-vitals-KPICZIEF.mjs +241 -0
  299. package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
  300. package/package.json +192 -0
@@ -0,0 +1,448 @@
1
+ import { G as GenerateLLMSTxtOptions, a as LLMSTxtContent, S as SpeakableSchemaProps, b as SpeakableConfig, A as AEOBlockProps, c as AEOSummaryProps, d as AEODefinitionProps, e as AEOClaimProps, L as LLMsDataResponse, f as LLMBusinessInfo, g as LLMService, h as LLMFAQItem, i as LLMPageSummary } from '../types-Blb2QNkV.js';
2
+ export { m as AEOCitedContentProps, k as AEOEntityProps, l as AEOProvenanceListProps, C as ContentProvenance, j as LLMContactInfo } from '../types-Blb2QNkV.js';
3
+ import * as React from 'react';
4
+
5
+ /**
6
+ * @sonordev/site-kit/llms - llms.txt Generator
7
+ *
8
+ * Generates llms.txt content following the llms.txt specification.
9
+ * https://llmstxt.org/
10
+ *
11
+ * The llms.txt file provides a markdown-formatted overview of a website
12
+ * specifically designed for LLM consumption. It helps AI systems understand
13
+ * what a business does, what services it offers, and how to answer questions.
14
+ */
15
+
16
+ /**
17
+ * Generate llms.txt content from Portal data
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * // app/llms.txt/route.ts
22
+ * import { generateLLMsTxt } from '@sonordev/site-kit/llms'
23
+ *
24
+ * export async function GET() {
25
+ * const { markdown } = await generateLLMsTxt({
26
+ * projectId: process.env.UPTRADE_PROJECT_ID!
27
+ * })
28
+ *
29
+ * return new Response(markdown, {
30
+ * headers: { 'Content-Type': 'text/plain; charset=utf-8' }
31
+ * })
32
+ * }
33
+ * ```
34
+ */
35
+ declare function generateLLMsTxt(options: GenerateLLMSTxtOptions): Promise<LLMSTxtContent>;
36
+ /**
37
+ * Generate llms-full.txt with comprehensive knowledge dump
38
+ * Use this for AI systems that can handle larger context
39
+ */
40
+ declare function generateLLMsFullTxt(options: GenerateLLMSTxtOptions): Promise<LLMSTxtContent>;
41
+
42
+ /**
43
+ * @sonordev/site-kit/llms - Next.js Route Handlers
44
+ *
45
+ * Ready-to-use route handlers for /llms.txt and /llms-full.txt
46
+ */
47
+
48
+ interface LLMsTxtHandlerOptions extends GenerateLLMSTxtOptions {
49
+ /** When true, serve static public/llms.txt if it exists (default: true for build-time flow) */
50
+ preferStatic?: boolean;
51
+ }
52
+ /**
53
+ * Create a route handler for /llms.txt
54
+ *
55
+ * Zero-config by default - uses NEXT_PUBLIC_UPTRADE_API_KEY from environment.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * // app/llms.txt/route.ts (zero-config)
60
+ * import { createLLMsTxtHandler } from '@sonordev/site-kit/llms'
61
+ *
62
+ * export const GET = createLLMsTxtHandler()
63
+ * ```
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * // With preferStatic: serve build-time file if exists
68
+ * export const GET = createLLMsTxtHandler({
69
+ * preferStatic: true,
70
+ * includeServices: false
71
+ * })
72
+ * ```
73
+ */
74
+ declare function createLLMsTxtHandler(options?: LLMsTxtHandlerOptions): () => Promise<Response>;
75
+ /**
76
+ * Create a route handler for /llms-full.txt
77
+ *
78
+ * Zero-config by default - uses NEXT_PUBLIC_UPTRADE_API_KEY from environment.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * // app/llms-full.txt/route.ts (zero-config)
83
+ * import { createLLMsFullTxtHandler } from '@sonordev/site-kit/llms'
84
+ *
85
+ * export const GET = createLLMsFullTxtHandler()
86
+ * ```
87
+ */
88
+ declare function createLLMsFullTxtHandler(options?: LLMsTxtHandlerOptions): () => Promise<Response>;
89
+
90
+ /**
91
+ * @sonordev/site-kit/llms - Speakable Schema Generator
92
+ *
93
+ * Generates JSON-LD with SpeakableSpecification for voice assistant
94
+ * and AI system content extraction.
95
+ *
96
+ * @see https://schema.org/speakable
97
+ * @see https://developers.google.com/search/docs/appearance/structured-data/speakable
98
+ */
99
+
100
+ /**
101
+ * Generate a WebPage or Article schema with speakable specification
102
+ *
103
+ * @example
104
+ * ```tsx
105
+ * // In a page component
106
+ * <SpeakableSchema
107
+ * type="Article"
108
+ * name="Family Law Services in Cincinnati"
109
+ * url="https://heinrichlaw.com/family-law"
110
+ * speakable={{
111
+ * cssSelectors: ['.page-summary', '.key-points', 'h1']
112
+ * }}
113
+ * />
114
+ * ```
115
+ */
116
+ declare function SpeakableSchema({ type, name, url, speakable, additionalProperties, }: SpeakableSchemaProps): React.ReactElement;
117
+ /**
118
+ * Create speakable schema object (for manual use or testing)
119
+ */
120
+ declare function createSpeakableSchema(type: 'Article' | 'WebPage', name: string, url: string, speakable: SpeakableConfig, additionalProperties?: Record<string, unknown>): Record<string, unknown>;
121
+ /**
122
+ * Default speakable CSS selectors for common page elements
123
+ */
124
+ declare const DEFAULT_SPEAKABLE_SELECTORS: {
125
+ /** Standard page elements */
126
+ page: string[];
127
+ /** Article/blog post elements */
128
+ article: string[];
129
+ /** Service page elements */
130
+ service: string[];
131
+ /** FAQ page elements */
132
+ faq: string[];
133
+ /** Contact page elements */
134
+ contact: string[];
135
+ };
136
+ /**
137
+ * Get recommended speakable selectors for a page type
138
+ */
139
+ declare function getSpeakableSelectorsForPage(pageType: 'page' | 'article' | 'service' | 'faq' | 'contact'): string[];
140
+
141
+ /**
142
+ * @sonordev/site-kit/llms - AEO Components
143
+ *
144
+ * Answer Engine Optimization (AEO) components for structuring content
145
+ * in a way that AI systems can easily extract and cite.
146
+ *
147
+ * These components create semantic HTML with proper structure for:
148
+ * - Featured snippets
149
+ * - AI-generated answers
150
+ * - Voice assistant responses
151
+ * - AI retrieval and citation (Sonor AI Visibility)
152
+ */
153
+
154
+ /**
155
+ * AEOBlock - Generic content block optimized for AI extraction
156
+ *
157
+ * Wraps content with semantic HTML and Sonor data attributes.
158
+ * Use for any content you want AI systems to prioritize.
159
+ *
160
+ * @example
161
+ * ```tsx
162
+ * <AEOBlock type="answer" question="What is family law?" speakable>
163
+ * Family law is the area of legal practice that deals with family-related
164
+ * matters such as divorce, child custody, adoption, and domestic relations.
165
+ * </AEOBlock>
166
+ * ```
167
+ */
168
+ declare function AEOBlock({ id, type, question, speakable, entityId, children, className, }: AEOBlockProps): React.ReactElement;
169
+ /**
170
+ * AEOSummary - Key points summary for AI extraction
171
+ *
172
+ * Creates a scannable list of key points that AI can easily cite.
173
+ * Perfect for "at a glance" or "key takeaways" sections.
174
+ *
175
+ * @example
176
+ * ```tsx
177
+ * <AEOSummary
178
+ * title="Key Points"
179
+ * points={[
180
+ * "Family law covers divorce, custody, and adoption",
181
+ * "Ohio is an equitable distribution state",
182
+ * "Child custody decisions prioritize the child's best interests"
183
+ * ]}
184
+ * />
185
+ * ```
186
+ */
187
+ declare function AEOSummary({ title, points, speakable, entityId, className, }: AEOSummaryProps): React.ReactElement;
188
+ /**
189
+ * AEODefinition - Term definition optimized for featured snippets
190
+ *
191
+ * Creates a clear definition format that works well for
192
+ * "What is X?" queries in AI search results.
193
+ *
194
+ * @example
195
+ * ```tsx
196
+ * <AEODefinition
197
+ * term="Equitable Distribution"
198
+ * definition="A legal principle used in Ohio divorce cases where marital
199
+ * property is divided fairly, though not necessarily equally, between spouses."
200
+ * />
201
+ * ```
202
+ */
203
+ declare function AEODefinition({ term, definition, speakable, entityId, source, className, }: AEODefinitionProps): React.ReactElement;
204
+ /**
205
+ * AEOSteps - How-to steps for featured snippets
206
+ *
207
+ * Creates numbered steps with HowTo schema markup.
208
+ *
209
+ * @example
210
+ * ```tsx
211
+ * <AEOSteps title="How to File for Divorce in Ohio">
212
+ * <AEOStep number={1} name="Gather Documents">
213
+ * Collect financial records, property deeds, and marriage certificate.
214
+ * </AEOStep>
215
+ * <AEOStep number={2} name="File Petition">
216
+ * Submit divorce petition to the county court.
217
+ * </AEOStep>
218
+ * </AEOSteps>
219
+ * ```
220
+ */
221
+ declare function AEOSteps({ title, children, speakable, entityId, className, }: {
222
+ title: string;
223
+ children: React.ReactNode;
224
+ speakable?: boolean;
225
+ entityId?: string;
226
+ className?: string;
227
+ }): React.ReactElement;
228
+ /**
229
+ * AEOStep - Individual step within AEOSteps
230
+ */
231
+ declare function AEOStep({ number, name, children, }: {
232
+ number: number;
233
+ name: string;
234
+ children: React.ReactNode;
235
+ }): React.ReactElement;
236
+ /**
237
+ * AEOComparison - Comparison table for AI extraction
238
+ *
239
+ * Creates a structured comparison that AI can understand and cite.
240
+ *
241
+ * @example
242
+ * ```tsx
243
+ * <AEOComparison
244
+ * title="Divorce vs. Dissolution in Ohio"
245
+ * items={[
246
+ * { aspect: 'Agreement', optionA: 'May be contested', optionB: 'Must be agreed upon' },
247
+ * { aspect: 'Timeline', optionA: '6-12 months', optionB: '30-90 days' },
248
+ * ]}
249
+ * labelA="Divorce"
250
+ * labelB="Dissolution"
251
+ * />
252
+ * ```
253
+ */
254
+ declare function AEOComparison({ title, items, labelA, labelB, speakable, entityId, className, }: {
255
+ title: string;
256
+ items: Array<{
257
+ aspect: string;
258
+ optionA: string;
259
+ optionB: string;
260
+ }>;
261
+ labelA: string;
262
+ labelB: string;
263
+ speakable?: boolean;
264
+ entityId?: string;
265
+ className?: string;
266
+ }): React.ReactElement;
267
+ /**
268
+ * AEOClaim - AI-Verifiable Claim with Provenance
269
+ *
270
+ * Wraps factual claims with machine-readable source and confidence data.
271
+ * LLMs prioritize verifiable facts with clear provenance.
272
+ *
273
+ * @example
274
+ * ```tsx
275
+ * <AEOClaim
276
+ * source="KRS 281A.170"
277
+ * sourceUrl="https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=6398"
278
+ * confidence={0.95}
279
+ * claimType="statute"
280
+ * >
281
+ * A CDL suspension is triggered at 26 MPH over the limit.
282
+ * </AEOClaim>
283
+ * ```
284
+ */
285
+ declare function AEOClaim({ source, sourceUrl, confidence, claimType, retrievedAt, children, className, }: AEOClaimProps): React.ReactElement;
286
+ /**
287
+ * AEOEntity - Inline entity annotation
288
+ *
289
+ * Wraps entity mentions with machine-readable entity IDs for knowledge graph linking.
290
+ *
291
+ * @example
292
+ * ```tsx
293
+ * <AEOEntity entityId="person-123" entityType="person" name="Shannon Sexton">
294
+ * Attorney Shannon Sexton
295
+ * </AEOEntity> handles CDL defense cases.
296
+ * ```
297
+ */
298
+ declare function AEOEntity({ entityId, entityType, name, url, children, className, }: {
299
+ entityId: string;
300
+ entityType: 'organization' | 'person' | 'service' | 'product' | 'location' | 'concept' | 'credential';
301
+ name: string;
302
+ url?: string;
303
+ children: React.ReactNode;
304
+ className?: string;
305
+ }): React.ReactElement;
306
+ /**
307
+ * AEOProvenanceList - Display sources/citations for content
308
+ *
309
+ * Shows a list of provenance sources with machine-readable attributes.
310
+ * LLMs use this to verify claims and assess source quality.
311
+ *
312
+ * @example
313
+ * ```tsx
314
+ * <AEOProvenanceList
315
+ * title="Sources"
316
+ * sources={[
317
+ * { id: '1', source_type: 'legal_statute', title: 'KRS 281A.170', url: '...' },
318
+ * { id: '2', source_type: 'news_article', title: 'CDL News', publisher: 'Transport Weekly' }
319
+ * ]}
320
+ * />
321
+ * ```
322
+ */
323
+ declare function AEOProvenanceList({ sources, title, className, }: {
324
+ sources: Array<{
325
+ id: string;
326
+ source_type: 'press_release' | 'news_article' | 'legal_statute' | 'research_paper' | 'official_document' | 'internal' | 'citation';
327
+ title: string;
328
+ url?: string;
329
+ publisher?: string;
330
+ published_at?: string;
331
+ accessed_at?: string;
332
+ excerpt?: string;
333
+ confidence?: number;
334
+ identifier?: string;
335
+ }>;
336
+ title?: string;
337
+ className?: string;
338
+ }): React.ReactElement;
339
+ /**
340
+ * AEOCitedContent - Content with inline citations linked to sources
341
+ *
342
+ * Wraps content that contains numbered citations [1], [2] etc., and links them
343
+ * to a list of provenance sources for AI verification.
344
+ *
345
+ * @example
346
+ * ```tsx
347
+ * <AEOCitedContent
348
+ * sources={[
349
+ * { id: '1', source_type: 'legal_statute', title: 'KRS 281A.170' },
350
+ * { id: '2', source_type: 'news_article', title: 'FMCSA Guidelines 2024' }
351
+ * ]}
352
+ * showSourcesList={true}
353
+ * >
354
+ * <p>Kentucky law requires CDL holders to report violations within 30 days [1].
355
+ * Federal guidelines add additional requirements [2].</p>
356
+ * </AEOCitedContent>
357
+ * ```
358
+ */
359
+ declare function AEOCitedContent({ children, sources, showSourcesList, className, }: {
360
+ children: React.ReactNode;
361
+ sources: Array<{
362
+ id: string;
363
+ source_type: 'press_release' | 'news_article' | 'legal_statute' | 'research_paper' | 'official_document' | 'internal' | 'citation';
364
+ title: string;
365
+ url?: string;
366
+ publisher?: string;
367
+ published_at?: string;
368
+ accessed_at?: string;
369
+ excerpt?: string;
370
+ confidence?: number;
371
+ identifier?: string;
372
+ }>;
373
+ showSourcesList?: boolean;
374
+ className?: string;
375
+ }): React.ReactElement;
376
+
377
+ /**
378
+ * @sonordev/site-kit/llms - API Functions
379
+ *
380
+ * Data fetching for LLM visibility content.
381
+ * Pulls from Signal knowledge base and project data.
382
+ */
383
+
384
+ /**
385
+ * Fetch all LLM visibility data for a project - cached per request
386
+ * This is the main data source for llms.txt generation
387
+ *
388
+ * @param projectId - Optional project ID (API key identifies project if omitted)
389
+ */
390
+ declare const getLLMsData: (projectId?: string) => Promise<LLMsDataResponse | null>;
391
+ /**
392
+ * Fetch business info only - cached per request
393
+ */
394
+ declare const getBusinessInfo: (projectId?: string) => Promise<LLMBusinessInfo | null>;
395
+ /**
396
+ * Fetch services list - cached per request
397
+ */
398
+ declare const getServices: (projectId?: string) => Promise<LLMService[]>;
399
+ /**
400
+ * Fetch FAQ items - cached per request
401
+ */
402
+ declare const getFAQItems: (projectId?: string, limit?: number) => Promise<LLMFAQItem[]>;
403
+ /**
404
+ * Fetch page summaries for sitemap - cached per request
405
+ */
406
+ declare const getPageSummaries: (projectId?: string, limit?: number) => Promise<LLMPageSummary[]>;
407
+ /**
408
+ * Fetch AI-optimized llms.txt markdown from Portal API (build-time)
409
+ * Used by writeLLMsTxtToPublic for static file generation
410
+ */
411
+ declare function getOptimizedLLMsTxt(options?: {
412
+ full?: boolean;
413
+ apiUrl?: string;
414
+ apiKey?: string;
415
+ }): Promise<string | null>;
416
+
417
+ /**
418
+ * @sonordev/site-kit/llms - Build-Time Write
419
+ *
420
+ * Fetches AI-optimized llms.txt from Portal API and writes to public/llms.txt
421
+ * at build time. Integrates with sitemap flow when optimizedLLMsTxt is enabled.
422
+ */
423
+
424
+ interface WriteLLMsTxtOptions {
425
+ /** Output directory (default: public, relative to cwd) */
426
+ outputDir?: string;
427
+ /** Write llms-full.txt as well */
428
+ full?: boolean;
429
+ /** Portal API URL */
430
+ apiUrl?: string;
431
+ /** Portal API key */
432
+ apiKey?: string;
433
+ /** Fallback to non-optimized when API fails */
434
+ fallbackToLocal?: boolean;
435
+ /** When Portal returns empty services/faq/pages, use this to supply local site data */
436
+ getLocalData?: () => Promise<LLMsDataResponse | null>;
437
+ }
438
+ /**
439
+ * Fetch optimized llms.txt from Portal and write to public/llms.txt
440
+ * Called at build time after sitemap sync (when optimizedLLMsTxt is enabled)
441
+ */
442
+ declare function writeLLMsTxtToPublic(options?: WriteLLMsTxtOptions): Promise<{
443
+ success: boolean;
444
+ path: string;
445
+ optimized: boolean;
446
+ }>;
447
+
448
+ export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, DEFAULT_SPEAKABLE_SELECTORS, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsDataResponse, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps, type WriteLLMsTxtOptions, createLLMsFullTxtHandler, createLLMsTxtHandler, createSpeakableSchema, generateLLMsFullTxt, generateLLMsTxt, getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices, getSpeakableSelectorsForPage, writeLLMsTxtToPublic };