blume 2.0.3 → 2.1.1

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 (607) hide show
  1. package/AGENTS.md +1 -0
  2. package/CHANGELOG.md +142 -0
  3. package/README.md +1 -1
  4. package/dist/cli/{chunk-5f86nr5m.js → chunk-073rdvgb.js} +21 -48
  5. package/dist/cli/{chunk-5f86nr5m.js.map → chunk-073rdvgb.js.map} +4 -5
  6. package/dist/cli/{chunk-ga0pf4aj.js → chunk-0n9xkp3d.js} +12 -3
  7. package/dist/cli/{chunk-ga0pf4aj.js.map → chunk-0n9xkp3d.js.map} +3 -3
  8. package/dist/cli/chunk-150jk7km.js +52 -0
  9. package/dist/cli/chunk-150jk7km.js.map +10 -0
  10. package/dist/cli/{chunk-9t7a85s3.js → chunk-313vnn40.js} +30 -19
  11. package/dist/cli/chunk-313vnn40.js.map +10 -0
  12. package/dist/cli/{chunk-tkacnehg.js → chunk-3v3ffbrj.js} +2 -2
  13. package/dist/cli/{chunk-q58y5e6a.js → chunk-3x6x3pph.js} +46 -24
  14. package/dist/cli/chunk-3x6x3pph.js.map +10 -0
  15. package/dist/cli/{chunk-1d7ve1dm.js → chunk-42t4jxdx.js} +37 -5
  16. package/dist/cli/chunk-42t4jxdx.js.map +12 -0
  17. package/dist/cli/{chunk-8ktnccpt.js → chunk-54ztw1nj.js} +21 -2
  18. package/dist/cli/chunk-54ztw1nj.js.map +10 -0
  19. package/dist/cli/{chunk-hm3vjy5s.js → chunk-5vjtgs6e.js} +28 -10
  20. package/dist/cli/{chunk-hm3vjy5s.js.map → chunk-5vjtgs6e.js.map} +4 -4
  21. package/dist/cli/chunk-66w9j7p6.js +322 -0
  22. package/dist/cli/chunk-66w9j7p6.js.map +14 -0
  23. package/dist/cli/{chunk-2hsdwb9n.js → chunk-7ppf1rva.js} +34 -18
  24. package/dist/cli/chunk-7ppf1rva.js.map +10 -0
  25. package/dist/cli/{chunk-r9rcc4w7.js → chunk-8y2kmjv8.js} +7 -7
  26. package/dist/cli/{chunk-r20tn01b.js → chunk-c1y538kd.js} +8 -2
  27. package/dist/cli/{chunk-r20tn01b.js.map → chunk-c1y538kd.js.map} +3 -3
  28. package/dist/cli/{chunk-2eytanqx.js → chunk-c887fj0s.js} +2 -2
  29. package/dist/cli/{chunk-p3v96n38.js → chunk-cfyg47zg.js} +16 -6
  30. package/dist/cli/chunk-cfyg47zg.js.map +10 -0
  31. package/dist/cli/chunk-cm89scdv.js +443 -0
  32. package/dist/cli/chunk-cm89scdv.js.map +11 -0
  33. package/dist/cli/{chunk-akbpwfxc.js → chunk-dzwehpy7.js} +2 -2
  34. package/dist/cli/{chunk-wrr3j9w9.js → chunk-e6atmn4h.js} +299 -72
  35. package/dist/cli/chunk-e6atmn4h.js.map +36 -0
  36. package/dist/cli/{chunk-tzmab476.js → chunk-e8xw9qkh.js} +8 -6
  37. package/dist/cli/{chunk-tzmab476.js.map → chunk-e8xw9qkh.js.map} +3 -3
  38. package/dist/cli/{chunk-6dsbexzp.js → chunk-e9q7a2ak.js} +17 -15
  39. package/dist/cli/{chunk-6dsbexzp.js.map → chunk-e9q7a2ak.js.map} +2 -2
  40. package/dist/cli/{chunk-pv29h0wf.js → chunk-ehweg4fr.js} +5155 -1249
  41. package/dist/cli/chunk-ehweg4fr.js.map +218 -0
  42. package/dist/cli/{chunk-c8chx29p.js → chunk-ep6nd0rn.js} +390 -318
  43. package/dist/cli/chunk-ep6nd0rn.js.map +36 -0
  44. package/dist/cli/{chunk-p73c0m7w.js → chunk-fdrkhpjy.js} +18 -15
  45. package/dist/cli/{chunk-p73c0m7w.js.map → chunk-fdrkhpjy.js.map} +3 -3
  46. package/dist/cli/{chunk-2z928egk.js → chunk-ft9vfys6.js} +5 -5
  47. package/dist/cli/{chunk-5m5nmvyq.js → chunk-gb420vvz.js} +316 -79
  48. package/dist/cli/chunk-gb420vvz.js.map +17 -0
  49. package/dist/cli/{chunk-vg9r4eb9.js → chunk-hebn0tpx.js} +86 -13
  50. package/dist/cli/chunk-hebn0tpx.js.map +14 -0
  51. package/dist/cli/{chunk-35d4wj9f.js → chunk-htrwgabr.js} +41 -23
  52. package/dist/cli/chunk-htrwgabr.js.map +15 -0
  53. package/dist/cli/{chunk-g4hq16wv.js → chunk-hx3xqnk9.js} +16 -14
  54. package/dist/cli/{chunk-g4hq16wv.js.map → chunk-hx3xqnk9.js.map} +2 -2
  55. package/dist/cli/chunk-j134vrp2.js +65 -0
  56. package/dist/cli/chunk-j134vrp2.js.map +10 -0
  57. package/dist/cli/{chunk-a58773jm.js → chunk-kma9f6sf.js} +2 -2
  58. package/dist/cli/chunk-kwrg63tm.js +31 -0
  59. package/dist/cli/chunk-kwrg63tm.js.map +10 -0
  60. package/dist/cli/{chunk-ey84smr6.js → chunk-mrcccgnh.js} +6 -6
  61. package/dist/cli/{chunk-ey84smr6.js.map → chunk-mrcccgnh.js.map} +1 -1
  62. package/dist/cli/{chunk-yfyb25rh.js → chunk-n0v7m8ry.js} +24 -8
  63. package/dist/cli/chunk-n0v7m8ry.js.map +14 -0
  64. package/dist/cli/{chunk-j85vccga.js → chunk-ncj7w596.js} +576 -367
  65. package/dist/cli/chunk-ncj7w596.js.map +35 -0
  66. package/dist/cli/{chunk-5xvm6tfj.js → chunk-nq1d20w2.js} +17 -15
  67. package/dist/cli/{chunk-5xvm6tfj.js.map → chunk-nq1d20w2.js.map} +2 -2
  68. package/dist/cli/{chunk-pehfxfta.js → chunk-nrns10mj.js} +6 -98
  69. package/dist/cli/chunk-nrns10mj.js.map +10 -0
  70. package/dist/cli/{chunk-crgn1q09.js → chunk-sds923fa.js} +4 -4
  71. package/dist/cli/chunk-t2m5j4pr.js +104 -0
  72. package/dist/cli/chunk-t2m5j4pr.js.map +11 -0
  73. package/dist/cli/{chunk-acanzt5p.js → chunk-tdqhyxfz.js} +6 -6
  74. package/dist/cli/chunk-tphac74f.js +126 -0
  75. package/dist/cli/chunk-tphac74f.js.map +11 -0
  76. package/dist/cli/chunk-w1r4vase.js +18 -0
  77. package/dist/cli/chunk-w1r4vase.js.map +10 -0
  78. package/dist/cli/{chunk-3em5wd2y.js → chunk-zccbjcj0.js} +4 -3
  79. package/dist/cli/{chunk-3em5wd2y.js.map → chunk-zccbjcj0.js.map} +2 -2
  80. package/dist/cli/index.js +31 -20
  81. package/dist/cli/index.js.map +5 -5
  82. package/dist/types/ai/agent-surface.d.ts +8 -7
  83. package/dist/types/ai/ai-catalog.d.ts +7 -0
  84. package/dist/types/ai/ask-context.d.ts +26 -0
  85. package/dist/types/ai/ask.d.ts +271 -58
  86. package/dist/types/ai/component-markdown.d.ts +2 -0
  87. package/dist/types/ai/index.d.ts +2 -2
  88. package/dist/types/ai/openapi-components.d.ts +4 -1
  89. package/dist/types/ai/site-skill.d.ts +26 -0
  90. package/dist/types/ai/skills.d.ts +16 -0
  91. package/dist/types/astro/integration.d.ts +9 -0
  92. package/dist/types/astro/markdown-negotiation.d.ts +3 -0
  93. package/dist/types/astro/pages.d.ts +10 -0
  94. package/dist/types/captcha/hcaptcha.d.ts +27 -0
  95. package/dist/types/captcha/index.d.ts +28 -0
  96. package/dist/types/captcha/schema.d.ts +29 -0
  97. package/dist/types/captcha/turnstile.d.ts +28 -0
  98. package/dist/types/cli/init/scaffold.d.ts +1 -1
  99. package/dist/types/components/content/api-field.d.ts +62 -0
  100. package/dist/types/components/content/api-page.d.ts +100 -0
  101. package/dist/types/components/layout/nav-utils.d.ts +26 -0
  102. package/dist/types/components/openapi/code-samples.d.ts +29 -0
  103. package/dist/types/components/openapi/helpers.d.ts +158 -0
  104. package/dist/types/components/openapi/security.d.ts +95 -0
  105. package/dist/types/components/openapi/snippets.d.ts +60 -0
  106. package/dist/types/consent/ethyca.d.ts +48 -0
  107. package/dist/types/consent/index.d.ts +37 -0
  108. package/dist/types/consent/native.d.ts +28 -0
  109. package/dist/types/consent/osano.d.ts +42 -0
  110. package/dist/types/consent/schema.d.ts +110 -0
  111. package/dist/types/core/changelog-index.d.ts +8 -0
  112. package/dist/types/core/config-input.d.ts +217 -23
  113. package/dist/types/core/data.d.ts +53 -4
  114. package/dist/types/core/footer.d.ts +8 -0
  115. package/dist/types/core/i18n-ui.d.ts +88 -0
  116. package/dist/types/core/includes.d.ts +8 -2
  117. package/dist/types/core/links.d.ts +8 -0
  118. package/dist/types/core/localizable.d.ts +7 -0
  119. package/dist/types/core/page-modes.d.ts +29 -0
  120. package/dist/types/core/probe.d.ts +2 -0
  121. package/dist/types/core/project-graph.d.ts +6 -0
  122. package/dist/types/core/redirect-patterns.d.ts +152 -0
  123. package/dist/types/core/related.d.ts +40 -0
  124. package/dist/types/core/schema.d.ts +670 -56
  125. package/dist/types/core/sources/cache.d.ts +3 -0
  126. package/dist/types/core/sources/contentful-rich-text.d.ts +11 -2
  127. package/dist/types/core/sources/contentful.d.ts +17 -1
  128. package/dist/types/core/sources/lexical.d.ts +5 -0
  129. package/dist/types/core/sources/normalize.d.ts +20 -1
  130. package/dist/types/core/sources/read.d.ts +5 -0
  131. package/dist/types/core/sources/remote.d.ts +37 -10
  132. package/dist/types/core/sources/sanity.d.ts +1 -1
  133. package/dist/types/core/types.d.ts +18 -1
  134. package/dist/types/core/variables.d.ts +42 -0
  135. package/dist/types/deploy/adapter-output.d.ts +2 -1
  136. package/dist/types/deploy/adapters/cloudflare.d.ts +7 -5
  137. package/dist/types/deploy/adapters/node.d.ts +58 -23
  138. package/dist/types/deploy/adapters/registry.d.ts +10 -0
  139. package/dist/types/deploy/adapters/types.d.ts +3 -2
  140. package/dist/types/deploy/node-headers.d.ts +13 -2
  141. package/dist/types/deploy/platforms/cloudflare.d.ts +15 -7
  142. package/dist/types/deploy/platforms/netlify.d.ts +7 -0
  143. package/dist/types/deploy/platforms/node.d.ts +3 -1
  144. package/dist/types/deploy/platforms/types.d.ts +18 -7
  145. package/dist/types/deploy/platforms/vercel.d.ts +26 -1
  146. package/dist/types/deploy/redirects.d.ts +55 -11
  147. package/dist/types/deploy/sitemap.d.ts +2 -1
  148. package/dist/types/deploy/vercel-negotiation.d.ts +51 -21
  149. package/dist/types/markdown/code-title.d.ts +17 -0
  150. package/dist/types/markdown/features.d.ts +3 -2
  151. package/dist/types/narration/build.d.ts +70 -0
  152. package/dist/types/narration/provider.d.ts +26 -0
  153. package/dist/types/narration/script.d.ts +154 -0
  154. package/dist/types/openapi/checks.d.ts +27 -0
  155. package/dist/types/openapi/graphql.d.ts +6 -0
  156. package/dist/types/openapi/model.d.ts +27 -10
  157. package/dist/types/openapi/overlay.d.ts +54 -0
  158. package/dist/types/openapi/parse.d.ts +16 -0
  159. package/dist/types/openapi/references.d.ts +30 -4
  160. package/dist/types/ratelimit/cloudflare.d.ts +39 -0
  161. package/dist/types/ratelimit/index.d.ts +27 -0
  162. package/dist/types/ratelimit/memory.d.ts +36 -0
  163. package/dist/types/ratelimit/schema.d.ts +119 -0
  164. package/dist/types/ratelimit/upstash.d.ts +46 -0
  165. package/dist/types/ratelimit/wrangler.d.ts +23 -0
  166. package/dist/types/reference/asyncapi.d.ts +10 -10
  167. package/dist/types/reference/graphql.d.ts +89 -11
  168. package/dist/types/reference/index.d.ts +1 -1
  169. package/dist/types/reference/openapi.d.ts +33 -12
  170. package/dist/types/reference/options.d.ts +82 -6
  171. package/dist/types/reference/scalar.d.ts +13 -0
  172. package/dist/types/reference/schema.d.ts +144 -36
  173. package/dist/types/search/adapters/registry.d.ts +3 -0
  174. package/dist/types/search/adapters/typesense.d.ts +14 -4
  175. package/dist/types/search/build.d.ts +3 -1
  176. package/dist/types/search/documents.d.ts +12 -1
  177. package/dist/types/search/orama-index.d.ts +13 -9
  178. package/dist/types/search/sync/algolia.d.ts +5 -2
  179. package/dist/types/search/sync/index.d.ts +3 -1
  180. package/dist/types/search/sync/typesense.d.ts +11 -7
  181. package/dist/types/seo/metatags.d.ts +20 -0
  182. package/dist/types/sources/contentful.d.ts +16 -0
  183. package/dist/types/sources/github-releases.d.ts +8 -1
  184. package/dist/types/sources/payload.d.ts +2 -0
  185. package/dist/types/sources/registry.d.ts +54 -0
  186. package/dist/types/sources/shared.d.ts +3 -0
  187. package/dist/types/sources/strapi.d.ts +2 -0
  188. package/docs/01-quickstart.mdx +4 -2
  189. package/docs/02-deployment.mdx +71 -17
  190. package/docs/03-upgrading.mdx +4 -4
  191. package/docs/04-migrating.mdx +1 -1
  192. package/docs/advanced/changelog.mdx +13 -2
  193. package/docs/advanced/skills.mdx +15 -1
  194. package/docs/cli/audit.mdx +51 -8
  195. package/docs/cli/doctor.mdx +5 -1
  196. package/docs/cli/evals.mdx +4 -4
  197. package/docs/cli/index.mdx +1 -0
  198. package/docs/cli/translate.mdx +1 -0
  199. package/docs/cli/validate.mdx +4 -3
  200. package/docs/configuration/analytics.mdx +3 -1
  201. package/docs/configuration/assistant.mdx +194 -38
  202. package/docs/configuration/consent.mdx +100 -0
  203. package/docs/configuration/customization.mdx +8 -6
  204. package/docs/configuration/export.mdx +5 -3
  205. package/docs/configuration/index.mdx +64 -5
  206. package/docs/configuration/meta.ts +3 -0
  207. package/docs/configuration/narration.mdx +119 -0
  208. package/docs/configuration/rate-limiting.mdx +90 -0
  209. package/docs/configuration/search.mdx +63 -12
  210. package/docs/configuration/theming.mdx +3 -1
  211. package/docs/content/components.mdx +108 -2
  212. package/docs/content/frontmatter.mdx +80 -2
  213. package/docs/content/i18n.mdx +39 -4
  214. package/docs/content/includes.mdx +16 -0
  215. package/docs/content/meta.mdx +1 -0
  216. package/docs/content/meta.ts +1 -0
  217. package/docs/content/navigation.mdx +32 -10
  218. package/docs/content/sources/contentful.mdx +35 -0
  219. package/docs/content/sources/custom.mdx +43 -0
  220. package/docs/content/sources/github-releases.mdx +39 -0
  221. package/docs/content/sources/index.mdx +91 -0
  222. package/docs/content/sources/meta.ts +16 -0
  223. package/docs/content/sources/notion.mdx +32 -0
  224. package/docs/content/sources/obsidian.mdx +37 -0
  225. package/docs/content/sources/payload.mdx +31 -0
  226. package/docs/content/sources/remote-mdx.mdx +44 -0
  227. package/docs/content/sources/sanity.mdx +29 -0
  228. package/docs/content/sources/strapi.mdx +32 -0
  229. package/docs/content/syntax.mdx +69 -4
  230. package/docs/content/variables.mdx +41 -0
  231. package/docs/discoverability/agent-discovery.mdx +29 -2
  232. package/docs/discoverability/index.mdx +2 -2
  233. package/docs/discoverability/json-api.mdx +2 -0
  234. package/docs/discoverability/llms-txt.mdx +2 -2
  235. package/docs/discoverability/markdown.mdx +3 -1
  236. package/docs/discoverability/mcp.mdx +4 -0
  237. package/docs/discoverability/metadata.mdx +17 -0
  238. package/docs/discoverability/sitemap-and-robots.mdx +1 -1
  239. package/docs/references/api-pages.mdx +74 -0
  240. package/docs/references/asyncapi.mdx +4 -2
  241. package/docs/references/graphql.mdx +14 -2
  242. package/docs/references/meta.ts +1 -1
  243. package/docs/references/openapi.mdx +148 -7
  244. package/docs/references/scalar.mdx +3 -1
  245. package/package.json +43 -8
  246. package/skills/blume/SKILL.md +3 -0
  247. package/skills/blume-migrate/SKILL.md +6 -6
  248. package/skills/blume-migrate/references/docusaurus.md +7 -7
  249. package/skills/blume-migrate/references/fumadocs.md +17 -13
  250. package/skills/blume-migrate/references/mintlify.md +37 -19
  251. package/skills/blume-migrate/references/nextra.md +10 -7
  252. package/skills/blume-migrate/references/starlight.md +11 -8
  253. package/skills/blume-migrate/scripts/mintlify-codemod.mjs +60 -14
  254. package/skills/blume-write-skill/SKILL.md +82 -0
  255. package/src/ai/agent-readability.ts +2 -1
  256. package/src/ai/agent-surface.ts +9 -7
  257. package/src/ai/ai-catalog.ts +6 -3
  258. package/src/ai/ask-context.ts +103 -20
  259. package/src/ai/ask-data.ts +6 -0
  260. package/src/ai/ask-limits.ts +13 -0
  261. package/src/ai/ask-tools.ts +142 -0
  262. package/src/ai/ask.ts +354 -76
  263. package/src/ai/changelog-markdown.ts +11 -6
  264. package/src/ai/component-markdown.ts +76 -1
  265. package/src/ai/cors.ts +14 -3
  266. package/src/ai/index.ts +12 -0
  267. package/src/ai/llms.ts +6 -2
  268. package/src/ai/markdown.ts +2 -1
  269. package/src/ai/mcp/data.ts +6 -0
  270. package/src/ai/mcp/query.ts +14 -6
  271. package/src/ai/openapi-components.ts +36 -6
  272. package/src/ai/relative-links.ts +4 -38
  273. package/src/ai/site-skill.ts +274 -0
  274. package/src/ai/skills.ts +35 -2
  275. package/src/ai/write-skill.ts +97 -0
  276. package/src/astro/generate.ts +210 -66
  277. package/src/astro/index.ts +1 -0
  278. package/src/astro/integration.ts +42 -4
  279. package/src/astro/markdown-negotiation.ts +3 -0
  280. package/src/astro/module-types.ts +9 -1
  281. package/src/astro/pages.ts +23 -0
  282. package/src/astro/templates.ts +406 -108
  283. package/src/astro/variables.ts +31 -0
  284. package/src/audit/catalog.ts +38 -3
  285. package/src/audit/checks/contrast.ts +183 -0
  286. package/src/audit/checks/i18n.ts +2 -3
  287. package/src/audit/checks/indexability.ts +2 -3
  288. package/src/audit/checks/links.ts +19 -13
  289. package/src/audit/checks/network.ts +110 -6
  290. package/src/audit/checks/redirects.ts +6 -4
  291. package/src/audit/checks/robots.ts +58 -2
  292. package/src/audit/checks/sitemap.ts +2 -3
  293. package/src/audit/redirects.ts +46 -15
  294. package/src/audit/run.ts +5 -0
  295. package/src/audit/types.ts +4 -1
  296. package/src/audit/url.ts +14 -5
  297. package/src/blume-modules.d.ts +12 -1
  298. package/src/captcha/client.ts +152 -0
  299. package/src/captcha/hcaptcha.ts +36 -0
  300. package/src/captcha/index.ts +28 -0
  301. package/src/captcha/schema.ts +32 -0
  302. package/src/captcha/turnstile.ts +38 -0
  303. package/src/captcha/verify.ts +71 -0
  304. package/src/cli/args.ts +51 -0
  305. package/src/cli/build-failure.ts +23 -0
  306. package/src/cli/command-meta.ts +5 -0
  307. package/src/cli/commands/audit.ts +10 -1
  308. package/src/cli/commands/dev.ts +18 -2
  309. package/src/cli/commands/doctor.ts +67 -28
  310. package/src/cli/commands/eval.ts +36 -4
  311. package/src/cli/commands/init.ts +6 -4
  312. package/src/cli/commands/skill.ts +96 -0
  313. package/src/cli/commands/validate.ts +10 -1
  314. package/src/cli/index.ts +5 -0
  315. package/src/cli/init/scaffold.ts +3 -3
  316. package/src/cli/prepare.ts +6 -3
  317. package/src/cli/required-secrets.ts +72 -30
  318. package/src/components/BlumePage.astro +2 -0
  319. package/src/components/content/ApiEndpoint.astro +18 -0
  320. package/src/components/content/ApiField.astro +79 -0
  321. package/src/components/content/ApiPlayground.astro +66 -0
  322. package/src/components/content/ApiRail.astro +19 -0
  323. package/src/components/content/Color.astro +1 -0
  324. package/src/components/content/FileTree.astro +1 -0
  325. package/src/components/content/GithubInfo.astro +1 -0
  326. package/src/components/content/Panel.astro +1 -0
  327. package/src/components/content/ParamField.astro +25 -0
  328. package/src/components/content/RequestExample.astro +17 -0
  329. package/src/components/content/ResponseExample.astro +17 -0
  330. package/src/components/content/ResponseField.astro +32 -0
  331. package/src/components/content/Step.astro +1 -0
  332. package/src/components/content/Tile.astro +1 -0
  333. package/src/components/content/Tooltip.astro +1 -0
  334. package/src/components/content/Tree.astro +1 -0
  335. package/src/components/content/TypeTable.astro +4 -1
  336. package/src/components/content/View.astro +21 -0
  337. package/src/components/content/ViewSwitcher.astro +168 -0
  338. package/src/components/content/api-field.ts +103 -0
  339. package/src/components/content/api-page.ts +248 -0
  340. package/src/components/content/mermaid-element.ts +15 -1
  341. package/src/components/content/view-switcher.ts +71 -0
  342. package/src/components/index.ts +2 -0
  343. package/src/components/islands/Assistant.astro +10 -1
  344. package/src/components/islands/assistant.tsx +104 -14
  345. package/src/components/islands/code-question.ts +62 -0
  346. package/src/components/islands/hooks.ts +136 -21
  347. package/src/components/islands/support-link.ts +68 -0
  348. package/src/components/layout/Analytics.astro +11 -2
  349. package/src/components/layout/Banner.astro +14 -10
  350. package/src/components/layout/Breadcrumbs.astro +6 -2
  351. package/src/components/layout/ConsentBanner.astro +62 -0
  352. package/src/components/layout/ConsentHead.astro +38 -0
  353. package/src/components/layout/Directory.astro +94 -0
  354. package/src/components/layout/DrawerSwitchers.astro +51 -0
  355. package/src/components/layout/Empty.astro +2 -2
  356. package/src/components/layout/Header.astro +122 -80
  357. package/src/components/layout/LanguageSwitcher.astro +48 -15
  358. package/src/components/layout/NarrationPlayer.astro +1085 -0
  359. package/src/components/layout/NavSelector.astro +33 -7
  360. package/src/components/layout/PageActions.astro +139 -24
  361. package/src/components/layout/PageFeedback.astro +54 -49
  362. package/src/components/layout/PageLayout.astro +71 -3
  363. package/src/components/layout/ReferenceLayout.astro +17 -6
  364. package/src/components/layout/RelatedPages.astro +42 -0
  365. package/src/components/layout/RootLayout.astro +318 -47
  366. package/src/components/layout/Search.astro +47 -19
  367. package/src/components/layout/SiteFooter.astro +124 -0
  368. package/src/components/layout/SiteMetatags.astro +16 -0
  369. package/src/components/layout/TableOfContents.astro +24 -17
  370. package/src/components/layout/consent/native.ts +79 -0
  371. package/src/components/layout/consent/types.ts +37 -0
  372. package/src/components/layout/footer-links.ts +53 -0
  373. package/src/components/layout/footer-socials.ts +87 -0
  374. package/src/components/layout/head-scripts.ts +6 -1
  375. package/src/components/layout/locale-redirect.ts +107 -0
  376. package/src/components/layout/nav-utils.ts +83 -0
  377. package/src/components/layout/page-feedback.ts +96 -0
  378. package/src/components/layout/search/algolia.ts +10 -1
  379. package/src/components/layout/search/analytics.ts +126 -0
  380. package/src/components/layout/search/endpoint.ts +48 -5
  381. package/src/components/layout/search/flexsearch.ts +17 -5
  382. package/src/components/layout/search/orama-cloud.ts +26 -14
  383. package/src/components/layout/search/pagefind.ts +114 -5
  384. package/src/components/layout/search/types.ts +32 -0
  385. package/src/components/layout/search/typesense.ts +19 -3
  386. package/src/components/openapi/AsyncApiOperation.astro +14 -7
  387. package/src/components/openapi/Authorization.astro +10 -0
  388. package/src/components/openapi/GraphqlOperation.astro +5 -0
  389. package/src/components/openapi/Operation.astro +184 -13
  390. package/src/components/openapi/ParametersTable.astro +8 -4
  391. package/src/components/openapi/Playground.astro +7 -1
  392. package/src/components/openapi/RequestBody.astro +24 -5
  393. package/src/components/openapi/RequestPanel.astro +59 -7
  394. package/src/components/openapi/Responses.astro +7 -4
  395. package/src/components/openapi/SchemaTable.astro +15 -3
  396. package/src/components/openapi/async-snippets.ts +65 -9
  397. package/src/components/openapi/async.ts +123 -29
  398. package/src/components/openapi/code-samples.ts +97 -0
  399. package/src/components/openapi/graphql-helpers.ts +35 -12
  400. package/src/components/openapi/helpers.ts +36 -2
  401. package/src/components/openapi/message-model.ts +54 -11
  402. package/src/components/openapi/message.ts +14 -4
  403. package/src/components/openapi/operation-model.ts +16 -7
  404. package/src/components/openapi/playground-client.ts +24 -5
  405. package/src/components/openapi/playground-schema.ts +1 -1
  406. package/src/components/openapi/schema-tree.ts +44 -14
  407. package/src/components/openapi/security.ts +16 -3
  408. package/src/components/openapi/snippets.ts +873 -10
  409. package/src/components/openapi/validate-json.ts +4 -3
  410. package/src/components/props.ts +6 -0
  411. package/src/consent/client.ts +95 -0
  412. package/src/consent/clients.ts +19 -0
  413. package/src/consent/ethyca.ts +71 -0
  414. package/src/consent/head.ts +24 -0
  415. package/src/consent/index.ts +37 -0
  416. package/src/consent/init.ts +29 -0
  417. package/src/consent/native.ts +36 -0
  418. package/src/consent/osano.ts +59 -0
  419. package/src/consent/schema.ts +30 -0
  420. package/src/core/builtin-tags.ts +5 -0
  421. package/src/core/changelog-index.ts +31 -1
  422. package/src/core/client-address.ts +19 -0
  423. package/src/core/component-diagnostics.ts +53 -0
  424. package/src/core/component-overrides.ts +32 -0
  425. package/src/core/config-input.ts +225 -23
  426. package/src/core/data.ts +46 -4
  427. package/src/core/diagnostics.ts +8 -2
  428. package/src/core/footer.ts +26 -0
  429. package/src/core/graph.ts +39 -36
  430. package/src/core/i18n-ui.ts +84 -2
  431. package/src/core/includes.ts +21 -4
  432. package/src/core/links.ts +63 -19
  433. package/src/core/localizable.ts +26 -0
  434. package/src/core/navigation.ts +43 -12
  435. package/src/core/page-modes.ts +56 -0
  436. package/src/core/probe.ts +26 -6
  437. package/src/core/project-graph.ts +163 -16
  438. package/src/core/redirect-patterns.ts +520 -0
  439. package/src/core/related.ts +131 -0
  440. package/src/core/schema.ts +339 -66
  441. package/src/core/sources/cache.ts +6 -0
  442. package/src/core/sources/contentful-rich-text.ts +29 -6
  443. package/src/core/sources/contentful.ts +135 -25
  444. package/src/core/sources/filesystem.ts +26 -4
  445. package/src/core/sources/github-releases.ts +12 -1
  446. package/src/core/sources/lexical.ts +15 -10
  447. package/src/core/sources/mdx-remote.ts +62 -10
  448. package/src/core/sources/normalize.ts +228 -41
  449. package/src/core/sources/notion.ts +7 -1
  450. package/src/core/sources/obsidian.ts +16 -3
  451. package/src/core/sources/payload.ts +38 -15
  452. package/src/core/sources/read.ts +8 -3
  453. package/src/core/sources/remote.ts +72 -15
  454. package/src/core/sources/resolve.ts +11 -1
  455. package/src/core/sources/sanity.ts +43 -25
  456. package/src/core/sources/strapi.ts +2 -2
  457. package/src/core/types.ts +19 -1
  458. package/src/core/ui-packs/ar.ts +44 -0
  459. package/src/core/ui-packs/bg.ts +46 -0
  460. package/src/core/ui-packs/bn.ts +44 -0
  461. package/src/core/ui-packs/ca.ts +47 -0
  462. package/src/core/ui-packs/cs.ts +45 -0
  463. package/src/core/ui-packs/da.ts +46 -0
  464. package/src/core/ui-packs/de.ts +47 -0
  465. package/src/core/ui-packs/el.ts +46 -0
  466. package/src/core/ui-packs/es.ts +47 -0
  467. package/src/core/ui-packs/fa.ts +46 -0
  468. package/src/core/ui-packs/fi.ts +46 -0
  469. package/src/core/ui-packs/fr.ts +47 -0
  470. package/src/core/ui-packs/he.ts +44 -0
  471. package/src/core/ui-packs/hi.ts +45 -0
  472. package/src/core/ui-packs/hr.ts +46 -0
  473. package/src/core/ui-packs/hu.ts +45 -0
  474. package/src/core/ui-packs/id.ts +46 -0
  475. package/src/core/ui-packs/it.ts +46 -0
  476. package/src/core/ui-packs/ja.ts +46 -0
  477. package/src/core/ui-packs/ko.ts +45 -0
  478. package/src/core/ui-packs/nl.ts +47 -0
  479. package/src/core/ui-packs/no.ts +45 -0
  480. package/src/core/ui-packs/pl.ts +46 -0
  481. package/src/core/ui-packs/pt-br.ts +47 -0
  482. package/src/core/ui-packs/pt.ts +46 -0
  483. package/src/core/ui-packs/ro.ts +46 -0
  484. package/src/core/ui-packs/ru.ts +46 -0
  485. package/src/core/ui-packs/sk.ts +45 -0
  486. package/src/core/ui-packs/sr.ts +46 -0
  487. package/src/core/ui-packs/sv.ts +45 -0
  488. package/src/core/ui-packs/th.ts +44 -0
  489. package/src/core/ui-packs/tr.ts +46 -0
  490. package/src/core/ui-packs/uk.ts +46 -0
  491. package/src/core/ui-packs/vi.ts +46 -0
  492. package/src/core/ui-packs/zh-tw.ts +44 -0
  493. package/src/core/ui-packs/zh.ts +44 -0
  494. package/src/core/variables.ts +103 -0
  495. package/src/deploy/adapter-output.ts +7 -2
  496. package/src/deploy/adapters/cloudflare.ts +7 -5
  497. package/src/deploy/adapters/node.ts +47 -9
  498. package/src/deploy/adapters/types.ts +7 -3
  499. package/src/deploy/artifacts.ts +79 -9
  500. package/src/deploy/cloudflare-negotiation.ts +35 -5
  501. package/src/deploy/headers.ts +2 -1
  502. package/src/deploy/node-headers.ts +63 -9
  503. package/src/deploy/platforms/cloudflare.ts +45 -9
  504. package/src/deploy/platforms/netlify.ts +35 -2
  505. package/src/deploy/platforms/node.ts +12 -2
  506. package/src/deploy/platforms/types.ts +21 -7
  507. package/src/deploy/platforms/vercel.ts +149 -17
  508. package/src/deploy/redirects.ts +151 -24
  509. package/src/deploy/rss.ts +3 -1
  510. package/src/deploy/sitemap.ts +39 -5
  511. package/src/deploy/vercel-negotiation.ts +326 -102
  512. package/src/eval/agents.ts +18 -1
  513. package/src/eval/prompts.ts +6 -3
  514. package/src/eval/report.ts +34 -13
  515. package/src/eval/run.ts +5 -0
  516. package/src/markdown/api-rail.ts +259 -0
  517. package/src/markdown/code-title.ts +35 -9
  518. package/src/markdown/features.ts +3 -2
  519. package/src/markdown/fence-meta.ts +2 -0
  520. package/src/markdown/include.ts +11 -1
  521. package/src/markdown/index.ts +28 -5
  522. package/src/markdown/math.ts +4 -4
  523. package/src/markdown/relative-links.ts +3 -2
  524. package/src/markdown/variables.ts +56 -0
  525. package/src/markdown/views.ts +82 -0
  526. package/src/narration/build.ts +412 -0
  527. package/src/narration/player.ts +249 -0
  528. package/src/narration/provider.ts +29 -0
  529. package/src/narration/script.ts +592 -0
  530. package/src/og/card.ts +7 -6
  531. package/src/openapi/checks.ts +273 -0
  532. package/src/openapi/graphql-build.ts +21 -0
  533. package/src/openapi/graphql.ts +11 -0
  534. package/src/openapi/model.ts +72 -27
  535. package/src/openapi/overlay.ts +256 -0
  536. package/src/openapi/parse.ts +182 -4
  537. package/src/openapi/references.ts +64 -8
  538. package/src/openapi/render-mdx.ts +5 -1
  539. package/src/openapi/scalar.ts +40 -6
  540. package/src/openapi/source.ts +40 -15
  541. package/src/ratelimit/cloudflare.ts +54 -0
  542. package/src/ratelimit/index.ts +30 -0
  543. package/src/ratelimit/memory.ts +45 -0
  544. package/src/ratelimit/runtime.ts +247 -0
  545. package/src/ratelimit/schema.ts +28 -0
  546. package/src/ratelimit/upstash.ts +60 -0
  547. package/src/ratelimit/wrangler.ts +70 -0
  548. package/src/reference/asyncapi.ts +2 -2
  549. package/src/reference/graphql.ts +20 -3
  550. package/src/reference/index.ts +1 -0
  551. package/src/reference/openapi.ts +21 -7
  552. package/src/reference/options.ts +80 -8
  553. package/src/reference/scalar.ts +33 -8
  554. package/src/registry/eject.ts +23 -5
  555. package/src/registry/registry.ts +7 -0
  556. package/src/search/adapters/locale-scope.ts +30 -0
  557. package/src/search/adapters/typesense.ts +14 -4
  558. package/src/search/build.ts +21 -3
  559. package/src/search/documents.ts +26 -2
  560. package/src/search/orama-index.ts +191 -34
  561. package/src/search/pagefind-ranking.ts +39 -0
  562. package/src/search/source-pages.ts +29 -0
  563. package/src/search/sync/algolia.ts +111 -10
  564. package/src/search/sync/index.ts +52 -13
  565. package/src/search/sync/orama-cloud.ts +3 -0
  566. package/src/search/sync/typesense.ts +76 -26
  567. package/src/seo/metatags.ts +67 -0
  568. package/src/sources/contentful.ts +12 -0
  569. package/src/sources/github-releases.ts +7 -1
  570. package/src/sources/shared.ts +3 -0
  571. package/src/theme/chrome-icons.ts +1 -0
  572. package/src/theme/color.ts +500 -0
  573. package/src/theme/entry.ts +85 -6
  574. package/src/theme/palette.ts +121 -45
  575. package/src/translate/prompts.ts +1 -0
  576. package/src/translate/validate.ts +31 -3
  577. package/src/upgrade/upgrade.ts +4 -171
  578. package/dist/cli/chunk-1d7ve1dm.js.map +0 -12
  579. package/dist/cli/chunk-2hsdwb9n.js.map +0 -10
  580. package/dist/cli/chunk-35d4wj9f.js.map +0 -15
  581. package/dist/cli/chunk-364znk6q.js +0 -75
  582. package/dist/cli/chunk-364znk6q.js.map +0 -11
  583. package/dist/cli/chunk-5m5nmvyq.js.map +0 -13
  584. package/dist/cli/chunk-8ktnccpt.js.map +0 -10
  585. package/dist/cli/chunk-9t7a85s3.js.map +0 -10
  586. package/dist/cli/chunk-b07cmahc.js +0 -145
  587. package/dist/cli/chunk-b07cmahc.js.map +0 -11
  588. package/dist/cli/chunk-c8chx29p.js.map +0 -36
  589. package/dist/cli/chunk-e04dxsz1.js +0 -39
  590. package/dist/cli/chunk-e04dxsz1.js.map +0 -10
  591. package/dist/cli/chunk-j85vccga.js.map +0 -36
  592. package/dist/cli/chunk-p3v96n38.js.map +0 -10
  593. package/dist/cli/chunk-pehfxfta.js.map +0 -10
  594. package/dist/cli/chunk-pv29h0wf.js.map +0 -190
  595. package/dist/cli/chunk-q58y5e6a.js.map +0 -10
  596. package/dist/cli/chunk-vg9r4eb9.js.map +0 -14
  597. package/dist/cli/chunk-wrr3j9w9.js.map +0 -35
  598. package/dist/cli/chunk-yfyb25rh.js.map +0 -14
  599. package/docs/content/sources.mdx +0 -334
  600. /package/dist/cli/{chunk-tkacnehg.js.map → chunk-3v3ffbrj.js.map} +0 -0
  601. /package/dist/cli/{chunk-r9rcc4w7.js.map → chunk-8y2kmjv8.js.map} +0 -0
  602. /package/dist/cli/{chunk-2eytanqx.js.map → chunk-c887fj0s.js.map} +0 -0
  603. /package/dist/cli/{chunk-akbpwfxc.js.map → chunk-dzwehpy7.js.map} +0 -0
  604. /package/dist/cli/{chunk-2z928egk.js.map → chunk-ft9vfys6.js.map} +0 -0
  605. /package/dist/cli/{chunk-a58773jm.js.map → chunk-kma9f6sf.js.map} +0 -0
  606. /package/dist/cli/{chunk-crgn1q09.js.map → chunk-sds923fa.js.map} +0 -0
  607. /package/dist/cli/{chunk-acanzt5p.js.map → chunk-tdqhyxfz.js.map} +0 -0
