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
@@ -5,6 +5,7 @@ export const tr: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Cursor'a ekle",
7
7
  addToVscode: "VS Code'a ekle",
8
+ askAboutCode: "Bu kod hakkında sor",
8
9
  connectMcp: "MCP'ye bağlan",
9
10
  copied: "Kopyalandı!",
10
11
  copyClaudeCode: "Claude Code komutunu kopyala",
@@ -31,18 +32,36 @@ export const tr: UIStringsOverride = {
31
32
  copy: "Konuşmayı kopyala",
32
33
  empty: "Belgeler hakkında bir soru sorun.",
33
34
  error: "Üzgünüz, bir şeyler ters gitti.",
35
+ explainCode: "Bu kodu açıkla.",
34
36
  label: "Bir soru sorun",
37
+ open: "Asistanı aç",
35
38
  placeholder: "Bir soru sorun…",
39
+ rateLimited:
40
+ "Çok sayıda soru sordunuz. Birkaç dakika sonra yeniden deneyin.",
41
+ removeCode: "Kodu kaldır",
36
42
  send: "Gönder",
43
+ support: "Destekle iletişime geç",
44
+ supportSubject: "Belgelerden soru",
37
45
  tip: "İpucu: Sohbeti şu tuşla açıp kapatabilirsiniz:",
38
46
  title: "Asistan",
47
+ verifyFailed: "İnsan olduğunuzu doğrulayamadık. Yeniden deneyin.",
39
48
  you: "Siz",
40
49
  },
41
50
  banner: { dismiss: "Duyuruyu kapat" },
42
51
  changelog: {
43
52
  description: "Ürün güncellemeleri ve sürüm notları.",
53
+ empty: "Değişiklik günlüğünde henüz kayıt yok.",
44
54
  title: "Değişiklik günlüğü",
45
55
  },
56
+ consent: {
57
+ accept: "Kabul et",
58
+ decline: "Reddet",
59
+ label: "Çerez onayı",
60
+ message:
61
+ "Bu belgelerin nasıl kullanıldığını anlamak için çerez kullanmak istiyoruz.",
62
+ policy: "Gizlilik politikası",
63
+ settings: "Çerez ayarları",
64
+ },
46
65
  content: {
47
66
  code: "Kod",
48
67
  copyColor: "Rengi kopyala: {name} {value}",
@@ -53,6 +72,8 @@ export const tr: UIStringsOverride = {
53
72
  preview: "Önizleme",
54
73
  prop: "Özellik",
55
74
  selectTab: "Sekme seç",
75
+ selectView: "Görünüm seç",
76
+ showLess: "Daha az göster",
56
77
  showMore: "Daha fazla göster",
57
78
  stars: "Yıldızlar",
58
79
  tab: "Sekme {n}",
@@ -60,12 +81,36 @@ export const tr: UIStringsOverride = {
60
81
  update: "Güncelleme",
61
82
  },
62
83
  feedback: {
84
+ comment: "Bize daha fazlasını anlatın (isteğe bağlı)",
63
85
  no: "Hayır",
64
86
  question: "Bu sayfa yardımcı oldu mu?",
87
+ send: "Gönder",
65
88
  thanks: "Geri bildiriminiz için teşekkürler!",
66
89
  yes: "Evet",
67
90
  },
68
91
  languageSwitcher: { label: "Dil", untranslated: "Çevrilmemiş" },
92
+ narration: {
93
+ cueDanger: "Tehlike.",
94
+ cueInfo: "Bilgi.",
95
+ cueNote: "Not.",
96
+ cueSection: "Genişletilebilir bölüm.",
97
+ cueStep: "Adım {n}.",
98
+ cueSuccess: "Başarılı.",
99
+ cueTab: "{title} sekmesi.",
100
+ cueTip: "İpucu.",
101
+ cueWarning: "Uyarı.",
102
+ error: "Seslendirme yüklenemedi.",
103
+ follow: "Okumayı takip et",
104
+ label: "Bu sayfayı dinle",
105
+ minutes: "{n} dk",
106
+ next: "Sonraki cümle",
107
+ pause: "Duraklat",
108
+ play: "Oynat",
109
+ previous: "Önceki cümle",
110
+ progress: "Seslendirme ilerlemesi",
111
+ speed: "Oynatma hızı",
112
+ stop: "Dinlemeyi durdur",
113
+ },
69
114
  nav: {
70
115
  back: "Geri",
71
116
  breadcrumb: "Gezinme yolu",
@@ -90,6 +135,7 @@ export const tr: UIStringsOverride = {
90
135
  next: "Sonraki",
91
136
  pagination: "Sayfalama",
92
137
  previous: "Önceki",
138
+ related: "İlgili sayfalar",
93
139
  skipToContent: "İçeriğe geç",
94
140
  },
95
141
  search: {
@@ -5,6 +5,7 @@ export const uk: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Додати до Cursor",
7
7
  addToVscode: "Додати до VS Code",
8
+ askAboutCode: "Запитати про цей код",
8
9
  connectMcp: "Підключитися до MCP",
9
10
  copied: "Скопійовано!",
10
11
  copyClaudeCode: "Скопіювати команду Claude Code",
@@ -31,18 +32,36 @@ export const uk: UIStringsOverride = {
31
32
  copy: "Скопіювати бесіду",
32
33
  empty: "Поставте запитання щодо документації.",
33
34
  error: "Вибачте, щось пішло не так.",
35
+ explainCode: "Поясни цей код.",
34
36
  label: "Поставити запитання",
37
+ open: "Відкрити асистента",
35
38
  placeholder: "Поставте запитання…",
39
+ rateLimited:
40
+ "Ви поставили багато запитань. Спробуйте знову за кілька хвилин.",
41
+ removeCode: "Прибрати код",
36
42
  send: "Надіслати",
43
+ support: "Зв'язатися з підтримкою",
44
+ supportSubject: "Питання з документації",
37
45
  tip: "Порада: чат можна відкрити й закрити за допомогою",
38
46
  title: "Асистент",
47
+ verifyFailed: "Не вдалося підтвердити, що ви людина. Спробуйте знову.",
39
48
  you: "Ви",
40
49
  },
41
50
  banner: { dismiss: "Закрити оголошення" },
42
51
  changelog: {
43
52
  description: "Оновлення продукту та примітки до випусків.",
53
+ empty: "У журналі змін поки немає записів.",
44
54
  title: "Журнал змін",
45
55
  },
56
+ consent: {
57
+ accept: "Прийняти",
58
+ decline: "Відхилити",
59
+ label: "Згода на cookie",
60
+ message:
61
+ "Ми хотіли б використовувати файли cookie, щоб розуміти, як використовується ця документація.",
62
+ policy: "Політика конфіденційності",
63
+ settings: "Налаштування cookie",
64
+ },
46
65
  content: {
47
66
  code: "Код",
48
67
  copyColor: "Скопіювати колір {name} {value}",
@@ -53,6 +72,8 @@ export const uk: UIStringsOverride = {
53
72
  preview: "Попередній перегляд",
54
73
  prop: "Властивість",
55
74
  selectTab: "Вибрати вкладку",
75
+ selectView: "Вибрати подання",
76
+ showLess: "Показати менше",
56
77
  showMore: "Показати більше",
57
78
  stars: "Зірки",
58
79
  tab: "Вкладка {n}",
@@ -60,12 +81,36 @@ export const uk: UIStringsOverride = {
60
81
  update: "Оновлення",
61
82
  },
62
83
  feedback: {
84
+ comment: "Розкажіть докладніше (необов'язково)",
63
85
  no: "Ні",
64
86
  question: "Чи була ця сторінка корисною?",
87
+ send: "Надіслати",
65
88
  thanks: "Дякуємо за ваш відгук!",
66
89
  yes: "Так",
67
90
  },
68
91
  languageSwitcher: { label: "Мова", untranslated: "Не перекладено" },
92
+ narration: {
93
+ cueDanger: "Небезпека.",
94
+ cueInfo: "Інформація.",
95
+ cueNote: "Примітка.",
96
+ cueSection: "Розгортуваний розділ.",
97
+ cueStep: "Крок {n}.",
98
+ cueSuccess: "Успіх.",
99
+ cueTab: "Вкладка {title}.",
100
+ cueTip: "Порада.",
101
+ cueWarning: "Попередження.",
102
+ error: "Не вдалося завантажити озвучення.",
103
+ follow: "Стежити за читанням",
104
+ label: "Прослухати сторінку",
105
+ minutes: "{n} хв",
106
+ next: "Наступне речення",
107
+ pause: "Пауза",
108
+ play: "Відтворити",
109
+ previous: "Попереднє речення",
110
+ progress: "Хід відтворення",
111
+ speed: "Швидкість відтворення",
112
+ stop: "Зупинити прослуховування",
113
+ },
69
114
  nav: {
70
115
  back: "Назад",
71
116
  breadcrumb: "Навігаційний ланцюжок",
@@ -90,6 +135,7 @@ export const uk: UIStringsOverride = {
90
135
  next: "Далі",
91
136
  pagination: "Пагінація",
92
137
  previous: "Назад",
138
+ related: "Пов'язані сторінки",
93
139
  skipToContent: "Перейти до вмісту",
94
140
  },
95
141
  search: {
@@ -5,6 +5,7 @@ export const vi: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Thêm vào Cursor",
7
7
  addToVscode: "Thêm vào VS Code",
8
+ askAboutCode: "Hỏi về đoạn mã này",
8
9
  connectMcp: "Kết nối với MCP",
9
10
  copied: "Đã sao chép!",
10
11
  copyClaudeCode: "Sao chép lệnh Claude Code",
@@ -30,18 +31,36 @@ export const vi: UIStringsOverride = {
30
31
  copy: "Sao chép cuộc trò chuyện",
31
32
  empty: "Đặt câu hỏi về tài liệu.",
32
33
  error: "Xin lỗi, đã xảy ra sự cố.",
34
+ explainCode: "Giải thích đoạn mã này.",
33
35
  label: "Đặt câu hỏi",
36
+ open: "Mở trợ lý",
34
37
  placeholder: "Đặt câu hỏi…",
38
+ rateLimited: "Bạn đã hỏi rất nhiều câu hỏi. Hãy thử lại sau vài phút.",
39
+ removeCode: "Xóa mã",
35
40
  send: "Gửi",
41
+ support: "Liên hệ hỗ trợ",
42
+ supportSubject: "Câu hỏi từ tài liệu",
36
43
  tip: "Mẹo: Bạn có thể mở và đóng trò chuyện bằng",
37
44
  title: "Trợ lý",
45
+ verifyFailed:
46
+ "Chúng tôi không thể xác minh bạn là người thật. Hãy thử lại.",
38
47
  you: "Bạn",
39
48
  },
40
49
  banner: { dismiss: "Đóng thông báo" },
41
50
  changelog: {
42
51
  description: "Cập nhật sản phẩm và ghi chú phát hành.",
52
+ empty: "Chưa có mục nào trong nhật ký thay đổi.",
43
53
  title: "Nhật ký thay đổi",
44
54
  },
55
+ consent: {
56
+ accept: "Chấp nhận",
57
+ decline: "Từ chối",
58
+ label: "Đồng ý cookie",
59
+ message:
60
+ "Chúng tôi muốn sử dụng cookie để hiểu cách tài liệu này được sử dụng.",
61
+ policy: "Chính sách quyền riêng tư",
62
+ settings: "Cài đặt cookie",
63
+ },
45
64
  content: {
46
65
  code: "Mã",
47
66
  copyColor: "Sao chép màu {name} {value}",
@@ -52,6 +71,8 @@ export const vi: UIStringsOverride = {
52
71
  preview: "Xem trước",
53
72
  prop: "Thuộc tính",
54
73
  selectTab: "Chọn tab",
74
+ selectView: "Chọn chế độ xem",
75
+ showLess: "Ẩn bớt",
55
76
  showMore: "Hiển thị thêm",
56
77
  stars: "Sao",
57
78
  tab: "Tab {n}",
@@ -59,12 +80,36 @@ export const vi: UIStringsOverride = {
59
80
  update: "Cập nhật",
60
81
  },
61
82
  feedback: {
83
+ comment: "Cho chúng tôi biết thêm (không bắt buộc)",
62
84
  no: "Không",
63
85
  question: "Trang này có hữu ích không?",
86
+ send: "Gửi",
64
87
  thanks: "Cảm ơn phản hồi của bạn!",
65
88
  yes: "Có",
66
89
  },
67
90
  languageSwitcher: { label: "Ngôn ngữ", untranslated: "Chưa dịch" },
91
+ narration: {
92
+ cueDanger: "Nguy hiểm.",
93
+ cueInfo: "Thông tin.",
94
+ cueNote: "Ghi chú.",
95
+ cueSection: "Mục có thể mở rộng.",
96
+ cueStep: "Bước {n}.",
97
+ cueSuccess: "Thành công.",
98
+ cueTab: "Tab {title}.",
99
+ cueTip: "Mẹo.",
100
+ cueWarning: "Cảnh báo.",
101
+ error: "Không thể tải âm thanh.",
102
+ follow: "Theo dõi lời đọc",
103
+ label: "Nghe trang này",
104
+ minutes: "{n} phút",
105
+ next: "Câu tiếp theo",
106
+ pause: "Tạm dừng",
107
+ play: "Phát",
108
+ previous: "Câu trước",
109
+ progress: "Tiến độ đọc",
110
+ speed: "Tốc độ phát",
111
+ stop: "Dừng nghe",
112
+ },
68
113
  nav: {
69
114
  back: "Quay lại",
70
115
  breadcrumb: "Đường dẫn điều hướng",
@@ -89,6 +134,7 @@ export const vi: UIStringsOverride = {
89
134
  next: "Tiếp theo",
90
135
  pagination: "Phân trang",
91
136
  previous: "Trước",
137
+ related: "Trang liên quan",
92
138
  skipToContent: "Chuyển đến nội dung",
93
139
  },
94
140
  search: {
@@ -5,6 +5,7 @@ export const zhTW: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "新增至 Cursor",
7
7
  addToVscode: "新增至 VS Code",
8
+ askAboutCode: "詢問這段程式碼",
8
9
  connectMcp: "連線至 MCP",
9
10
  copied: "已複製!",
10
11
  copyClaudeCode: "複製 Claude Code 指令",
@@ -30,18 +31,34 @@ export const zhTW: UIStringsOverride = {
30
31
  copy: "複製對話",
31
32
  empty: "針對文件提出問題。",
32
33
  error: "抱歉,發生了一些問題。",
34
+ explainCode: "解釋這段程式碼。",
33
35
  label: "提出問題",
36
+ open: "開啟助理",
34
37
  placeholder: "提出問題…",
38
+ rateLimited: "你提出的問題太多了,請幾分鐘後再試。",
39
+ removeCode: "移除程式碼",
35
40
  send: "傳送",
41
+ support: "聯絡支援團隊",
42
+ supportSubject: "來自文件的問題",
36
43
  tip: "提示:可透過以下快捷鍵開啟和關閉聊天",
37
44
  title: "助理",
45
+ verifyFailed: "無法確認你是真人,請再試一次。",
38
46
  you: "你",
39
47
  },
40
48
  banner: { dismiss: "關閉公告" },
41
49
  changelog: {
42
50
  description: "產品更新與版本說明。",
51
+ empty: "尚無更新日誌項目。",
43
52
  title: "更新日誌",
44
53
  },
54
+ consent: {
55
+ accept: "接受",
56
+ decline: "拒絕",
57
+ label: "Cookie 同意",
58
+ message: "我們希望使用 Cookie 來了解這份文件的使用情況。",
59
+ policy: "隱私權政策",
60
+ settings: "Cookie 設定",
61
+ },
45
62
  content: {
46
63
  code: "程式碼",
47
64
  copyColor: "複製顏色 {name} {value}",
@@ -52,6 +69,8 @@ export const zhTW: UIStringsOverride = {
52
69
  preview: "預覽",
53
70
  prop: "屬性",
54
71
  selectTab: "選擇分頁",
72
+ selectView: "選擇檢視",
73
+ showLess: "顯示較少",
55
74
  showMore: "顯示更多",
56
75
  stars: "星標",
57
76
  tab: "分頁 {n}",
@@ -59,12 +78,36 @@ export const zhTW: UIStringsOverride = {
59
78
  update: "更新",
60
79
  },
61
80
  feedback: {
81
+ comment: "告訴我們更多(選填)",
62
82
  no: "沒有幫助",
63
83
  question: "這個頁面有幫助嗎?",
84
+ send: "送出",
64
85
  thanks: "感謝你的意見回饋!",
65
86
  yes: "有幫助",
66
87
  },
67
88
  languageSwitcher: { label: "語言", untranslated: "未翻譯" },
89
+ narration: {
90
+ cueDanger: "危險。",
91
+ cueInfo: "資訊。",
92
+ cueNote: "備註。",
93
+ cueSection: "可展開區段。",
94
+ cueStep: "第 {n} 步。",
95
+ cueSuccess: "成功。",
96
+ cueTab: "{title} 分頁。",
97
+ cueTip: "提示。",
98
+ cueWarning: "警告。",
99
+ error: "無法載入朗讀音訊。",
100
+ follow: "跟隨朗讀",
101
+ label: "收聽此頁面",
102
+ minutes: "{n} 分鐘",
103
+ next: "下一句",
104
+ pause: "暫停",
105
+ play: "播放",
106
+ previous: "上一句",
107
+ progress: "朗讀進度",
108
+ speed: "播放速度",
109
+ stop: "停止收聽",
110
+ },
68
111
  nav: {
69
112
  back: "返回",
70
113
  breadcrumb: "麵包屑導覽",
@@ -89,6 +132,7 @@ export const zhTW: UIStringsOverride = {
89
132
  next: "下一頁",
90
133
  pagination: "分頁",
91
134
  previous: "上一頁",
135
+ related: "相關頁面",
92
136
  skipToContent: "跳至內容",
93
137
  },
94
138
  search: {
@@ -5,6 +5,7 @@ export const zh: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "添加到 Cursor",
7
7
  addToVscode: "添加到 VS Code",
8
+ askAboutCode: "询问这段代码",
8
9
  connectMcp: "连接到 MCP",
9
10
  copied: "已复制!",
10
11
  copyClaudeCode: "复制 Claude Code 命令",
@@ -30,18 +31,34 @@ export const zh: UIStringsOverride = {
30
31
  copy: "复制对话",
31
32
  empty: "就文档提出问题。",
32
33
  error: "抱歉,出了点问题。",
34
+ explainCode: "解释这段代码。",
33
35
  label: "提出问题",
36
+ open: "打开助手",
34
37
  placeholder: "提出问题…",
38
+ rateLimited: "你提的问题太多了,请几分钟后再试。",
39
+ removeCode: "移除代码",
35
40
  send: "发送",
41
+ support: "联系支持团队",
42
+ supportSubject: "来自文档的问题",
36
43
  tip: "提示:可通过以下快捷键打开和关闭聊天",
37
44
  title: "助手",
45
+ verifyFailed: "无法确认你是真人,请重试。",
38
46
  you: "你",
39
47
  },
40
48
  banner: { dismiss: "关闭公告" },
41
49
  changelog: {
42
50
  description: "产品更新与版本说明。",
51
+ empty: "暂无更新日志条目。",
43
52
  title: "更新日志",
44
53
  },
54
+ consent: {
55
+ accept: "接受",
56
+ decline: "拒绝",
57
+ label: "Cookie 同意",
58
+ message: "我们希望使用 Cookie 来了解本文档的使用情况。",
59
+ policy: "隐私政策",
60
+ settings: "Cookie 设置",
61
+ },
45
62
  content: {
46
63
  code: "代码",
47
64
  copyColor: "复制颜色 {name} {value}",
@@ -52,6 +69,8 @@ export const zh: UIStringsOverride = {
52
69
  preview: "预览",
53
70
  prop: "属性",
54
71
  selectTab: "选择标签页",
72
+ selectView: "选择视图",
73
+ showLess: "显示更少",
55
74
  showMore: "显示更多",
56
75
  stars: "星标",
57
76
  tab: "标签页 {n}",
@@ -59,12 +78,36 @@ export const zh: UIStringsOverride = {
59
78
  update: "更新",
60
79
  },
61
80
  feedback: {
81
+ comment: "告诉我们更多(选填)",
62
82
  no: "没有帮助",
63
83
  question: "这个页面有帮助吗?",
84
+ send: "发送",
64
85
  thanks: "感谢你的反馈!",
65
86
  yes: "有帮助",
66
87
  },
67
88
  languageSwitcher: { label: "语言", untranslated: "未翻译" },
89
+ narration: {
90
+ cueDanger: "危险。",
91
+ cueInfo: "信息。",
92
+ cueNote: "备注。",
93
+ cueSection: "可展开部分。",
94
+ cueStep: "第 {n} 步。",
95
+ cueSuccess: "成功。",
96
+ cueTab: "{title} 标签页。",
97
+ cueTip: "提示。",
98
+ cueWarning: "警告。",
99
+ error: "无法加载朗读音频。",
100
+ follow: "跟随朗读",
101
+ label: "收听此页面",
102
+ minutes: "{n} 分钟",
103
+ next: "下一句",
104
+ pause: "暂停",
105
+ play: "播放",
106
+ previous: "上一句",
107
+ progress: "朗读进度",
108
+ speed: "播放速度",
109
+ stop: "停止收听",
110
+ },
68
111
  nav: {
69
112
  back: "返回",
70
113
  breadcrumb: "面包屑导航",
@@ -89,6 +132,7 @@ export const zh: UIStringsOverride = {
89
132
  next: "下一页",
90
133
  pagination: "分页",
91
134
  previous: "上一页",
135
+ related: "相关页面",
92
136
  skipToContent: "跳到内容",
93
137
  },
94
138
  search: {
@@ -0,0 +1,103 @@
1
+ import { nextFenceState } from "./code-fences.ts";
2
+ import type { FenceState } from "./code-fences.ts";
3
+
4
+ /**
5
+ * Content variables: `variables: { version: "2.1.0" }` in `blume.config.ts`
6
+ * makes `{{version}}` in a page read `2.1.0` wherever it appears in the body,
7
+ * code and links included. The syntax is Mintlify's, so migrated pages keep
8
+ * working.
9
+ *
10
+ * Substitution is textual, before any parsing, so a page's HTML, its search
11
+ * entry, its `.md` mirror, and `llms-full.txt` all agree: the MDX pipeline
12
+ * substitutes in a Vite transform ahead of the compiler (an MDX parser would
13
+ * read `{{version}}` as a JavaScript expression), the Markdown pipeline in a
14
+ * plugin over the parsed text, includes as their files are read, and the raw
15
+ * readers through {@link substituteVariables}. Only defined names are
16
+ * replaced; an undefined one in prose is a build error
17
+ * (`BLUME_UNDEFINED_VARIABLE`), and inside code it is left alone, since
18
+ * templating examples (`{{name}}` in a Handlebars snippet) are common there.
19
+ */
20
+
21
+ /** The variables a site defines, name to value. */
22
+ export type ContentVariables = Readonly<Record<string, string>>;
23
+
24
+ /** A variable name: letters, digits, `_`, and `-` (Mintlify's `api-url`). */
25
+ export const VARIABLE_NAME = /^[\w-]+$/u;
26
+
27
+ /** A `{{name}}` reference, spaces inside the braces allowed. */
28
+ const REFERENCE = /\{\{\s*(?<name>[\w-]+)\s*\}\}/gu;
29
+
30
+ /** Whether a site defines any variables, so the rest can be skipped. */
31
+ export const hasVariables = (
32
+ variables?: ContentVariables
33
+ ): variables is ContentVariables =>
34
+ variables !== undefined && Object.keys(variables).length > 0;
35
+
36
+ /** `text` with every reference to a defined variable replaced by its value. */
37
+ export const substituteVariables = (
38
+ text: string,
39
+ variables?: ContentVariables
40
+ ): string => {
41
+ if (!(hasVariables(variables) && text.includes("{{"))) {
42
+ return text;
43
+ }
44
+ return text.replaceAll(REFERENCE, (match, name: string) =>
45
+ Object.hasOwn(variables, name) ? (variables[name] ?? match) : match
46
+ );
47
+ };
48
+
49
+ // A leading front matter block: variables apply to the body, not to it.
50
+ const FRONT_MATTER = /^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/u;
51
+
52
+ /**
53
+ * {@link substituteVariables} over a page's raw source, leaving its front
54
+ * matter as written: the rendered page reads its title and description from
55
+ * the unsubstituted front matter, so the other surfaces must too.
56
+ */
57
+ export const substituteVariablesInBody = (
58
+ source: string,
59
+ variables?: ContentVariables
60
+ ): string => {
61
+ const head = FRONT_MATTER.exec(source)?.[0] ?? "";
62
+ return head + substituteVariables(source.slice(head.length), variables);
63
+ };
64
+
65
+ /** An undefined variable referenced in prose, with its 1-based line. */
66
+ export interface UndefinedVariable {
67
+ line: number;
68
+ name: string;
69
+ }
70
+
71
+ // A backtick code span: the same run of backticks opens and closes it.
72
+ const CODE_SPAN = /(?<ticks>`+)[^`][\s\S]*?\k<ticks>/gu;
73
+
74
+ /**
75
+ * The undefined variables `text` references outside code: fenced blocks and
76
+ * inline code spans are skipped, so a templating example never fails a
77
+ * build. Empty when the site defines no variables at all, so a page that
78
+ * shows `{{…}}` literally keeps working until the site opts in.
79
+ */
80
+ export const undefinedVariables = (
81
+ text: string,
82
+ variables?: ContentVariables
83
+ ): UndefinedVariable[] => {
84
+ if (!(hasVariables(variables) && text.includes("{{"))) {
85
+ return [];
86
+ }
87
+ const found: UndefinedVariable[] = [];
88
+ let fence: FenceState = null;
89
+ for (const [index, line] of text.split("\n").entries()) {
90
+ const wasInFence = fence !== null;
91
+ fence = nextFenceState(line, fence);
92
+ if (wasInFence || fence !== null) {
93
+ continue;
94
+ }
95
+ for (const match of line.replaceAll(CODE_SPAN, "").matchAll(REFERENCE)) {
96
+ const name = match.groups?.name ?? "";
97
+ if (!Object.hasOwn(variables, name)) {
98
+ found.push({ line: index + 1, name });
99
+ }
100
+ }
101
+ }
102
+ return found;
103
+ };
@@ -3,6 +3,7 @@ import { cp, mkdir, rm } from "node:fs/promises";
3
3
 
4
4
  import { dirname, join } from "pathe";
5
5
 
6
+ import { normalizeBasePath } from "../core/base-path.ts";
6
7
  import type { ResolvedConfig } from "../core/schema.ts";
7
8
  import type { ProjectContext } from "../core/types.ts";
8
9
  import type { ResolvedDeployment } from "./adapters/registry.ts";
@@ -30,7 +31,8 @@ export const deployOutputDir = (
30
31
  * served. A static build serves `dist/` wherever it lands; a server build
31
32
  * serves what its platform declares — the Build Output tree's `static/` half
32
33
  * on Vercel, Astro's `build.client` dir (`dist/client/`) on Node and
33
- * Cloudflare, `dist/` on Netlify.
34
+ * Cloudflare, `dist/` on Netlify. On Vercel and Cloudflare that's its
35
+ * `<base>/` directory under `deployment.base`, where the files land.
34
36
  */
35
37
  export const deployStaticDir = (
36
38
  config: ResolvedConfig,
@@ -38,7 +40,10 @@ export const deployStaticDir = (
38
40
  ): string => {
39
41
  const { deployment } = config;
40
42
  return deployment.options.output === "server"
41
- ? deployPlatform(deployment).serverStaticDir(context)
43
+ ? deployPlatform(deployment).serverStaticDir(
44
+ context,
45
+ normalizeBasePath(deployment.options.base)
46
+ )
42
47
  : distDir(context);
43
48
  };
44
49
 
@@ -23,11 +23,13 @@ export const cloudflareAdapterSchema = adapterDescriptorSchema(
23
23
  );
24
24
 
25
25
  /**
26
- * Cloudflare Workers and Pages. A server build emits a Worker into
27
- * `dist/server` (with a generated wrapper that answers `Accept:
28
- * text/markdown`) and serves `dist/client` through the ASSETS binding.
29
- * `@astrojs/cloudflare` is an optional peer: install it in the project
30
- * (`npm install @astrojs/cloudflare`).
26
+ * Cloudflare. A server build targets Workers only (`@astrojs/cloudflare`
27
+ * dropped Pages in v13): it emits a Worker into `dist/server` (with a
28
+ * generated wrapper that answers `Accept: text/markdown`) and serves
29
+ * `dist/client` through the ASSETS binding. A static build
30
+ * (`output: "static"`) never loads the adapter, and its `dist/` deploys to
31
+ * Pages or to Workers static assets. `@astrojs/cloudflare` is an optional
32
+ * peer: install it in the project (`npm install @astrojs/cloudflare`).
31
33
  */
32
34
  export const cloudflare = (
33
35
  options: CloudflareOptions = {}