@@ -1,8 +1,10 @@
1
+ import type { CaptchaSettings } from "../captcha/schema.ts";
2
+ import type { EndpointAuth } from "../components/content/api-page.ts";
1
3
  import type { SearchAdapterKind } from "../search/adapters/registry.ts";
2
4
  import type { StructuredDataIdentity } from "../seo/jsonld.ts";
3
5
  import type { FontHead } from "../theme/fonts.ts";
4
6
  import type { UIStrings } from "./i18n-ui.ts";
5
- import type { ResolvedConfig } from "./schema.ts";
7
+ import type { LocalizableLabel, ResolvedConfig } from "./schema.ts";
6
8
  import type { Navigation, RouteAlternate, VersionAlternate } from "./types.ts";
7
9
  /**
8
10
  * The shape of the `blume:data` virtual module — the resolved, serializable
@@ -47,12 +49,16 @@ export interface BlumeFavicon {
47
49
  type?: string;
48
50
  };
49
51
  }
50
- /** Announcement banner, normalized from its config (string shorthand or object). */
52
+ /**
53
+ * Announcement banner, normalized from its config (string shorthand or
54
+ * object). `content` and the link's `text` may be per-locale maps, resolved
55
+ * when the banner renders (see `core/localizable.ts`).
56
+ */
51
57
  export interface BlumeBanner {
52
- content: string;
58
+ content: LocalizableLabel;
53
59
  link?: {
54
60
  href: string;
55
- text: string;
61
+ text: LocalizableLabel;
56
62
  };
57
63
  dismissible: boolean;
58
64
  /** Dismissal key: the configured id, else the content itself. */
@@ -76,6 +82,8 @@ export interface BlumeDataI18n {
76
82
  fallbackLocale: string | null;
77
83
  hideDefaultLocalePrefix: boolean;
78
84
  locales: BlumeDataLocale[];
85
+ /** Send visitors from the default home page to their browser's language. */
86
+ routeByBrowserLanguage: boolean;
79
87
  }
80
88
  /** A single content route, with the metadata custom pages can read. */
81
89
  export interface BlumeRoute {
@@ -127,9 +135,26 @@ export interface BlumeDataConfig {
127
135
  appleIcon: BlumeFavicon | null;
128
136
  /** The assistant's empty-state suggestions, or `null` when the assistant is off. */
129
137
  assistant: {
138
+ /** The bot check's public settings, or `null` without one. */
139
+ captcha: CaptchaSettings | null;
130
140
  endpoint: string | null;
131
141
  suggestions: NonNullable<ResolvedConfig["ai"]["assistant"]>["suggestions"];
142
+ /** The Contact support link (`ai.assistant.support`), or `null`. */
143
+ support: string | null;
132
144
  } | null;
145
+ /**
146
+ * Defaults for hand-written endpoint pages (`api` frontmatter): the server a
147
+ * path joins, the default auth, and the playground, its `proxy` resolved to
148
+ * the URL sends go through (the built-in route under `basePath`) or `false`.
149
+ */
150
+ api: {
151
+ auth?: EndpointAuth;
152
+ playground: {
153
+ enabled: boolean;
154
+ proxy: string | false;
155
+ };
156
+ server?: string;
157
+ };
133
158
  banner: BlumeBanner | null;
134
159
  /** Site-wide route mount point, normalized to `""` or `/seg` (see config). */
135
160
  basePath: string;
@@ -137,6 +162,11 @@ export interface BlumeDataConfig {
137
162
  codeThemes: ResolvedConfig["markdown"]["code"]["theme"];
138
163
  /** `markdown.code.wrap`: wrap long code lines instead of scrolling. */
139
164
  codeWrap: boolean;
165
+ /**
166
+ * The consent adapter's descriptor, or `null` without one. When set, the
167
+ * layouts hold analytics until the reader allows it.
168
+ */
169
+ consent: ResolvedConfig["consent"];
140
170
  /** `dateFormat`: `Intl.DateTimeFormat` options for the date stamps. */
141
171
  dateFormat: ResolvedConfig["dateFormat"];
142
172
  description: string | undefined;
@@ -159,7 +189,12 @@ export interface BlumeDataConfig {
159
189
  sitemap: boolean;
160
190
  };
161
191
  favicon: BlumeFavicon;
192
+ /** Whether pages end with the "Was this page helpful?" rating. */
162
193
  feedback: boolean;
194
+ /** Whether the rating asks for a written comment after it (`feedback.comments`). */
195
+ feedbackComments: boolean;
196
+ /** `footer`: social profile icons and link columns, or `null` when unset. */
197
+ footer: ResolvedConfig["footer"] | null;
163
198
  /**
164
199
  * Repo coordinates for content components that address the API or build
165
200
  * their own repo links (`<GithubInfo>`, the OG card's footer slug), carrying
@@ -187,6 +222,16 @@ export interface BlumeDataConfig {
187
222
  name: string;
188
223
  route: string;
189
224
  } | null;
225
+ /** `seo.metatags`: the site's own tags for every page's head, or `null`. */
226
+ metatags: Record<string, string> | null;
227
+ /**
228
+ * "Listen to this page": `generated` when a `narration.provider` makes
229
+ * `blume build` write audio clips the player should look for, else the
230
+ * player reads with browser voices. `null` when narration is off.
231
+ */
232
+ narration: {
233
+ generated: boolean;
234
+ } | null;
190
235
  /**
191
236
  * Open Graph image generation. Card fonts are baked into the generated OG
192
237
  * endpoint (they can carry absolute build-machine paths) and deliberately
@@ -219,6 +264,10 @@ export interface BlumeDataConfig {
219
264
  /** Repository URL for header/edit links, or `null`. */
220
265
  repoUrl: string | null;
221
266
  search: {
267
+ /** `search.analytics`: whether the dialog's events carry each query's text. */
268
+ analytics: {
269
+ queries: boolean;
270
+ };
222
271
  enabled: boolean;
223
272
  /** Resolved empty-state links; empty when unset (Search falls back to sidebar). */
224
273
  popular: {
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The social platforms `footer.socials` links to, each shown by its brand
3
+ * icon: Mintlify's set, without its aliases (`twitter` and `x-twitter` are
4
+ * `x`, `earth-americas` is `website`).
5
+ */
6
+ export declare const FOOTER_SOCIALS: readonly ["bluesky", "discord", "facebook", "github", "hacker-news", "instagram", "linkedin", "medium", "podcast", "reddit", "slack", "telegram", "threads", "website", "x", "youtube"];
7
+ /** A platform `footer.socials` links to. */
8
+ export type FooterSocial = (typeof FOOTER_SOCIALS)[number];
@@ -11,6 +11,7 @@ declare const uiStringsObject: z.ZodObject<{
11
11
  actions: z.ZodPrefault<z.ZodObject<{
12
12
  addToCursor: z.ZodDefault<z.ZodString>;
13
13
  addToVscode: z.ZodDefault<z.ZodString>;
14
+ askAboutCode: z.ZodDefault<z.ZodString>;
14
15
  connectMcp: z.ZodDefault<z.ZodString>;
15
16
  copied: z.ZodDefault<z.ZodString>;
16
17
  copyClaudeCode: z.ZodDefault<z.ZodString>;
@@ -36,11 +37,18 @@ declare const uiStringsObject: z.ZodObject<{
36
37
  copy: z.ZodDefault<z.ZodString>;
37
38
  empty: z.ZodDefault<z.ZodString>;
38
39
  error: z.ZodDefault<z.ZodString>;
40
+ explainCode: z.ZodDefault<z.ZodString>;
39
41
  label: z.ZodDefault<z.ZodString>;
42
+ open: z.ZodDefault<z.ZodString>;
40
43
  placeholder: z.ZodDefault<z.ZodString>;
44
+ rateLimited: z.ZodDefault<z.ZodString>;
45
+ removeCode: z.ZodDefault<z.ZodString>;
41
46
  send: z.ZodDefault<z.ZodString>;
47
+ support: z.ZodDefault<z.ZodString>;
48
+ supportSubject: z.ZodDefault<z.ZodString>;
42
49
  tip: z.ZodDefault<z.ZodString>;
43
50
  title: z.ZodDefault<z.ZodString>;
51
+ verifyFailed: z.ZodDefault<z.ZodString>;
44
52
  you: z.ZodDefault<z.ZodString>;
45
53
  }, z.core.$strip>>;
46
54
  banner: z.ZodPrefault<z.ZodObject<{
@@ -48,8 +56,17 @@ declare const uiStringsObject: z.ZodObject<{
48
56
  }, z.core.$strip>>;
49
57
  changelog: z.ZodPrefault<z.ZodObject<{
50
58
  description: z.ZodDefault<z.ZodString>;
59
+ empty: z.ZodDefault<z.ZodString>;
51
60
  title: z.ZodDefault<z.ZodString>;
52
61
  }, z.core.$strip>>;
62
+ consent: z.ZodPrefault<z.ZodObject<{
63
+ accept: z.ZodDefault<z.ZodString>;
64
+ decline: z.ZodDefault<z.ZodString>;
65
+ label: z.ZodDefault<z.ZodString>;
66
+ message: z.ZodDefault<z.ZodString>;
67
+ policy: z.ZodDefault<z.ZodString>;
68
+ settings: z.ZodDefault<z.ZodString>;
69
+ }, z.core.$strip>>;
53
70
  content: z.ZodPrefault<z.ZodObject<{
54
71
  code: z.ZodDefault<z.ZodString>;
55
72
  copyColor: z.ZodDefault<z.ZodString>;
@@ -60,6 +77,8 @@ declare const uiStringsObject: z.ZodObject<{
60
77
  preview: z.ZodDefault<z.ZodString>;
61
78
  prop: z.ZodDefault<z.ZodString>;
62
79
  selectTab: z.ZodDefault<z.ZodString>;
80
+ selectView: z.ZodDefault<z.ZodString>;
81
+ showLess: z.ZodDefault<z.ZodString>;
63
82
  showMore: z.ZodDefault<z.ZodString>;
64
83
  stars: z.ZodDefault<z.ZodString>;
65
84
  tab: z.ZodDefault<z.ZodString>;
@@ -67,8 +86,10 @@ declare const uiStringsObject: z.ZodObject<{
67
86
  update: z.ZodDefault<z.ZodString>;
68
87
  }, z.core.$strip>>;
69
88
  feedback: z.ZodPrefault<z.ZodObject<{
89
+ comment: z.ZodDefault<z.ZodString>;
70
90
  no: z.ZodDefault<z.ZodString>;
71
91
  question: z.ZodDefault<z.ZodString>;
92
+ send: z.ZodDefault<z.ZodString>;
72
93
  thanks: z.ZodDefault<z.ZodString>;
73
94
  yes: z.ZodDefault<z.ZodString>;
74
95
  }, z.core.$strip>>;
@@ -76,6 +97,28 @@ declare const uiStringsObject: z.ZodObject<{
76
97
  label: z.ZodDefault<z.ZodString>;
77
98
  untranslated: z.ZodDefault<z.ZodString>;
78
99
  }, z.core.$strip>>;
100
+ narration: z.ZodPrefault<z.ZodObject<{
101
+ cueDanger: z.ZodDefault<z.ZodString>;
102
+ cueInfo: z.ZodDefault<z.ZodString>;
103
+ cueNote: z.ZodDefault<z.ZodString>;
104
+ cueSection: z.ZodDefault<z.ZodString>;
105
+ cueStep: z.ZodDefault<z.ZodString>;
106
+ cueSuccess: z.ZodDefault<z.ZodString>;
107
+ cueTab: z.ZodDefault<z.ZodString>;
108
+ cueTip: z.ZodDefault<z.ZodString>;
109
+ cueWarning: z.ZodDefault<z.ZodString>;
110
+ error: z.ZodDefault<z.ZodString>;
111
+ follow: z.ZodDefault<z.ZodString>;
112
+ label: z.ZodDefault<z.ZodString>;
113
+ minutes: z.ZodDefault<z.ZodString>;
114
+ next: z.ZodDefault<z.ZodString>;
115
+ pause: z.ZodDefault<z.ZodString>;
116
+ play: z.ZodDefault<z.ZodString>;
117
+ previous: z.ZodDefault<z.ZodString>;
118
+ progress: z.ZodDefault<z.ZodString>;
119
+ speed: z.ZodDefault<z.ZodString>;
120
+ stop: z.ZodDefault<z.ZodString>;
121
+ }, z.core.$strip>>;
79
122
  nav: z.ZodPrefault<z.ZodObject<{
80
123
  back: z.ZodDefault<z.ZodString>;
81
124
  breadcrumb: z.ZodDefault<z.ZodString>;
@@ -104,6 +147,7 @@ declare const uiStringsObject: z.ZodObject<{
104
147
  next: z.ZodDefault<z.ZodString>;
105
148
  pagination: z.ZodDefault<z.ZodString>;
106
149
  previous: z.ZodDefault<z.ZodString>;
150
+ related: z.ZodDefault<z.ZodString>;
107
151
  skipToContent: z.ZodDefault<z.ZodString>;
108
152
  }, z.core.$strip>>;
109
153
  search: z.ZodPrefault<z.ZodObject<{
@@ -139,6 +183,7 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
139
183
  actions: z.ZodPrefault<z.ZodObject<{
140
184
  addToCursor: z.ZodDefault<z.ZodString>;
141
185
  addToVscode: z.ZodDefault<z.ZodString>;
186
+ askAboutCode: z.ZodDefault<z.ZodString>;
142
187
  connectMcp: z.ZodDefault<z.ZodString>;
143
188
  copied: z.ZodDefault<z.ZodString>;
144
189
  copyClaudeCode: z.ZodDefault<z.ZodString>;
@@ -164,11 +209,18 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
164
209
  copy: z.ZodDefault<z.ZodString>;
165
210
  empty: z.ZodDefault<z.ZodString>;
166
211
  error: z.ZodDefault<z.ZodString>;
212
+ explainCode: z.ZodDefault<z.ZodString>;
167
213
  label: z.ZodDefault<z.ZodString>;
214
+ open: z.ZodDefault<z.ZodString>;
168
215
  placeholder: z.ZodDefault<z.ZodString>;
216
+ rateLimited: z.ZodDefault<z.ZodString>;
217
+ removeCode: z.ZodDefault<z.ZodString>;
169
218
  send: z.ZodDefault<z.ZodString>;
219
+ support: z.ZodDefault<z.ZodString>;
220
+ supportSubject: z.ZodDefault<z.ZodString>;
170
221
  tip: z.ZodDefault<z.ZodString>;
171
222
  title: z.ZodDefault<z.ZodString>;
223
+ verifyFailed: z.ZodDefault<z.ZodString>;
172
224
  you: z.ZodDefault<z.ZodString>;
173
225
  }, z.core.$strip>>;
174
226
  banner: z.ZodPrefault<z.ZodObject<{
@@ -176,8 +228,17 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
176
228
  }, z.core.$strip>>;
177
229
  changelog: z.ZodPrefault<z.ZodObject<{
178
230
  description: z.ZodDefault<z.ZodString>;
231
+ empty: z.ZodDefault<z.ZodString>;
179
232
  title: z.ZodDefault<z.ZodString>;
180
233
  }, z.core.$strip>>;
234
+ consent: z.ZodPrefault<z.ZodObject<{
235
+ accept: z.ZodDefault<z.ZodString>;
236
+ decline: z.ZodDefault<z.ZodString>;
237
+ label: z.ZodDefault<z.ZodString>;
238
+ message: z.ZodDefault<z.ZodString>;
239
+ policy: z.ZodDefault<z.ZodString>;
240
+ settings: z.ZodDefault<z.ZodString>;
241
+ }, z.core.$strip>>;
181
242
  content: z.ZodPrefault<z.ZodObject<{
182
243
  code: z.ZodDefault<z.ZodString>;
183
244
  copyColor: z.ZodDefault<z.ZodString>;
@@ -188,6 +249,8 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
188
249
  preview: z.ZodDefault<z.ZodString>;
189
250
  prop: z.ZodDefault<z.ZodString>;
190
251
  selectTab: z.ZodDefault<z.ZodString>;
252
+ selectView: z.ZodDefault<z.ZodString>;
253
+ showLess: z.ZodDefault<z.ZodString>;
191
254
  showMore: z.ZodDefault<z.ZodString>;
192
255
  stars: z.ZodDefault<z.ZodString>;
193
256
  tab: z.ZodDefault<z.ZodString>;
@@ -195,8 +258,10 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
195
258
  update: z.ZodDefault<z.ZodString>;
196
259
  }, z.core.$strip>>;
197
260
  feedback: z.ZodPrefault<z.ZodObject<{
261
+ comment: z.ZodDefault<z.ZodString>;
198
262
  no: z.ZodDefault<z.ZodString>;
199
263
  question: z.ZodDefault<z.ZodString>;
264
+ send: z.ZodDefault<z.ZodString>;
200
265
  thanks: z.ZodDefault<z.ZodString>;
201
266
  yes: z.ZodDefault<z.ZodString>;
202
267
  }, z.core.$strip>>;
@@ -204,6 +269,28 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
204
269
  label: z.ZodDefault<z.ZodString>;
205
270
  untranslated: z.ZodDefault<z.ZodString>;
206
271
  }, z.core.$strip>>;
272
+ narration: z.ZodPrefault<z.ZodObject<{
273
+ cueDanger: z.ZodDefault<z.ZodString>;
274
+ cueInfo: z.ZodDefault<z.ZodString>;
275
+ cueNote: z.ZodDefault<z.ZodString>;
276
+ cueSection: z.ZodDefault<z.ZodString>;
277
+ cueStep: z.ZodDefault<z.ZodString>;
278
+ cueSuccess: z.ZodDefault<z.ZodString>;
279
+ cueTab: z.ZodDefault<z.ZodString>;
280
+ cueTip: z.ZodDefault<z.ZodString>;
281
+ cueWarning: z.ZodDefault<z.ZodString>;
282
+ error: z.ZodDefault<z.ZodString>;
283
+ follow: z.ZodDefault<z.ZodString>;
284
+ label: z.ZodDefault<z.ZodString>;
285
+ minutes: z.ZodDefault<z.ZodString>;
286
+ next: z.ZodDefault<z.ZodString>;
287
+ pause: z.ZodDefault<z.ZodString>;
288
+ play: z.ZodDefault<z.ZodString>;
289
+ previous: z.ZodDefault<z.ZodString>;
290
+ progress: z.ZodDefault<z.ZodString>;
291
+ speed: z.ZodDefault<z.ZodString>;
292
+ stop: z.ZodDefault<z.ZodString>;
293
+ }, z.core.$strip>>;
207
294
  nav: z.ZodPrefault<z.ZodObject<{
208
295
  back: z.ZodDefault<z.ZodString>;
209
296
  breadcrumb: z.ZodDefault<z.ZodString>;
@@ -232,6 +319,7 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
232
319
  next: z.ZodDefault<z.ZodString>;
233
320
  pagination: z.ZodDefault<z.ZodString>;
234
321
  previous: z.ZodDefault<z.ZodString>;
322
+ related: z.ZodDefault<z.ZodString>;
235
323
  skipToContent: z.ZodDefault<z.ZodString>;
236
324
  }, z.core.$strip>>;
237
325
  search: z.ZodPrefault<z.ZodObject<{
@@ -10,6 +10,12 @@ export interface IncludeAttributes {
10
10
  lang?: string;
11
11
  /** Fence meta string in code-block mode (e.g. `title="lib.ts"`). */
12
12
  meta?: string;
13
+ /**
14
+ * Every other attribute with a value: the snippet's own variables.
15
+ * `<include plan="Pro">` makes `{{plan}}` in the included file read `Pro`,
16
+ * ahead of any site-wide variable of the same name.
17
+ */
18
+ props?: Record<string, string>;
13
19
  }
14
20
  /** A parsed include statement. */
15
21
  export interface IncludeStatement {
@@ -18,8 +24,8 @@ export interface IncludeStatement {
18
24
  }
19
25
  /**
20
26
  * Parse one trimmed line as an include statement, or `null` when it isn't
21
- * one. Only `lang` and `meta` are meaningful; unknown attributes parse and
22
- * are ignored so a future attribute degrades gracefully on older versions.
27
+ * one. `lang` and `meta` shape a code include; every other attribute with a
28
+ * value becomes a prop, a variable scoped to the included file.
23
29
  */
24
30
  export declare const parseIncludeStatement: (line: string) => IncludeStatement | null;
25
31
  /**
@@ -58,6 +58,12 @@ export interface FileRouteIndex {
58
58
  * into the reader's locale onto the fallback copy.
59
59
  */
60
60
  byDefaultNavPath: Map<string, string>;
61
+ /**
62
+ * A staged page's entry id (`<source>/<ref>`) → its route. A remote
63
+ * source's files have no path on disk, so a file link between two of them
64
+ * (`./02-errors.mdx`) resolves by entry id, as the rendered link does.
65
+ */
66
+ byEntryId: Map<string, string>;
61
67
  }
62
68
  /** The linking side of a file link: where the page's source lives. */
63
69
  export interface FileLinkBase {
@@ -90,6 +96,8 @@ export declare const validateLinks: (graph: ContentGraph, options: {
90
96
  i18n?: LocaleRouting | null;
91
97
  publicDir: string | null;
92
98
  checkExternal?: boolean;
99
+ /** External URLs not to request (`--ignore`). Internal links are always checked. */
100
+ ignore?: (url: string) => boolean;
93
101
  /** Configured redirects; their `from` paths count as valid link targets. */
94
102
  redirects?: {
95
103
  from: string;
@@ -0,0 +1,7 @@
1
+ import type { LocalizableLabel } from "./schema.ts";
2
+ /**
3
+ * Resolve a possibly-per-locale label to the string a locale renders: the
4
+ * active locale's entry, else the default locale's, else the map's first
5
+ * entry (which is also what a single-locale site gets).
6
+ */
7
+ export declare const resolveLocalizable: (label: LocalizableLabel, locale?: string, defaultLocale?: string) => string;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Page layout modes (`mode` frontmatter), Mintlify's names for what a page
3
+ * shows around its content:
4
+ *
5
+ * - `default`: the sidebar, the page's title and table of contents, and the
6
+ * page-end links, around the prose column.
7
+ * - `wide`: no table of contents; the content takes its width.
8
+ * - `center`: no sidebar or table of contents; a wider column, centered.
9
+ * For changelogs and other pages read top to bottom.
10
+ * - `custom`: only the header. No sidebar, title, breadcrumbs, table of
11
+ * contents, page-end links, or site footer, and the content spans the
12
+ * page, for a landing page written in MDX.
13
+ * - `frame`: `custom`, keeping the sidebar.
14
+ *
15
+ * Mintlify's `assistant` mode, a full-page chat, has no equivalent.
16
+ */
17
+ export declare const PAGE_MODES: readonly ["default", "wide", "center", "custom", "frame"];
18
+ export type PageMode = (typeof PAGE_MODES)[number];
19
+ /** What a page shows around its content, and how wide the content runs. */
20
+ export interface PageModeLayout {
21
+ /** The page's own chrome: title, description, breadcrumbs, page-end links, and the site footer. */
22
+ chrome: boolean;
23
+ sidebar: boolean;
24
+ toc: boolean;
25
+ /** `content` is the prose measure, `center` a wider centered column, `full` the whole column. */
26
+ width: "content" | "center" | "full";
27
+ }
28
+ /** The layout a mode gives a page. */
29
+ export declare const pageModeLayout: (mode?: PageMode) => PageModeLayout;
@@ -7,6 +7,8 @@ export interface ProbeResult {
7
7
  status?: number;
8
8
  timedOut?: boolean;
9
9
  error?: string;
10
+ /** The system error code behind a request that got no response (`ENOTFOUND`). */
11
+ code?: string;
10
12
  /** Whether the request was redirected before landing on `status`. */
11
13
  redirected?: boolean;
12
14
  /** The URL finally landed on, after following redirects. */
@@ -48,4 +48,10 @@ export declare const scanProject: (root: string, options?: {
48
48
  overrides?: ConfigOverrides;
49
49
  /** Relocate the generated runtime (e.g. `.blume-verify` for isolation). */
50
50
  runtimeDir?: string;
51
+ /**
52
+ * Called with the resolved config before any source loads, so a command
53
+ * can report an unset secret ahead of a fetch that fails without it: a
54
+ * source that can't load fails the scan, and nothing after it runs.
55
+ */
56
+ beforeSources?: (config: ResolvedConfig) => void;
51
57
  }) => Promise<BlumeProject>;
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Pattern redirects: a `from` that covers many paths, written the way
3
+ * Mintlify and `vercel.json` write them.
4
+ *
5
+ * - `:name` matches one whole segment: `/blog/:slug` → `/articles/:slug`.
6
+ * - `:name*` as the last segment matches the rest of the path, any number of
7
+ * segments: `/beta/:slug*` → `/v2/:slug*` sends `/beta/a/b` to `/v2/a/b`
8
+ * and `/beta` itself to `/v2`. A last segment of `*` does the same.
9
+ * - `*` ending a segment matches the rest of the path from there:
10
+ * `/articles/concepts-*` → `/overview`, or `/old/article-*` →
11
+ * `/new/article-*` to carry what it matched (`/new/article-:splat`, as
12
+ * `_redirects` spells it, reads the same capture).
13
+ *
14
+ * `to` reads a capture as a whole segment (`/:name`, `/:name*`, `/*`) or, for
15
+ * `*`, wherever it stands. Hosts disagree on the rest of the syntax, so each
16
+ * gets its own translation from {@link expandRedirect}: `_redirects` splats,
17
+ * `vercel.json` sources, and the regular expressions Vercel's routing config,
18
+ * the Node and Cloudflare wrappers, and the dev server match with. A capture
19
+ * that may be empty is expanded into two rules first, so `/beta` lands on
20
+ * `/v2` rather than `/v2/` on every host.
21
+ */
22
+ /** The name `*` captures under, which `_redirects` reads as `:splat`. */
23
+ export declare const SPLAT = "splat";
24
+ /** A piece of a parsed `from`, or of a rule it expands to. */
25
+ type Part = {
26
+ kind: "text";
27
+ text: string;
28
+ }
29
+ /** `:name`: one whole segment. */
30
+ | {
31
+ kind: "param";
32
+ name: string;
33
+ }
34
+ /** `/:name*` or `/*` ending the path: zero or more segments. */
35
+ | {
36
+ kind: "rest";
37
+ name: string;
38
+ }
39
+ /** A rest in an expanded rule: one or more characters after its `/`. */
40
+ | {
41
+ kind: "tail";
42
+ name: string;
43
+ }
44
+ /** `*` ending a segment: any characters, none included. */
45
+ | {
46
+ kind: "splat";
47
+ };
48
+ /** A piece of an expanded rule, where a rest has become a tail. */
49
+ type RulePart = Exclude<Part, {
50
+ kind: "rest";
51
+ }>;
52
+ /** A redirect's two ends, as configured or based. */
53
+ interface RedirectEnds {
54
+ from: string;
55
+ status: number;
56
+ to: string;
57
+ }
58
+ /** One rule a redirect expands to. */
59
+ export interface RedirectRule {
60
+ parts: RulePart[];
61
+ status: number;
62
+ to: string;
63
+ }
64
+ /** Whether a path is a pattern, rather than one exact path. */
65
+ export declare const isPatternPath: (path: string) => boolean;
66
+ /** Why a redirect's ends can't work, and which end to fix. */
67
+ export interface RedirectPatternError {
68
+ end: "from" | "to";
69
+ message: string;
70
+ }
71
+ /**
72
+ * Why a redirect's ends can't work as a pattern, or `null` when they can:
73
+ * `from` has a malformed capture, or `to` reads one `from` doesn't make.
74
+ */
75
+ export declare const redirectPatternError: (from: string, to: string) => RedirectPatternError | null;
76
+ /**
77
+ * The rules a redirect expands to, in the order to try them. A `from` ending
78
+ * in a rest (`/:name*`, `/*`) becomes two: the bare path, its references
79
+ * dropped, and the path with at least one more segment. Only a pattern has
80
+ * rules; an exact redirect gets none.
81
+ */
82
+ export declare const expandRedirect: (redirect: RedirectEnds) => RedirectRule[];
83
+ /** Put exact redirects ahead of patterns, which hosts try in order. */
84
+ export declare const exactFirst: <Redirect extends {
85
+ from: string;
86
+ }>(redirects: readonly Redirect[]) => Redirect[];
87
+ /** A rule as a `_redirects` `from` and `to`: rests and `*` are its splat. */
88
+ export declare const underscoreRedirect: (rule: RedirectRule) => {
89
+ from: string;
90
+ to: string;
91
+ };
92
+ /**
93
+ * A rule as a `vercel.json` `source` and `destination` (`path-to-regexp`),
94
+ * each literal run escaped by `escape` so it matches only itself.
95
+ */
96
+ export declare const vercelRedirect: (rule: RedirectRule, escape: (path: string) => string) => {
97
+ destination: string;
98
+ source: string;
99
+ };
100
+ /**
101
+ * A rule as a regular expression source over the decoded path (JavaScript
102
+ * and PCRE alike), a trailing slash optional, and its `to` with each capture
103
+ * a numbered `$n`. What Vercel's routing config and the server wrappers
104
+ * match with.
105
+ */
106
+ export declare const regexRedirect: (rule: RedirectRule) => {
107
+ location: string;
108
+ source: string;
109
+ };
110
+ /** A pattern redirect as the server wrappers carry it: regex source, `Location` template, status. */
111
+ export type CompiledRedirect = [
112
+ source: string,
113
+ location: string,
114
+ status: number
115
+ ];
116
+ /**
117
+ * The pattern redirects among `redirects`, compiled for the server wrappers
118
+ * and Vercel's routing config, in the order to try them. The `Location`
119
+ * template is percent-encoded as the header needs; a capture is encoded when
120
+ * it's filled (see {@link fillLocation}).
121
+ */
122
+ export declare const compileRedirects: (redirects: readonly RedirectEnds[]) => CompiledRedirect[];
123
+ /**
124
+ * Every redirect among `redirects` compiled, exact paths first: a pattern as
125
+ * {@link compileRedirects} compiles it, an exact path as a rule matching
126
+ * just that path, a trailing slash optional. What the dev server answers
127
+ * with, where Astro's own handler would send an exact redirect to a page
128
+ * served by `[...slug]` as a `301` whatever its status.
129
+ */
130
+ export declare const compileEveryRedirect: (redirects: readonly RedirectEnds[]) => CompiledRedirect[];
131
+ /** A captured value, encoded for a `Location` header that must not grow a query or fragment. */
132
+ export declare const encodeCapture: (value: string) => string;
133
+ /** A `Location` template with its `$n` references filled from `match`. */
134
+ export declare const fillLocation: (location: string, match: RegExpExecArray) => string;
135
+ /**
136
+ * The `Location` and status the first compiled redirect matching a decoded
137
+ * path answers with, or `null` when none does.
138
+ */
139
+ export declare const matchCompiledRedirect: (compiled: readonly CompiledRedirect[], path: string) => [location: string, status: number] | null;
140
+ /** A request URL's path, decoded; a malformed escape leaves it as sent. */
141
+ export declare const requestPath: (url: string) => string;
142
+ /**
143
+ * Where a pattern redirect sends a decoded path, unencoded, or `undefined`
144
+ * when none matches: what the link checks follow.
145
+ */
146
+ export declare const patternDestination: (redirects: readonly RedirectEnds[], path: string) => string | undefined;
147
+ /**
148
+ * The paths a pattern `from` matches, of those given; none for an exact
149
+ * `from`. Only the match matters here, so the rules' destinations are moot.
150
+ */
151
+ export declare const pathsUnderPattern: (from: string, paths: readonly string[]) => string[];
152
+ export {};
@@ -0,0 +1,40 @@
1
+ import type { LocaleRouting } from "./i18n.ts";
2
+ import type { PageLink } from "./types.ts";
3
+ /** The most entries a page lists, as on Mintlify. */
4
+ export declare const MAX_RELATED = 10;
5
+ /** A `{ Title: link }` entry: the one key is the title, its value the link. */
6
+ export interface TitledRelatedEntry {
7
+ [title: string]: string;
8
+ }
9
+ /** One `related` frontmatter entry. */
10
+ export type RelatedEntry = string | TitledRelatedEntry;
11
+ /** A resolved entry, ready to render. */
12
+ export interface RelatedLink {
13
+ description?: string;
14
+ external: boolean;
15
+ /** A page's route (`basePath` included, deployment base not), or a URL. */
16
+ href: string;
17
+ title: string;
18
+ }
19
+ /** A served route, as the data snapshot lists it. */
20
+ export interface RelatedRoute {
21
+ description: string | null;
22
+ path: string;
23
+ title: string;
24
+ }
25
+ /** What resolving needs from the site. */
26
+ export interface RelatedContext {
27
+ basePath: string;
28
+ /** The site's locales, when it has more than one. */
29
+ i18n?: LocaleRouting | null;
30
+ /** The locale of the page being rendered. */
31
+ locale: string;
32
+ routes: readonly RelatedRoute[];
33
+ }
34
+ /** The links a page's `related` entries name, in the order written. */
35
+ export declare const relatedLinks: (entries: readonly RelatedEntry[] | false | undefined, context: RelatedContext) => RelatedLink[];
36
+ /**
37
+ * A page's `related` page links, as links the checker validates like any in
38
+ * its body. Front matter has no line map, so they point at its first line.
39
+ */
40
+ export declare const relatedPageLinks: (entries?: readonly RelatedEntry[] | false) => PageLink[];