blume 1.7.3 → 2.0.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 (690) hide show
  1. package/AGENTS.md +19 -0
  2. package/CHANGELOG.md +245 -0
  3. package/README.md +34 -21
  4. package/dist/cli/{chunk-vacwm2hv.js → chunk-27g6wdth.js} +2 -2
  5. package/dist/cli/{chunk-ps4m1xh4.js → chunk-2hn4b8z7.js} +513 -550
  6. package/dist/cli/chunk-2hn4b8z7.js.map +12 -0
  7. package/dist/cli/chunk-5shv93fd.js +39 -0
  8. package/dist/cli/chunk-5shv93fd.js.map +10 -0
  9. package/dist/cli/chunk-6crbhc3x.js +361 -0
  10. package/dist/cli/chunk-6crbhc3x.js.map +14 -0
  11. package/dist/cli/{chunk-8cjtbafj.js → chunk-6hsn950k.js} +109 -383
  12. package/dist/cli/chunk-6hsn950k.js.map +10 -0
  13. package/dist/cli/chunk-6vm74dry.js +148 -0
  14. package/dist/cli/chunk-6vm74dry.js.map +10 -0
  15. package/dist/cli/{chunk-yg63d42r.js → chunk-79jhk4py.js} +87 -58
  16. package/dist/cli/chunk-79jhk4py.js.map +35 -0
  17. package/dist/cli/chunk-82bbrxdn.js +51 -0
  18. package/dist/cli/chunk-82bbrxdn.js.map +10 -0
  19. package/dist/cli/chunk-abh8yjkn.js +31 -0
  20. package/dist/cli/chunk-abh8yjkn.js.map +10 -0
  21. package/dist/cli/chunk-ah61y8py.js +75 -0
  22. package/dist/cli/chunk-ah61y8py.js.map +11 -0
  23. package/dist/cli/{chunk-dwgcp5sm.js → chunk-ce574jw2.js} +1 -1
  24. package/dist/cli/chunk-ch6g3ar0.js +102 -0
  25. package/dist/cli/chunk-ch6g3ar0.js.map +10 -0
  26. package/dist/cli/chunk-dh8cwk36.js +279 -0
  27. package/dist/cli/chunk-dh8cwk36.js.map +10 -0
  28. package/dist/cli/{chunk-rqy0s5wh.js → chunk-epjnccmv.js} +17 -16
  29. package/dist/cli/{chunk-rqy0s5wh.js.map → chunk-epjnccmv.js.map} +3 -3
  30. package/dist/cli/chunk-f2z5v128.js +97 -0
  31. package/dist/cli/chunk-f2z5v128.js.map +10 -0
  32. package/dist/cli/{chunk-2z47ypj8.js → chunk-fa25z98p.js} +16 -3
  33. package/dist/cli/chunk-fa25z98p.js.map +11 -0
  34. package/dist/cli/{chunk-1jefwnfs.js → chunk-fs23ddbb.js} +1076 -2592
  35. package/dist/cli/chunk-fs23ddbb.js.map +35 -0
  36. package/dist/cli/{chunk-e7f42gdj.js → chunk-fxypxtvm.js} +2 -2
  37. package/dist/cli/{chunk-bvwwhd84.js → chunk-fz5wtpmh.js} +15 -15
  38. package/dist/cli/{chunk-bvwwhd84.js.map → chunk-fz5wtpmh.js.map} +1 -1
  39. package/dist/cli/chunk-hdpx1tax.js +91 -0
  40. package/dist/cli/chunk-hdpx1tax.js.map +10 -0
  41. package/dist/cli/{chunk-ct47dqpx.js → chunk-jts8mvcz.js} +67 -7
  42. package/dist/cli/{chunk-2mzebbbz.js.map → chunk-jts8mvcz.js.map} +6 -4
  43. package/dist/cli/{chunk-ahnw3kxw.js → chunk-jwyddg7y.js} +27 -22
  44. package/dist/cli/chunk-jwyddg7y.js.map +15 -0
  45. package/dist/cli/{chunk-cjtn640a.js → chunk-kdp5q7ke.js} +43 -20
  46. package/dist/cli/chunk-kdp5q7ke.js.map +10 -0
  47. package/dist/cli/{chunk-5g0w1e2c.js → chunk-kpf8rrjc.js} +28 -16
  48. package/dist/cli/{chunk-5g0w1e2c.js.map → chunk-kpf8rrjc.js.map} +4 -4
  49. package/dist/cli/chunk-m3vmjgmq.js +133 -0
  50. package/dist/cli/chunk-m3vmjgmq.js.map +10 -0
  51. package/dist/cli/{chunk-b27xqwn9.js → chunk-mb2919y2.js} +9 -5
  52. package/dist/cli/chunk-mb2919y2.js.map +10 -0
  53. package/dist/cli/{chunk-5qk08vmp.js → chunk-q5163e60.js} +133 -54
  54. package/dist/cli/chunk-q5163e60.js.map +11 -0
  55. package/dist/cli/chunk-qkqwkpte.js +12437 -0
  56. package/dist/cli/chunk-qkqwkpte.js.map +182 -0
  57. package/dist/cli/{chunk-4x36ddpw.js → chunk-qs4q5p4e.js} +81 -87
  58. package/dist/cli/chunk-qs4q5p4e.js.map +10 -0
  59. package/dist/cli/{chunk-0xjyb285.js → chunk-qwsrynx5.js} +15 -5
  60. package/dist/cli/{chunk-0xjyb285.js.map → chunk-qwsrynx5.js.map} +4 -4
  61. package/dist/cli/chunk-s1p84fyh.js +261 -0
  62. package/dist/cli/chunk-s1p84fyh.js.map +10 -0
  63. package/dist/cli/chunk-s6jhgk0q.js +176 -0
  64. package/dist/cli/chunk-s6jhgk0q.js.map +11 -0
  65. package/dist/cli/chunk-vtk4a6dg.js +374 -0
  66. package/dist/cli/chunk-vtk4a6dg.js.map +10 -0
  67. package/dist/cli/{chunk-k79xp7av.js → chunk-wgm7m9qk.js} +230 -700
  68. package/dist/cli/chunk-wgm7m9qk.js.map +36 -0
  69. package/dist/cli/chunk-wm7js3j9.js +145 -0
  70. package/dist/cli/chunk-wm7js3j9.js.map +11 -0
  71. package/dist/cli/chunk-yt5n7ppj.js +79 -0
  72. package/dist/cli/chunk-yt5n7ppj.js.map +10 -0
  73. package/dist/cli/{chunk-3r45185y.js → chunk-yw7dm696.js} +9 -11
  74. package/dist/cli/{chunk-3r45185y.js.map → chunk-yw7dm696.js.map} +3 -3
  75. package/dist/cli/{chunk-nn13znc2.js → chunk-zxcczpyx.js} +1 -1
  76. package/dist/cli/chunk-zxh4d9vy.js +122 -0
  77. package/dist/cli/chunk-zxh4d9vy.js.map +11 -0
  78. package/dist/cli/index.js +214 -57
  79. package/dist/cli/index.js.map +8 -7
  80. package/dist/types/ai/agent-readability.d.ts +52 -0
  81. package/dist/types/ai/ai-catalog.d.ts +42 -0
  82. package/dist/types/ai/api/paths.d.ts +17 -0
  83. package/dist/types/ai/api-catalog.d.ts +18 -0
  84. package/dist/types/ai/ask-context.d.ts +7 -7
  85. package/dist/types/ai/ask.d.ts +368 -0
  86. package/dist/types/ai/changelog-markdown.d.ts +2 -0
  87. package/dist/types/ai/component-markdown.d.ts +2 -2
  88. package/dist/types/ai/index.d.ts +24 -0
  89. package/dist/types/ai/link-headers.d.ts +24 -0
  90. package/dist/types/ai/llms.d.ts +25 -0
  91. package/dist/types/ai/markdown.d.ts +45 -0
  92. package/dist/types/ai/mcp/discovery.d.ts +68 -0
  93. package/dist/types/ai/mcp/tools.d.ts +16 -0
  94. package/dist/types/ai/openapi-components.d.ts +43 -0
  95. package/dist/types/ai/relative-links.d.ts +26 -0
  96. package/dist/types/ai/serializers.d.ts +15 -0
  97. package/dist/types/ai/skills.d.ts +42 -0
  98. package/dist/types/ai/tar.d.ts +25 -0
  99. package/dist/types/ai/visibility.d.ts +17 -0
  100. package/dist/types/ai/web-bot-auth.d.ts +16 -0
  101. package/dist/types/analytics/adobe.d.ts +35 -0
  102. package/dist/types/analytics/amplitude.d.ts +50 -0
  103. package/dist/types/analytics/clarity.d.ts +31 -0
  104. package/dist/types/analytics/clearbit.d.ts +29 -0
  105. package/dist/types/analytics/cloudflare.d.ts +41 -0
  106. package/dist/types/analytics/fathom.d.ts +41 -0
  107. package/dist/types/analytics/google-analytics.d.ts +44 -0
  108. package/dist/types/analytics/google-tag-manager.d.ts +40 -0
  109. package/dist/types/analytics/head.d.ts +30 -0
  110. package/dist/types/analytics/heap.d.ts +40 -0
  111. package/dist/types/analytics/hightouch.d.ts +44 -0
  112. package/dist/types/analytics/hotjar.d.ts +33 -0
  113. package/dist/types/analytics/index.d.ts +61 -0
  114. package/dist/types/analytics/inline.d.ts +17 -0
  115. package/dist/types/analytics/logrocket.d.ts +44 -0
  116. package/dist/types/analytics/mixpanel.d.ts +67 -0
  117. package/dist/types/analytics/pirsch.d.ts +42 -0
  118. package/dist/types/analytics/plausible.d.ts +56 -0
  119. package/dist/types/analytics/posthog.d.ts +45 -0
  120. package/dist/types/analytics/schema.d.ts +320 -0
  121. package/dist/types/analytics/script.d.ts +46 -0
  122. package/dist/types/analytics/segment.d.ts +50 -0
  123. package/dist/types/analytics/vercel.d.ts +48 -0
  124. package/dist/types/astro/integration.d.ts +76 -0
  125. package/dist/types/astro/markdown-negotiation.d.ts +23 -0
  126. package/dist/types/astro/module-types.d.ts +14 -0
  127. package/dist/types/astro/pages.d.ts +44 -0
  128. package/dist/types/cli/env.d.ts +12 -0
  129. package/dist/types/cli/init/scaffold.d.ts +154 -0
  130. package/dist/types/components/layout/nav-utils.d.ts +11 -0
  131. package/dist/types/core/adapter.d.ts +47 -0
  132. package/dist/types/core/api-name.d.ts +7 -0
  133. package/dist/types/core/changelog-index.d.ts +13 -0
  134. package/dist/types/core/config-input.d.ts +197 -526
  135. package/dist/types/core/config.d.ts +61 -35
  136. package/dist/types/core/content-assets.d.ts +76 -0
  137. package/dist/types/core/custom-pages.d.ts +33 -0
  138. package/dist/types/core/data.d.ts +30 -15
  139. package/dist/types/core/define-components.d.ts +12 -9
  140. package/dist/types/core/deployment-env.d.ts +6 -11
  141. package/dist/types/core/frontmatter.d.ts +10 -0
  142. package/dist/types/core/graph.d.ts +18 -0
  143. package/dist/types/core/heading-markers.d.ts +54 -0
  144. package/dist/types/core/i18n-ui.d.ts +12 -10
  145. package/dist/types/core/i18n.d.ts +87 -0
  146. package/dist/types/core/includes.d.ts +138 -0
  147. package/dist/types/core/last-modified.d.ts +47 -0
  148. package/dist/types/core/links.d.ts +95 -0
  149. package/dist/types/core/locale-links.d.ts +60 -0
  150. package/dist/types/core/manifest.d.ts +17 -0
  151. package/dist/types/core/meta.d.ts +38 -0
  152. package/dist/types/core/nav-diagnostics.d.ts +26 -0
  153. package/dist/types/core/navigation.d.ts +6 -0
  154. package/dist/types/core/node-require.d.ts +19 -0
  155. package/dist/types/core/package-json.d.ts +13 -0
  156. package/dist/types/core/probe.d.ts +42 -0
  157. package/dist/types/core/project-graph.d.ts +51 -0
  158. package/dist/types/core/project.d.ts +2 -0
  159. package/dist/types/core/safe-href.d.ts +2 -0
  160. package/dist/types/core/safe-links.d.ts +26 -0
  161. package/dist/types/core/schema.d.ts +2284 -454
  162. package/dist/types/core/site-url.d.ts +16 -0
  163. package/dist/types/core/sources/assets.d.ts +36 -0
  164. package/dist/types/core/sources/cache.d.ts +37 -0
  165. package/dist/types/core/sources/collection.d.ts +28 -0
  166. package/dist/types/core/sources/contentful-rich-text.d.ts +31 -0
  167. package/dist/types/core/sources/contentful.d.ts +40 -0
  168. package/dist/types/core/sources/filesystem.d.ts +24 -0
  169. package/dist/types/core/sources/github-releases.d.ts +31 -0
  170. package/dist/types/core/sources/json.d.ts +30 -0
  171. package/dist/types/core/sources/lexical.d.ts +19 -0
  172. package/dist/types/core/sources/lower.d.ts +75 -0
  173. package/dist/types/core/sources/mdx-remote.d.ts +28 -0
  174. package/dist/types/core/sources/normalize.d.ts +147 -0
  175. package/dist/types/core/sources/notion.d.ts +131 -0
  176. package/dist/types/core/sources/obsidian.d.ts +46 -0
  177. package/dist/types/core/sources/payload.d.ts +39 -0
  178. package/dist/types/core/sources/portable-text.d.ts +42 -0
  179. package/dist/types/core/sources/read.d.ts +23 -0
  180. package/dist/types/core/sources/remote.d.ts +74 -0
  181. package/dist/types/core/sources/resolve.d.ts +19 -0
  182. package/dist/types/core/sources/sanity.d.ts +43 -0
  183. package/dist/types/core/sources/strapi-blocks.d.ts +12 -0
  184. package/dist/types/core/sources/strapi.d.ts +33 -0
  185. package/dist/types/core/sources/types.d.ts +7 -0
  186. package/dist/types/core/sources/watch.d.ts +45 -0
  187. package/dist/types/core/text-width.d.ts +11 -0
  188. package/dist/types/core/types.d.ts +15 -1
  189. package/dist/types/core/unrecognized-keys.d.ts +7 -0
  190. package/dist/types/core/versions.d.ts +72 -0
  191. package/dist/types/core/yaml.d.ts +9 -0
  192. package/dist/types/deploy/adapter-output.d.ts +45 -0
  193. package/dist/types/deploy/adapters/cloudflare.d.ts +40 -0
  194. package/dist/types/deploy/adapters/index.d.ts +29 -0
  195. package/dist/types/deploy/adapters/netlify.d.ts +37 -0
  196. package/dist/types/deploy/adapters/node.d.ts +37 -0
  197. package/dist/types/deploy/adapters/registry.d.ts +133 -0
  198. package/dist/types/deploy/adapters/types.d.ts +71 -0
  199. package/dist/types/deploy/adapters/vercel.d.ts +38 -0
  200. package/dist/types/deploy/artifacts.d.ts +65 -0
  201. package/dist/types/deploy/cloudflare-negotiation.d.ts +196 -0
  202. package/dist/types/deploy/function-bundle.d.ts +80 -0
  203. package/dist/types/deploy/headers.d.ts +50 -0
  204. package/dist/types/deploy/node-headers.d.ts +42 -0
  205. package/dist/types/deploy/platforms/cloudflare.d.ts +40 -0
  206. package/dist/types/deploy/platforms/index.d.ts +18 -0
  207. package/dist/types/deploy/platforms/netlify.d.ts +13 -0
  208. package/dist/types/deploy/platforms/node.d.ts +11 -0
  209. package/dist/types/deploy/platforms/paths.d.ts +27 -0
  210. package/dist/types/deploy/platforms/static.d.ts +10 -0
  211. package/dist/types/deploy/platforms/types.d.ts +104 -0
  212. package/dist/types/deploy/platforms/vercel.d.ts +32 -0
  213. package/dist/types/deploy/redirects.d.ts +53 -0
  214. package/dist/types/deploy/robots.d.ts +8 -0
  215. package/dist/types/deploy/rss.d.ts +31 -0
  216. package/dist/types/deploy/sitemap.d.ts +21 -0
  217. package/dist/types/deploy/vercel-negotiation.d.ts +109 -0
  218. package/dist/types/markdown/code-title.d.ts +32 -0
  219. package/dist/types/markdown/fence-meta.d.ts +23 -0
  220. package/dist/types/markdown/themes.d.ts +3 -3
  221. package/dist/types/openapi/asyncapi.d.ts +129 -0
  222. package/dist/types/openapi/graphql-build.d.ts +8 -0
  223. package/dist/types/openapi/graphql.d.ts +122 -0
  224. package/dist/types/openapi/model.d.ts +158 -0
  225. package/dist/types/openapi/parse.d.ts +57 -0
  226. package/dist/types/openapi/references.d.ts +37 -25
  227. package/dist/types/openapi/render-mdx.d.ts +33 -0
  228. package/dist/types/openapi/sentence.d.ts +7 -0
  229. package/dist/types/openapi/signature.d.ts +10 -0
  230. package/dist/types/openapi/source.d.ts +22 -0
  231. package/dist/types/openapi/spec-dependency-error.d.ts +10 -0
  232. package/dist/types/reference/asyncapi.d.ts +166 -0
  233. package/dist/types/reference/graphql.d.ts +181 -0
  234. package/dist/types/reference/index.d.ts +32 -0
  235. package/dist/types/reference/openapi.d.ts +165 -0
  236. package/dist/types/reference/options.d.ts +157 -0
  237. package/dist/types/reference/scalar.d.ts +136 -0
  238. package/dist/types/reference/schema.d.ts +630 -0
  239. package/dist/types/search/adapters/algolia.d.ts +32 -0
  240. package/dist/types/search/adapters/flexsearch.d.ts +12 -0
  241. package/dist/types/search/adapters/index.d.ts +31 -0
  242. package/dist/types/search/adapters/mixedbread.d.ts +22 -0
  243. package/dist/types/search/adapters/orama-cloud.d.ts +33 -0
  244. package/dist/types/search/adapters/orama.d.ts +13 -0
  245. package/dist/types/search/adapters/pagefind.d.ts +12 -0
  246. package/dist/types/search/adapters/registry.d.ts +228 -0
  247. package/dist/types/search/adapters/types.d.ts +34 -0
  248. package/dist/types/search/adapters/typesense.d.ts +42 -0
  249. package/dist/types/search/build.d.ts +23 -0
  250. package/dist/types/search/documents.d.ts +90 -0
  251. package/dist/types/search/facets.d.ts +3 -0
  252. package/dist/types/search/orama-index.d.ts +1 -1
  253. package/dist/types/search/sync/algolia.d.ts +14 -0
  254. package/dist/types/search/sync/index.d.ts +14 -0
  255. package/dist/types/search/sync/orama-cloud.d.ts +10 -0
  256. package/dist/types/search/sync/typesense.d.ts +14 -0
  257. package/dist/types/sources/contentful.d.ts +68 -0
  258. package/dist/types/sources/custom.d.ts +20 -0
  259. package/dist/types/sources/filesystem.d.ts +42 -0
  260. package/dist/types/sources/github-releases.d.ts +46 -0
  261. package/dist/types/sources/index.d.ts +48 -0
  262. package/dist/types/sources/mdx-remote.d.ts +63 -0
  263. package/dist/types/sources/notion.d.ts +65 -0
  264. package/dist/types/sources/obsidian.d.ts +34 -0
  265. package/dist/types/sources/payload.d.ts +68 -0
  266. package/dist/types/sources/registry.d.ts +1414 -0
  267. package/dist/types/sources/sanity.d.ts +69 -0
  268. package/dist/types/sources/shared.d.ts +46 -0
  269. package/dist/types/sources/strapi.d.ts +66 -0
  270. package/dist/types/theme/icon-kind.d.ts +11 -0
  271. package/dist/types/theme/icons.d.ts +20 -0
  272. package/docs/01-quickstart.mdx +18 -18
  273. package/docs/02-deployment.mdx +52 -28
  274. package/docs/03-upgrading.mdx +364 -0
  275. package/docs/04-migrating.mdx +58 -0
  276. package/docs/08-faq.mdx +5 -5
  277. package/docs/advanced/blog.mdx +13 -6
  278. package/docs/advanced/changelog.mdx +23 -35
  279. package/docs/advanced/custom-pages.mdx +22 -10
  280. package/docs/advanced/meta.ts +1 -8
  281. package/docs/advanced/skills.mdx +8 -0
  282. package/docs/cli/audit.mdx +646 -0
  283. package/docs/cli/doctor.mdx +29 -0
  284. package/docs/{reference/eval.mdx → cli/evals.mdx} +12 -11
  285. package/docs/cli/index.mdx +105 -0
  286. package/docs/cli/meta.ts +7 -0
  287. package/docs/{reference → cli}/translate.mdx +9 -9
  288. package/docs/cli/validate.mdx +41 -0
  289. package/docs/cli/version.mdx +40 -0
  290. package/docs/configuration/analytics.mdx +350 -59
  291. package/docs/configuration/assistant.mdx +357 -0
  292. package/docs/configuration/customization.mdx +16 -10
  293. package/docs/configuration/index.mdx +50 -31
  294. package/docs/configuration/meta.ts +1 -1
  295. package/docs/configuration/search.mdx +76 -55
  296. package/docs/configuration/theming.mdx +24 -15
  297. package/docs/content/components.mdx +21 -5
  298. package/docs/{reference → content}/frontmatter.mdx +35 -1
  299. package/docs/content/i18n.mdx +9 -7
  300. package/docs/content/includes.mdx +2 -4
  301. package/docs/content/index.mdx +1 -1
  302. package/docs/content/islands.mdx +11 -6
  303. package/docs/content/meta.mdx +1 -1
  304. package/docs/content/meta.ts +1 -0
  305. package/docs/content/navigation.mdx +9 -7
  306. package/docs/content/sources.mdx +145 -50
  307. package/docs/content/syntax.mdx +16 -12
  308. package/docs/content/versioning.mdx +3 -3
  309. package/docs/discoverability/agent-discovery.mdx +12 -12
  310. package/docs/discoverability/index.mdx +4 -4
  311. package/docs/discoverability/json-api.mdx +4 -4
  312. package/docs/discoverability/llms-txt.mdx +6 -6
  313. package/docs/discoverability/markdown.mdx +4 -4
  314. package/docs/discoverability/mcp.mdx +11 -11
  315. package/docs/discoverability/sitemap-and-robots.mdx +3 -3
  316. package/docs/index.mdx +4 -4
  317. package/docs/references/asyncapi.mdx +59 -0
  318. package/docs/{advanced → references}/graphql.mdx +45 -32
  319. package/docs/{reference → references}/meta.ts +2 -2
  320. package/docs/references/openapi.mdx +171 -0
  321. package/docs/references/scalar.mdx +64 -0
  322. package/package.json +42 -8
  323. package/skills/blume/SKILL.md +23 -10
  324. package/skills/blume-migrate/SKILL.md +22 -21
  325. package/skills/blume-migrate/assets/oxfmt@0.67.0.patch +49 -0
  326. package/skills/blume-migrate/references/docusaurus.md +5 -4
  327. package/skills/blume-migrate/references/fumadocs.md +4 -4
  328. package/skills/blume-migrate/references/mintlify.md +23 -8
  329. package/skills/blume-migrate/references/monorepo.md +6 -6
  330. package/skills/blume-migrate/references/starlight.md +4 -4
  331. package/src/ai/agent-readability.ts +25 -26
  332. package/src/ai/ai-catalog.ts +50 -32
  333. package/src/ai/api/handlers.ts +46 -11
  334. package/src/ai/api/paths.ts +1 -1
  335. package/src/ai/api-catalog.ts +8 -8
  336. package/src/ai/ask-context.ts +7 -7
  337. package/src/ai/ask-data.ts +3 -3
  338. package/src/ai/ask.ts +637 -100
  339. package/src/ai/changelog-markdown.ts +91 -0
  340. package/src/ai/component-markdown.ts +328 -12
  341. package/src/ai/cors.ts +3 -3
  342. package/src/ai/index.ts +45 -0
  343. package/src/ai/link-headers.ts +7 -6
  344. package/src/ai/llms.ts +20 -15
  345. package/src/ai/markdown.ts +35 -5
  346. package/src/ai/mcp/data.ts +9 -5
  347. package/src/ai/openapi-components.ts +5 -2
  348. package/src/ai/relative-links.ts +170 -0
  349. package/src/ai/serializers.ts +3 -3
  350. package/src/ai/skills.ts +1 -1
  351. package/src/ai/visibility.ts +1 -1
  352. package/src/ai/web-bot-auth.ts +2 -2
  353. package/src/analytics/adobe.ts +46 -0
  354. package/src/analytics/amplitude.ts +79 -0
  355. package/src/analytics/clarity.ts +46 -0
  356. package/src/analytics/clearbit.ts +47 -0
  357. package/src/analytics/cloudflare.ts +67 -0
  358. package/src/analytics/fathom.ts +64 -0
  359. package/src/analytics/google-analytics.ts +84 -0
  360. package/src/analytics/google-tag-manager.ts +61 -0
  361. package/src/analytics/head.ts +130 -0
  362. package/src/analytics/heap.ts +65 -0
  363. package/src/analytics/hightouch.ts +77 -0
  364. package/src/analytics/hotjar.ts +47 -0
  365. package/src/analytics/index.ts +71 -0
  366. package/src/analytics/inline.ts +21 -0
  367. package/src/analytics/logrocket.ts +71 -0
  368. package/src/analytics/mixpanel.ts +92 -0
  369. package/src/analytics/pirsch.ts +66 -0
  370. package/src/analytics/plausible.ts +83 -0
  371. package/src/analytics/posthog.ts +78 -0
  372. package/src/analytics/schema.ts +60 -0
  373. package/src/analytics/script.ts +60 -0
  374. package/src/analytics/segment.ts +85 -0
  375. package/src/analytics/vercel.ts +50 -0
  376. package/src/astro/adapter-root.ts +7 -9
  377. package/src/astro/component-slots.ts +131 -91
  378. package/src/astro/generate.ts +129 -361
  379. package/src/astro/integration.ts +2 -6
  380. package/src/astro/module-types.ts +1 -1
  381. package/src/astro/pages.ts +13 -101
  382. package/src/astro/render-deps.ts +379 -0
  383. package/src/astro/runtime-deps.ts +201 -0
  384. package/src/astro/templates.ts +575 -562
  385. package/src/audit/agent.ts +24 -0
  386. package/src/audit/catalog.ts +2 -2
  387. package/src/audit/checks/assets.ts +2 -2
  388. package/src/audit/checks/dns-aid.ts +1 -1
  389. package/src/audit/checks/duplicates.ts +3 -1
  390. package/src/audit/checks/i18n.ts +1 -1
  391. package/src/audit/checks/indexability.ts +7 -7
  392. package/src/audit/checks/links.ts +2 -2
  393. package/src/audit/checks/llms.ts +6 -6
  394. package/src/audit/checks/network.ts +3 -3
  395. package/src/audit/checks/og-image.ts +2 -2
  396. package/src/audit/checks/robots.ts +1 -1
  397. package/src/audit/checks/sitemap.ts +2 -2
  398. package/src/audit/checks/social.ts +1 -1
  399. package/src/audit/run.ts +4 -3
  400. package/src/audit/terms.ts +31 -0
  401. package/src/audit/url.ts +13 -13
  402. package/src/blume-modules.d.ts +2 -2
  403. package/src/cli/command-meta.ts +10 -0
  404. package/src/cli/commands/audit.ts +40 -21
  405. package/src/cli/commands/build.ts +71 -316
  406. package/src/cli/commands/check.ts +1 -0
  407. package/src/cli/commands/dev.ts +40 -1
  408. package/src/cli/commands/doctor.ts +92 -14
  409. package/src/cli/commands/eject.ts +44 -7
  410. package/src/cli/commands/eval.ts +5 -5
  411. package/src/cli/commands/init.ts +161 -41
  412. package/src/cli/commands/migrate.ts +121 -0
  413. package/src/cli/commands/preview.ts +7 -1
  414. package/src/cli/commands/translate.ts +5 -5
  415. package/src/cli/commands/upgrade.ts +141 -0
  416. package/src/cli/commands/version.ts +57 -44
  417. package/src/cli/eject-scripts.ts +121 -6
  418. package/src/cli/index.ts +11 -1
  419. package/src/cli/init/install.ts +70 -0
  420. package/src/cli/init/questions.ts +7 -0
  421. package/src/cli/init/scaffold.ts +459 -75
  422. package/src/cli/lazy-command.ts +37 -1
  423. package/src/cli/prepare.ts +40 -6
  424. package/src/cli/required-secrets.ts +39 -12
  425. package/src/cli/unknown-flags.ts +266 -0
  426. package/src/cli/yarn-pnp.ts +52 -0
  427. package/src/components/content/AccordionItem.astro +7 -1
  428. package/src/components/content/Card.astro +4 -3
  429. package/src/components/content/ColorItem.astro +22 -4
  430. package/src/components/content/GithubInfo.astro +2 -2
  431. package/src/components/content/Prompt.astro +25 -25
  432. package/src/components/content/Tabs.astro +3 -1
  433. package/src/components/content/Tile.astro +2 -3
  434. package/src/components/content/Tooltip.astro +57 -9
  435. package/src/components/content/content-strings.ts +34 -0
  436. package/src/components/content/diff.ts +1 -1
  437. package/src/components/content/mermaid-element.ts +13 -2
  438. package/src/components/content/prompt-markdown.ts +292 -0
  439. package/src/components/content/tooltip-id.ts +41 -0
  440. package/src/components/copy-feedback.ts +1 -1
  441. package/src/components/islands/{AskAI.astro → Assistant.astro} +10 -10
  442. package/src/components/islands/{ask-ai.tsx → assistant.tsx} +23 -23
  443. package/src/components/islands/hooks.ts +36 -11
  444. package/src/components/layout/Analytics.astro +21 -79
  445. package/src/components/layout/Banner.astro +3 -1
  446. package/src/components/layout/DiscoveryLinks.astro +69 -0
  447. package/src/components/layout/Header.astro +93 -30
  448. package/src/components/layout/LanguageSwitcher.astro +4 -1
  449. package/src/components/layout/Logo.astro +23 -2
  450. package/src/components/layout/NavSelector.astro +13 -2
  451. package/src/components/layout/NavTree.astro +12 -3
  452. package/src/components/layout/NavTreeScript.astro +17 -3
  453. package/src/components/layout/PageActions.astro +3 -3
  454. package/src/components/layout/PageFeedback.astro +11 -1
  455. package/src/components/layout/PageLayout.astro +58 -11
  456. package/src/components/layout/Pagination.astro +7 -7
  457. package/src/components/layout/ReferenceLayout.astro +22 -13
  458. package/src/components/layout/RootLayout.astro +75 -72
  459. package/src/components/layout/Search.astro +43 -19
  460. package/src/components/layout/WebMcp.astro +1 -1
  461. package/src/components/layout/analytics-client.ts +73 -16
  462. package/src/components/layout/drawer-inert.ts +113 -15
  463. package/src/components/layout/dropdown-clamp.ts +105 -0
  464. package/src/components/layout/head-scripts.ts +15 -6
  465. package/src/components/layout/nav-utils.ts +17 -0
  466. package/src/components/layout/search/algolia.ts +8 -8
  467. package/src/components/layout/search/orama-cloud.ts +9 -7
  468. package/src/components/layout/search/typesense.ts +11 -17
  469. package/src/components/openapi/MessageComposer.astro +2 -2
  470. package/src/components/openapi/Playground.astro +2 -2
  471. package/src/components/openapi/description.ts +2 -2
  472. package/src/components/openapi/playground-client.ts +79 -10
  473. package/src/core/changelog-index.ts +24 -0
  474. package/src/core/code-fences.ts +1 -1
  475. package/src/core/component-overrides.ts +399 -154
  476. package/src/core/config-input.ts +201 -566
  477. package/src/core/config.ts +131 -42
  478. package/src/core/custom-pages.ts +105 -0
  479. package/src/core/data.ts +34 -15
  480. package/src/core/define-components.ts +12 -9
  481. package/src/core/deployment-env.ts +18 -74
  482. package/src/core/diagnostics.ts +14 -7
  483. package/src/core/graph.ts +69 -25
  484. package/src/core/i18n-ui.ts +41 -11
  485. package/src/core/i18n.ts +17 -0
  486. package/src/core/includes.ts +156 -38
  487. package/src/core/last-modified.ts +6 -11
  488. package/src/core/links.ts +166 -2
  489. package/src/core/manifest.ts +10 -3
  490. package/src/core/navigation.ts +115 -16
  491. package/src/core/new-tab.ts +35 -0
  492. package/src/core/node-require.ts +21 -0
  493. package/src/core/project-graph.ts +42 -26
  494. package/src/core/project.ts +9 -4
  495. package/src/core/request-body.ts +61 -0
  496. package/src/core/safe-href.ts +28 -0
  497. package/src/core/safe-links.ts +68 -0
  498. package/src/core/schema.ts +528 -745
  499. package/src/core/server-features.ts +10 -11
  500. package/src/core/sources/assets.ts +47 -11
  501. package/src/core/sources/collection.ts +67 -0
  502. package/src/core/sources/contentful-rich-text.ts +285 -0
  503. package/src/core/sources/contentful.ts +173 -0
  504. package/src/core/sources/github-releases.ts +51 -1
  505. package/src/core/sources/json.ts +71 -0
  506. package/src/core/sources/lexical.ts +195 -0
  507. package/src/core/sources/lower.ts +226 -0
  508. package/src/core/sources/normalize.ts +52 -2
  509. package/src/core/sources/notion.ts +39 -28
  510. package/src/core/sources/payload.ts +135 -0
  511. package/src/core/sources/portable-text.ts +11 -16
  512. package/src/core/sources/remote.ts +226 -0
  513. package/src/core/sources/resolve.ts +104 -166
  514. package/src/core/sources/sanity.ts +16 -49
  515. package/src/core/sources/strapi-blocks.ts +124 -0
  516. package/src/core/sources/strapi.ts +191 -0
  517. package/src/core/sources/types.ts +12 -1
  518. package/src/core/types.ts +15 -1
  519. package/src/core/ui-packs/ar.ts +10 -7
  520. package/src/core/ui-packs/bg.ts +10 -7
  521. package/src/core/ui-packs/bn.ts +10 -7
  522. package/src/core/ui-packs/ca.ts +7 -6
  523. package/src/core/ui-packs/cs.ts +10 -7
  524. package/src/core/ui-packs/da.ts +10 -7
  525. package/src/core/ui-packs/de.ts +10 -7
  526. package/src/core/ui-packs/el.ts +7 -6
  527. package/src/core/ui-packs/es.ts +7 -6
  528. package/src/core/ui-packs/fa.ts +10 -7
  529. package/src/core/ui-packs/fi.ts +10 -7
  530. package/src/core/ui-packs/fr.ts +7 -6
  531. package/src/core/ui-packs/he.ts +10 -7
  532. package/src/core/ui-packs/hi.ts +10 -7
  533. package/src/core/ui-packs/hr.ts +10 -7
  534. package/src/core/ui-packs/hu.ts +10 -7
  535. package/src/core/ui-packs/id.ts +10 -7
  536. package/src/core/ui-packs/it.ts +7 -6
  537. package/src/core/ui-packs/ja.ts +7 -6
  538. package/src/core/ui-packs/ko.ts +7 -6
  539. package/src/core/ui-packs/nl.ts +10 -7
  540. package/src/core/ui-packs/no.ts +10 -7
  541. package/src/core/ui-packs/pl.ts +10 -7
  542. package/src/core/ui-packs/pt-br.ts +7 -6
  543. package/src/core/ui-packs/pt.ts +7 -6
  544. package/src/core/ui-packs/ro.ts +10 -7
  545. package/src/core/ui-packs/ru.ts +10 -7
  546. package/src/core/ui-packs/sk.ts +10 -7
  547. package/src/core/ui-packs/sr.ts +10 -7
  548. package/src/core/ui-packs/sv.ts +10 -7
  549. package/src/core/ui-packs/th.ts +7 -6
  550. package/src/core/ui-packs/tr.ts +10 -7
  551. package/src/core/ui-packs/uk.ts +10 -7
  552. package/src/core/ui-packs/vi.ts +7 -6
  553. package/src/core/ui-packs/zh-tw.ts +7 -6
  554. package/src/core/ui-packs/zh.ts +7 -6
  555. package/src/core/unrecognized-keys.ts +10 -0
  556. package/src/core/version-cut.ts +116 -8
  557. package/src/deploy/adapter-output.ts +57 -97
  558. package/src/deploy/adapters/cloudflare.ts +39 -0
  559. package/src/deploy/adapters/index.ts +41 -0
  560. package/src/deploy/adapters/netlify.ts +34 -0
  561. package/src/deploy/adapters/node.ts +34 -0
  562. package/src/deploy/adapters/registry.ts +127 -0
  563. package/src/deploy/adapters/types.ts +92 -0
  564. package/src/deploy/adapters/vercel.ts +35 -0
  565. package/src/deploy/artifacts.ts +55 -27
  566. package/src/deploy/cloudflare-negotiation.ts +179 -100
  567. package/src/deploy/function-bundle.ts +18 -3
  568. package/src/deploy/headers.ts +124 -23
  569. package/src/deploy/node-headers.ts +198 -0
  570. package/src/deploy/platforms/cloudflare.ts +312 -0
  571. package/src/deploy/platforms/index.ts +67 -0
  572. package/src/deploy/platforms/netlify.ts +52 -0
  573. package/src/deploy/platforms/node.ts +40 -0
  574. package/src/deploy/platforms/paths.ts +42 -0
  575. package/src/deploy/platforms/static.ts +29 -0
  576. package/src/deploy/platforms/types.ts +112 -0
  577. package/src/deploy/platforms/vercel.ts +193 -0
  578. package/src/deploy/redirects.ts +30 -18
  579. package/src/deploy/robots.ts +3 -3
  580. package/src/deploy/rss.ts +2 -2
  581. package/src/deploy/sitemap.ts +2 -2
  582. package/src/deploy/vercel-negotiation.ts +2 -2
  583. package/src/eval/agents.ts +32 -1
  584. package/src/eval/findings.ts +19 -11
  585. package/src/eval/report.ts +10 -2
  586. package/src/markdown/external-links.ts +65 -0
  587. package/src/markdown/include.ts +45 -27
  588. package/src/markdown/index.ts +34 -9
  589. package/src/markdown/inline-code.ts +12 -6
  590. package/src/markdown/relative-links.ts +324 -0
  591. package/src/markdown/themes.ts +3 -3
  592. package/src/migrate/migrate.ts +149 -0
  593. package/src/openapi/parse.ts +64 -16
  594. package/src/openapi/proxy.ts +62 -10
  595. package/src/openapi/references.ts +147 -147
  596. package/src/openapi/render-mdx.ts +32 -10
  597. package/src/openapi/scalar.ts +15 -13
  598. package/src/openapi/sentence.ts +14 -0
  599. package/src/openapi/source.ts +37 -21
  600. package/src/openapi/spec-dependency-error.ts +15 -0
  601. package/src/reference/asyncapi.ts +83 -0
  602. package/src/reference/graphql.ts +89 -0
  603. package/src/reference/index.ts +40 -0
  604. package/src/reference/openapi.ts +83 -0
  605. package/src/reference/options.ts +201 -0
  606. package/src/reference/scalar.ts +136 -0
  607. package/src/reference/schema.ts +88 -0
  608. package/src/registry/eject.ts +109 -53
  609. package/src/search/adapters/algolia.ts +46 -0
  610. package/src/search/adapters/flexsearch.ts +29 -0
  611. package/src/search/adapters/index.ts +39 -0
  612. package/src/search/adapters/mixedbread.ts +39 -0
  613. package/src/search/adapters/orama-cloud.ts +51 -0
  614. package/src/search/adapters/orama.ts +24 -0
  615. package/src/search/adapters/pagefind.ts +27 -0
  616. package/src/search/adapters/registry.ts +131 -0
  617. package/src/search/adapters/types.ts +46 -0
  618. package/src/search/adapters/typesense.ts +57 -0
  619. package/src/search/build.ts +8 -4
  620. package/src/search/documents.ts +8 -2
  621. package/src/search/orama-index.ts +1 -1
  622. package/src/search/sync/algolia.ts +12 -11
  623. package/src/search/sync/index.ts +35 -20
  624. package/src/search/sync/orama-cloud.ts +12 -9
  625. package/src/search/sync/typesense.ts +15 -13
  626. package/src/sources/contentful.ts +63 -0
  627. package/src/sources/custom.ts +38 -0
  628. package/src/sources/filesystem.ts +51 -0
  629. package/src/sources/github-releases.ts +52 -0
  630. package/src/sources/index.ts +60 -0
  631. package/src/sources/mdx-remote.ts +76 -0
  632. package/src/sources/notion.ts +63 -0
  633. package/src/sources/obsidian.ts +38 -0
  634. package/src/sources/payload.ts +60 -0
  635. package/src/sources/registry.ts +182 -0
  636. package/src/sources/sanity.ts +66 -0
  637. package/src/sources/shared.ts +52 -0
  638. package/src/sources/strapi.ts +58 -0
  639. package/src/theme/entry.ts +24 -2
  640. package/src/translate/report.ts +40 -7
  641. package/src/upgrade/upgrade.ts +499 -0
  642. package/dist/cli/chunk-0qymqwzz.js +0 -164
  643. package/dist/cli/chunk-0qymqwzz.js.map +0 -15
  644. package/dist/cli/chunk-1jefwnfs.js.map +0 -48
  645. package/dist/cli/chunk-2mzebbbz.js +0 -69
  646. package/dist/cli/chunk-2z47ypj8.js.map +0 -11
  647. package/dist/cli/chunk-4x36ddpw.js.map +0 -11
  648. package/dist/cli/chunk-5093q3n7.js +0 -68
  649. package/dist/cli/chunk-5093q3n7.js.map +0 -10
  650. package/dist/cli/chunk-5qk08vmp.js.map +0 -11
  651. package/dist/cli/chunk-7s8hm3b6.js +0 -5347
  652. package/dist/cli/chunk-7s8hm3b6.js.map +0 -58
  653. package/dist/cli/chunk-8cjtbafj.js.map +0 -13
  654. package/dist/cli/chunk-97r59kpr.js +0 -381
  655. package/dist/cli/chunk-97r59kpr.js.map +0 -12
  656. package/dist/cli/chunk-ahnw3kxw.js.map +0 -15
  657. package/dist/cli/chunk-b27xqwn9.js.map +0 -10
  658. package/dist/cli/chunk-bf6bt1xt.js +0 -185
  659. package/dist/cli/chunk-bf6bt1xt.js.map +0 -11
  660. package/dist/cli/chunk-cjtn640a.js.map +0 -10
  661. package/dist/cli/chunk-ct47dqpx.js.map +0 -11
  662. package/dist/cli/chunk-esphfr8p.js +0 -107
  663. package/dist/cli/chunk-esphfr8p.js.map +0 -11
  664. package/dist/cli/chunk-ex56aa81.js +0 -1016
  665. package/dist/cli/chunk-ex56aa81.js.map +0 -13
  666. package/dist/cli/chunk-garjf5z9.js +0 -30
  667. package/dist/cli/chunk-garjf5z9.js.map +0 -10
  668. package/dist/cli/chunk-js7saxwm.js +0 -1045
  669. package/dist/cli/chunk-js7saxwm.js.map +0 -22
  670. package/dist/cli/chunk-k79xp7av.js.map +0 -39
  671. package/dist/cli/chunk-ps4m1xh4.js.map +0 -15
  672. package/dist/cli/chunk-q4rae3bg.js +0 -60
  673. package/dist/cli/chunk-q4rae3bg.js.map +0 -10
  674. package/dist/cli/chunk-rz9jmfhz.js +0 -108
  675. package/dist/cli/chunk-rz9jmfhz.js.map +0 -10
  676. package/dist/cli/chunk-vh9w1sgp.js +0 -73
  677. package/dist/cli/chunk-vh9w1sgp.js.map +0 -10
  678. package/dist/cli/chunk-vrfp10qk.js +0 -81
  679. package/dist/cli/chunk-vrfp10qk.js.map +0 -10
  680. package/dist/cli/chunk-yg63d42r.js.map +0 -34
  681. package/docs/advanced/api-reference.mdx +0 -240
  682. package/docs/configuration/ask-ai.mdx +0 -256
  683. package/docs/reference/cli.mdx +0 -197
  684. package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +0 -20
  685. package/src/components/content/changelog-element.ts +0 -69
  686. package/src/search/providers.ts +0 -91
  687. /package/dist/cli/{chunk-vacwm2hv.js.map → chunk-27g6wdth.js.map} +0 -0
  688. /package/dist/cli/{chunk-dwgcp5sm.js.map → chunk-ce574jw2.js.map} +0 -0
  689. /package/dist/cli/{chunk-e7f42gdj.js.map → chunk-fxypxtvm.js.map} +0 -0
  690. /package/dist/cli/{chunk-nn13znc2.js.map → chunk-zxcczpyx.js.map} +0 -0
@@ -0,0 +1,191 @@
1
+ import type { JsonObject } from "./json.ts";
2
+ import { asNumber, asObject, asString, getPath, objectsIn } from "./json.ts";
3
+ import type { RemoteFieldMap, RestClient } from "./remote.ts";
4
+ import {
5
+ documentEntry,
6
+ fetchJson,
7
+ queryString,
8
+ remoteSource,
9
+ } from "./remote.ts";
10
+ import { strapiBlocksToMarkdown } from "./strapi-blocks.ts";
11
+ import type { ContentSource, SourceContext, SourceEntry } from "./types.ts";
12
+
13
+ export interface StrapiSourceOptions {
14
+ name: string;
15
+ prefix?: string;
16
+ /** The Strapi origin (`https://cms.acme.dev`); its REST API is at `/api`. */
17
+ url: string;
18
+ /** The content type's plural API id (`articles`). */
19
+ contentType: string;
20
+ /** Locale code to fetch, for a localized content type. */
21
+ locale?: string;
22
+ /** The `populate` parameter; default `*`, which fills media and relations. */
23
+ populate?: string;
24
+ /**
25
+ * Field paths mapping an entry onto Blume meta + body. Defaults:
26
+ * `title`, `description`, `slug`, `content`, `updatedAt`.
27
+ */
28
+ fields?: RemoteFieldMap;
29
+ /** Extra query parameters for the request (`filters[...]`, `sort`). */
30
+ params?: Record<string, string>;
31
+ /** API token; defaults to `STRAPI_API_TOKEN`. */
32
+ token?: string;
33
+ /** Opt-in dev polling interval (seconds); omit to freeze for the session. */
34
+ pollInterval?: number;
35
+ /** Injected for tests; defaults to the global `fetch`. */
36
+ fetchImpl?: typeof fetch;
37
+ }
38
+
39
+ const PAGE_SIZE = 100;
40
+
41
+ const DEFAULT_FIELDS: Required<RemoteFieldMap> = {
42
+ body: "content",
43
+ description: "description",
44
+ lastModified: "updatedAt",
45
+ slug: "slug",
46
+ title: "title",
47
+ };
48
+
49
+ /**
50
+ * The entry as a flat document. Strapi 5 returns fields at the top level
51
+ * beside `documentId`; Strapi 4 wraps them in `attributes` under a numeric
52
+ * `id`, and that envelope is flattened so the same field paths apply.
53
+ */
54
+ const flatten = (item: JsonObject): JsonObject => {
55
+ const attributes = asObject(item.attributes);
56
+ return attributes ? { ...attributes, id: item.id ?? null } : item;
57
+ };
58
+
59
+ const idOf = (doc: JsonObject): string => {
60
+ const raw = doc.documentId ?? doc.id;
61
+ return asString(raw) ?? String(asNumber(raw) ?? "");
62
+ };
63
+
64
+ /** Every entry one query returns, across its pages, flattened. */
65
+ interface StrapiListing {
66
+ docs: JsonObject[];
67
+ /** Whether any entry came in Strapi 4's `attributes` envelope. */
68
+ v4: boolean;
69
+ }
70
+
71
+ /** Strapi 4 marks an unpublished entry with a null `publishedAt`. */
72
+ const unpublished = (doc: JsonObject): boolean => doc.publishedAt === null;
73
+
74
+ /**
75
+ * Strapi content source. Pages through a content type's REST endpoint, maps
76
+ * each entry's fields to frontmatter, and lowers its Blocks body to
77
+ * Markdown. Published entries only, unless `--preview` asks for drafts.
78
+ */
79
+ export const strapiSource = (
80
+ options: StrapiSourceOptions,
81
+ ctx?: SourceContext
82
+ ): ContentSource => {
83
+ const fields = { ...DEFAULT_FIELDS, ...options.fields };
84
+ const origin = options.url.replace(/\/+$/u, "");
85
+
86
+ const fetchEntries = async (): Promise<SourceEntry[]> => {
87
+ const token = options.token ?? process.env.STRAPI_API_TOKEN;
88
+ const client: RestClient = {
89
+ fetchImpl: options.fetchImpl,
90
+ headers: token ? { authorization: `Bearer ${token}` } : {},
91
+ };
92
+ const base = `${origin}/api/${options.contentType}`;
93
+
94
+ const list = async (
95
+ publication: Record<string, string>
96
+ ): Promise<StrapiListing> => {
97
+ const listing: StrapiListing = { docs: [], v4: false };
98
+ let page = 1;
99
+ let more = true;
100
+ while (more) {
101
+ // The user's params go first so the paging controls always win — a
102
+ // `params` key that shadowed them would refetch the same page forever.
103
+ const query = queryString({
104
+ ...options.params,
105
+ locale: options.locale,
106
+ "pagination[pageSize]": String(PAGE_SIZE),
107
+ "pagination[page]": String(page),
108
+ populate: options.populate ?? "*",
109
+ ...publication,
110
+ });
111
+ // oxlint-disable-next-line no-await-in-loop -- pages are sequential: each response says whether another exists.
112
+ const result = asObject(await fetchJson(`${base}?${query}`, client));
113
+ if (!result) {
114
+ throw new Error("Strapi returned a non-object response");
115
+ }
116
+ const items = objectsIn(result.data);
117
+ for (const item of items) {
118
+ listing.v4 ||= asObject(item.attributes) !== undefined;
119
+ listing.docs.push(flatten(item));
120
+ }
121
+ const pageCount =
122
+ asNumber(getPath(result, "meta.pagination.pageCount")) ?? 1;
123
+ more = items.length > 0 && page < pageCount;
124
+ page += 1;
125
+ }
126
+ return listing;
127
+ };
128
+
129
+ const toEntries = (
130
+ docs: JsonObject[],
131
+ isDraft: (doc: JsonObject) => boolean
132
+ ): SourceEntry[] =>
133
+ docs.map((doc) =>
134
+ documentEntry(
135
+ doc,
136
+ fields,
137
+ idOf(doc),
138
+ (body) => strapiBlocksToMarkdown(body, { baseUrl: origin }),
139
+ isDraft(doc)
140
+ )
141
+ );
142
+
143
+ // The default publication state is the published one in both Strapi 4
144
+ // and 5, and its response shape says which version is answering.
145
+ const published = await list({});
146
+ if (!ctx?.preview) {
147
+ return toEntries(published.docs, () => false);
148
+ }
149
+ // Strapi 4 previews with `publicationState=preview`, which returns drafts
150
+ // and published entries together, a draft's `publishedAt` being null.
151
+ if (published.v4) {
152
+ const previewed = await list({ publicationState: "preview" });
153
+ return toEntries(previewed.docs, unpublished);
154
+ }
155
+ // Strapi 5 answers `status=draft` with the draft version of every
156
+ // document, `publishedAt` null even when a published version exists, so a
157
+ // document is a draft only when it has no published version.
158
+ const drafts = await list({ status: "draft" });
159
+ if (drafts.docs.length === 0 && published.docs.length === 0) {
160
+ // Strapi 4 ignores `status`, so a Strapi 4 content type holding only
161
+ // drafts reads as empty on both requests. Ask with its own parameter;
162
+ // Strapi 5 either ignores it or rejects it (`strictParams`), and in
163
+ // both cases has nothing more to return.
164
+ const previewed = await list({ publicationState: "preview" }).catch(
165
+ () => null
166
+ );
167
+ return previewed ? toEntries(previewed.docs, unpublished) : [];
168
+ }
169
+ const publishedIds = new Set(published.docs.map(idOf));
170
+ const draftIds = new Set(drafts.docs.map(idOf));
171
+ // A published document with no draft version (a content type without
172
+ // Draft & Publish) still belongs in the preview.
173
+ return [
174
+ ...toEntries(drafts.docs, (doc) => !publishedIds.has(idOf(doc))),
175
+ ...toEntries(
176
+ published.docs.filter((doc) => !draftIds.has(idOf(doc))),
177
+ () => false
178
+ ),
179
+ ];
180
+ };
181
+
182
+ return remoteSource(
183
+ {
184
+ fetchEntries,
185
+ name: options.name,
186
+ pollInterval: options.pollInterval,
187
+ prefix: options.prefix,
188
+ },
189
+ ctx
190
+ );
191
+ };
@@ -117,6 +117,12 @@ export interface ContentSource {
117
117
  readonly staged: boolean;
118
118
  /** Optional route prefix; the source's routes namespace under `/<prefix>/`. */
119
119
  readonly prefix?: string;
120
+ /**
121
+ * True for a source whose entries exist in one language and can never be
122
+ * translated (GitHub Releases). Its pages render without a language
123
+ * switcher, since every other locale would only repeat the same text.
124
+ */
125
+ readonly monolingual?: boolean;
120
126
  /**
121
127
  * Resolved on-disk root, set by sources whose entries live on disk. For
122
128
  * filesystem sources it drives folder-meta discovery (scan under this root)
@@ -141,7 +147,12 @@ export interface ContentSource {
141
147
 
142
148
  /** Context passed to `normalizeEntry`, describing the owning source. */
143
149
  export interface NormalizeContext {
144
- source: { name: string; prefix?: string; staged: boolean };
150
+ source: {
151
+ monolingual?: boolean;
152
+ name: string;
153
+ prefix?: string;
154
+ staged: boolean;
155
+ };
145
156
  /** Site-wide route mount point (`""` or `/seg`), prepended to every route. */
146
157
  basePath?: string;
147
158
  defaultType: string;
package/src/core/types.ts CHANGED
@@ -154,6 +154,11 @@ export interface PageRecord {
154
154
  * checks skip these.
155
155
  */
156
156
  fallback?: boolean;
157
+ /**
158
+ * True for pages from a source that publishes one language only (GitHub
159
+ * Releases): they render without a language switcher.
160
+ */
161
+ monolingual?: boolean;
157
162
  /**
158
163
  * Content-relative path with the leading locale directory stripped, used for
159
164
  * sidebar grouping so the locale dir is not surfaced as a nav group. Equals
@@ -313,6 +318,13 @@ export interface Navigation {
313
318
  featured: FeaturedLink[];
314
319
  /** Repo URL for the header link, or null when hidden (`navigation.repo`). */
315
320
  repoUrl?: string | null;
321
+ /**
322
+ * Where the header's brand link points in this locale: `logo.href` moved
323
+ * into the locale's prefix when the locale serves that route, else left on
324
+ * the default route (a custom home page exists only at `/`). Set on i18n
325
+ * locale trees.
326
+ */
327
+ brandHref?: string;
316
328
  }
317
329
 
318
330
  /** The full content graph: the source of truth for generated modules. */
@@ -399,6 +411,8 @@ export interface RouteManifestEntry {
399
411
  versionAlternates: VersionAlternate[];
400
412
  /** True when this route renders fallback content for a missing translation. */
401
413
  fallback?: boolean;
414
+ /** True when the page's source publishes one language only (no switcher). */
415
+ monolingual?: boolean;
402
416
  /** Resolved "last updated" ISO date, when the feature is enabled. */
403
417
  lastModified?: string;
404
418
  }
@@ -409,6 +423,6 @@ export interface BlumeManifest {
409
423
  blumeVersion: string;
410
424
  projectRoot: string;
411
425
  contentRoot: string;
412
- output: ResolvedConfig["deployment"]["output"];
426
+ output: ResolvedConfig["deployment"]["options"]["output"];
413
427
  routes: RouteManifestEntry[];
414
428
  }
@@ -5,7 +5,6 @@ export const ar: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "إضافة إلى Cursor",
7
7
  addToVscode: "إضافة إلى VS Code",
8
- askAI: "اسأل الذكاء الاصطناعي عن هذه الصفحة",
9
8
  connectMcp: "الاتصال بـ MCP",
10
9
  copied: "تم النسخ!",
11
10
  copyClaudeCode: "نسخ أمر Claude Code",
@@ -24,7 +23,7 @@ export const ar: UIStringsOverride = {
24
23
  openInChatPrompt: "اقرأ {url} حتى أتمكن من طرح أسئلة حول هذه الصفحة.",
25
24
  scrollToTop: "العودة إلى الأعلى",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "الذكاء الاصطناعي",
29
28
  clear: "مسح المحادثة",
30
29
  close: "إغلاق",
@@ -35,16 +34,19 @@ export const ar: UIStringsOverride = {
35
34
  placeholder: "اطرح سؤالاً…",
36
35
  send: "إرسال",
37
36
  tip: "نصيحة: يمكنك فتح المحادثة وإغلاقها باستخدام",
38
- title: "اسأل الذكاء الاصطناعي",
37
+ title: "المساعد",
39
38
  you: "أنت",
40
39
  },
41
40
  banner: { dismiss: "إغلاق الإعلان" },
42
41
  changelog: {
43
42
  description: "تحديثات المنتج وملاحظات الإصدارات.",
44
- showReleases: "عرض إصدارات {version}",
45
43
  title: "سجل التغييرات",
46
44
  },
47
- content: { diagramError: "تعذّر عرض هذا المخطط." },
45
+ content: {
46
+ copyColor: "نسخ اللون {name} {value}",
47
+ copyPrompt: "نسخ الموجّه",
48
+ diagramError: "تعذّر عرض هذا المخطط.",
49
+ },
48
50
  feedback: {
49
51
  no: "لا",
50
52
  question: "هل كانت هذه الصفحة مفيدة؟",
@@ -60,6 +62,7 @@ export const ar: UIStringsOverride = {
60
62
  featured: "مميز",
61
63
  githubRepository: "مستودع GitHub",
62
64
  navigation: "التنقل",
65
+ opensInNewTab: "يفتح في علامة تبويب جديدة",
63
66
  primary: "رئيسي",
64
67
  sections: "الأقسام",
65
68
  toggleNavigation: "تبديل التنقل",
@@ -80,8 +83,8 @@ export const ar: UIStringsOverride = {
80
83
  search: {
81
84
  all: "الكل",
82
85
  allLanguages: "جميع اللغات",
83
- askAi: "اسأل الذكاء الاصطناعي",
84
- askAiHint: "احصل على إجابة فورية من الذكاء الاصطناعي",
86
+ assistant: "المساعد",
87
+ assistantHint: "احصل على إجابة فورية من الذكاء الاصطناعي",
85
88
  button: "بحث",
86
89
  devOnly: "البحث متاح في إصدار الإنتاج.",
87
90
  error: "حدث خطأ ما. يرجى المحاولة مرة أخرى.",
@@ -5,7 +5,6 @@ export const bg: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Добави в Cursor",
7
7
  addToVscode: "Добави във VS Code",
8
- askAI: "Попитай ИИ за тази страница",
9
8
  connectMcp: "Свържи се с MCP",
10
9
  copied: "Копирано!",
11
10
  copyClaudeCode: "Копирай командата на Claude Code",
@@ -25,7 +24,7 @@ export const bg: UIStringsOverride = {
25
24
  "Прочетете {url}, за да мога да задавам въпроси за тази страница.",
26
25
  scrollToTop: "Нагоре",
27
26
  },
28
- ask: {
27
+ assistant: {
29
28
  ai: "ИИ",
30
29
  clear: "Изчисти разговора",
31
30
  close: "Затвори",
@@ -36,16 +35,19 @@ export const bg: UIStringsOverride = {
36
35
  placeholder: "Задайте въпрос…",
37
36
  send: "Изпрати",
38
37
  tip: "Съвет: Можете да отваряте и затваряте чата с",
39
- title: "Попитай ИИ",
38
+ title: "Асистент",
40
39
  you: "Вие",
41
40
  },
42
41
  banner: { dismiss: "Затваряне на съобщението" },
43
42
  changelog: {
44
43
  description: "Актуализации на продукта и бележки към изданията.",
45
- showReleases: "Покажи изданията на {version}",
46
44
  title: "Дневник на промените",
47
45
  },
48
- content: { diagramError: "Тази диаграма не можа да бъде показана." },
46
+ content: {
47
+ copyColor: "Копирай цвета {name} {value}",
48
+ copyPrompt: "Копирай подканата",
49
+ diagramError: "Тази диаграма не можа да бъде показана.",
50
+ },
49
51
  feedback: {
50
52
  no: "Не",
51
53
  question: "Беше ли полезна тази страница?",
@@ -61,6 +63,7 @@ export const bg: UIStringsOverride = {
61
63
  featured: "Препоръчано",
62
64
  githubRepository: "Хранилище в GitHub",
63
65
  navigation: "Навигация",
66
+ opensInNewTab: "Отваря се в нов раздел",
64
67
  primary: "Основно",
65
68
  sections: "Раздели",
66
69
  toggleNavigation: "Превключи навигацията",
@@ -81,8 +84,8 @@ export const bg: UIStringsOverride = {
81
84
  search: {
82
85
  all: "Всички",
83
86
  allLanguages: "Всички езици",
84
- askAi: "Попитай ИИ",
85
- askAiHint: "Получете незабавен отговор от ИИ",
87
+ assistant: "Асистент",
88
+ assistantHint: "Получете незабавен отговор от ИИ",
86
89
  button: "Търсене",
87
90
  devOnly: "Търсенето е достъпно в производствената компилация.",
88
91
  error: "Нещо се обърка. Моля, опитайте отново.",
@@ -5,7 +5,6 @@ export const bn: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Cursor-এ যোগ করুন",
7
7
  addToVscode: "VS Code-এ যোগ করুন",
8
- askAI: "এই পৃষ্ঠা সম্পর্কে AI-কে জিজ্ঞাসা করুন",
9
8
  connectMcp: "MCP-তে সংযোগ করুন",
10
9
  copied: "অনুলিপি করা হয়েছে!",
11
10
  copyClaudeCode: "Claude Code কমান্ড অনুলিপি করুন",
@@ -24,7 +23,7 @@ export const bn: UIStringsOverride = {
24
23
  openInChatPrompt: "{url} পড়ুন, যাতে আমি এই পৃষ্ঠা সম্পর্কে প্রশ্ন করতে পারি।",
25
24
  scrollToTop: "উপরে যান",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "কথোপকথন মুছুন",
30
29
  close: "বন্ধ করুন",
@@ -35,16 +34,19 @@ export const bn: UIStringsOverride = {
35
34
  placeholder: "একটি প্রশ্ন করুন…",
36
35
  send: "পাঠান",
37
36
  tip: "টিপ: চ্যাট খুলতে ও বন্ধ করতে চাপুন",
38
- title: "AI-কে জিজ্ঞাসা করুন",
37
+ title: "সহকারী",
39
38
  you: "আপনি",
40
39
  },
41
40
  banner: { dismiss: "ঘোষণা বন্ধ করুন" },
42
41
  changelog: {
43
42
  description: "পণ্য আপডেট এবং রিলিজ নোট।",
44
- showReleases: "{version} রিলিজ দেখান",
45
43
  title: "পরিবর্তন লগ",
46
44
  },
47
- content: { diagramError: "এই ডায়াগ্রামটি রেন্ডার করা যায়নি।" },
45
+ content: {
46
+ copyColor: "{name} রং {value} অনুলিপি করুন",
47
+ copyPrompt: "প্রম্পট অনুলিপি করুন",
48
+ diagramError: "এই ডায়াগ্রামটি রেন্ডার করা যায়নি।",
49
+ },
48
50
  feedback: {
49
51
  no: "না",
50
52
  question: "এই পৃষ্ঠাটি কি সহায়ক ছিল?",
@@ -60,6 +62,7 @@ export const bn: UIStringsOverride = {
60
62
  featured: "ফিচার্ড",
61
63
  githubRepository: "GitHub রিপোজিটরি",
62
64
  navigation: "নেভিগেশন",
65
+ opensInNewTab: "নতুন ট্যাবে খোলে",
63
66
  primary: "প্রধান",
64
67
  sections: "বিভাগসমূহ",
65
68
  toggleNavigation: "নেভিগেশন টগল করুন",
@@ -80,8 +83,8 @@ export const bn: UIStringsOverride = {
80
83
  search: {
81
84
  all: "সব",
82
85
  allLanguages: "সব ভাষা",
83
- askAi: "AI-কে জিজ্ঞাসা করুন",
84
- askAiHint: "AI থেকে তাৎক্ষণিক উত্তর পান",
86
+ assistant: "সহকারী",
87
+ assistantHint: "AI থেকে তাৎক্ষণিক উত্তর পান",
85
88
  button: "অনুসন্ধান",
86
89
  devOnly: "অনুসন্ধান প্রোডাকশন বিল্ডে উপলব্ধ।",
87
90
  error: "কিছু একটা ভুল হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।",
@@ -5,7 +5,6 @@ export const ca: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Afegeix a Cursor",
7
7
  addToVscode: "Afegeix a VS Code",
8
- askAI: "Pregunta a la IA sobre aquesta pàgina",
9
8
  connectMcp: "Connecta a MCP",
10
9
  copied: "Copiat!",
11
10
  copyClaudeCode: "Copia l'ordre de Claude Code",
@@ -25,7 +24,7 @@ export const ca: UIStringsOverride = {
25
24
  "Llegeix {url} perquè pugui fer-te preguntes sobre aquesta pàgina.",
26
25
  scrollToTop: "Torna a dalt",
27
26
  },
28
- ask: {
27
+ assistant: {
29
28
  ai: "IA",
30
29
  clear: "Esborra la conversa",
31
30
  close: "Tanca",
@@ -36,16 +35,17 @@ export const ca: UIStringsOverride = {
36
35
  placeholder: "Fes una pregunta…",
37
36
  send: "Envia",
38
37
  tip: "Consell: pots obrir i tancar el xat amb",
39
- title: "Pregunta a la IA",
38
+ title: "Assistent",
40
39
  you: "Tu",
41
40
  },
42
41
  banner: { dismiss: "Tanca l'anunci" },
43
42
  changelog: {
44
43
  description: "Actualitzacions del producte i notes de la versió.",
45
- showReleases: "Mostra les versions {version}",
46
44
  title: "Registre de canvis",
47
45
  },
48
46
  content: {
47
+ copyColor: "Copia el color {name} {value}",
48
+ copyPrompt: "Copia la indicació",
49
49
  diagramError: "No s'ha pogut mostrar aquest diagrama.",
50
50
  },
51
51
  feedback: {
@@ -63,6 +63,7 @@ export const ca: UIStringsOverride = {
63
63
  featured: "Destacat",
64
64
  githubRepository: "Repositori de GitHub",
65
65
  navigation: "Navegació",
66
+ opensInNewTab: "S'obre en una pestanya nova",
66
67
  primary: "Principal",
67
68
  sections: "Seccions",
68
69
  toggleNavigation: "Mostra o amaga la navegació",
@@ -83,8 +84,8 @@ export const ca: UIStringsOverride = {
83
84
  search: {
84
85
  all: "Tots",
85
86
  allLanguages: "Tots els idiomes",
86
- askAi: "Pregunta a la IA",
87
- askAiHint: "Obtén una resposta instantània de la IA",
87
+ assistant: "Assistent",
88
+ assistantHint: "Obtén una resposta instantània de la IA",
88
89
  button: "Cerca",
89
90
  devOnly: "La cerca està disponible a la compilació de producció.",
90
91
  error: "Alguna cosa ha anat malament. Torna-ho a provar.",
@@ -5,7 +5,6 @@ export const cs: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Přidat do Cursoru",
7
7
  addToVscode: "Přidat do VS Code",
8
- askAI: "Zeptat se AI na tuto stránku",
9
8
  connectMcp: "Připojit k MCP",
10
9
  copied: "Zkopírováno!",
11
10
  copyClaudeCode: "Kopírovat příkaz Claude Code",
@@ -24,7 +23,7 @@ export const cs: UIStringsOverride = {
24
23
  openInChatPrompt: "Přečtěte si {url}, ať se mohu ptát na tuto stránku.",
25
24
  scrollToTop: "Zpět nahoru",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "Vymazat konverzaci",
30
29
  close: "Zavřít",
@@ -35,16 +34,19 @@ export const cs: UIStringsOverride = {
35
34
  placeholder: "Položit otázku…",
36
35
  send: "Odeslat",
37
36
  tip: "Tip: Chat můžete otevřít a zavřít pomocí",
38
- title: "Zeptat se AI",
37
+ title: "Asistent",
39
38
  you: "Vy",
40
39
  },
41
40
  banner: { dismiss: "Zavřít oznámení" },
42
41
  changelog: {
43
42
  description: "Novinky produktu a poznámky k vydání.",
44
- showReleases: "Zobrazit vydání {version}",
45
43
  title: "Seznam změn",
46
44
  },
47
- content: { diagramError: "Tento diagram se nepodařilo vykreslit." },
45
+ content: {
46
+ copyColor: "Kopírovat barvu {name} {value}",
47
+ copyPrompt: "Kopírovat prompt",
48
+ diagramError: "Tento diagram se nepodařilo vykreslit.",
49
+ },
48
50
  feedback: {
49
51
  no: "Ne",
50
52
  question: "Byla tato stránka užitečná?",
@@ -60,6 +62,7 @@ export const cs: UIStringsOverride = {
60
62
  featured: "Doporučené",
61
63
  githubRepository: "Repozitář na GitHubu",
62
64
  navigation: "Navigace",
65
+ opensInNewTab: "Otevře se na nové kartě",
63
66
  primary: "Hlavní",
64
67
  sections: "Sekce",
65
68
  toggleNavigation: "Přepnout navigaci",
@@ -80,8 +83,8 @@ export const cs: UIStringsOverride = {
80
83
  search: {
81
84
  all: "Vše",
82
85
  allLanguages: "Všechny jazyky",
83
- askAi: "Zeptat se AI",
84
- askAiHint: "Získejte okamžitou odpověď od AI",
86
+ assistant: "Asistent",
87
+ assistantHint: "Získejte okamžitou odpověď od AI",
85
88
  button: "Hledat",
86
89
  devOnly: "Vyhledávání je dostupné v produkčním buildu.",
87
90
  error: "Něco se pokazilo. Zkuste to prosím znovu.",
@@ -5,7 +5,6 @@ export const da: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Føj til Cursor",
7
7
  addToVscode: "Føj til VS Code",
8
- askAI: "Spørg AI om denne side",
9
8
  connectMcp: "Opret forbindelse til MCP",
10
9
  copied: "Kopieret!",
11
10
  copyClaudeCode: "Kopiér Claude Code-kommando",
@@ -24,7 +23,7 @@ export const da: UIStringsOverride = {
24
23
  openInChatPrompt: "Læs {url}, så jeg kan stille spørgsmål om denne side.",
25
24
  scrollToTop: "Tilbage til toppen",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "Ryd samtalen",
30
29
  close: "Luk",
@@ -35,16 +34,19 @@ export const da: UIStringsOverride = {
35
34
  placeholder: "Stil et spørgsmål…",
36
35
  send: "Send",
37
36
  tip: "Tip: Du kan åbne og lukke chatten med",
38
- title: "Spørg AI",
37
+ title: "Assistent",
39
38
  you: "Du",
40
39
  },
41
40
  banner: { dismiss: "Luk meddelelsen" },
42
41
  changelog: {
43
42
  description: "Produktopdateringer og udgivelsesnoter.",
44
- showReleases: "Vis udgivelser for {version}",
45
43
  title: "Ændringslog",
46
44
  },
47
- content: { diagramError: "Dette diagram kunne ikke vises." },
45
+ content: {
46
+ copyColor: "Kopiér farven {name} {value}",
47
+ copyPrompt: "Kopiér prompt",
48
+ diagramError: "Dette diagram kunne ikke vises.",
49
+ },
48
50
  feedback: {
49
51
  no: "Nej",
50
52
  question: "Var denne side nyttig?",
@@ -60,6 +62,7 @@ export const da: UIStringsOverride = {
60
62
  featured: "Udvalgt",
61
63
  githubRepository: "GitHub-repositorium",
62
64
  navigation: "Navigation",
65
+ opensInNewTab: "Åbner i en ny fane",
63
66
  primary: "Primær",
64
67
  sections: "Sektioner",
65
68
  toggleNavigation: "Vis eller skjul navigationen",
@@ -80,8 +83,8 @@ export const da: UIStringsOverride = {
80
83
  search: {
81
84
  all: "Alle",
82
85
  allLanguages: "Alle sprog",
83
- askAi: "Spørg AI",
84
- askAiHint: "Få et øjeblikkeligt svar fra AI",
86
+ assistant: "Assistent",
87
+ assistantHint: "Få et øjeblikkeligt svar fra AI",
85
88
  button: "Søg",
86
89
  devOnly: "Søgning er tilgængelig i produktionsbygningen.",
87
90
  error: "Noget gik galt. Prøv igen.",
@@ -5,7 +5,6 @@ export const de: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Zu Cursor hinzufügen",
7
7
  addToVscode: "Zu VS Code hinzufügen",
8
- askAI: "KI zu dieser Seite fragen",
9
8
  connectMcp: "Mit MCP verbinden",
10
9
  copied: "Kopiert!",
11
10
  copyClaudeCode: "Claude-Code-Befehl kopieren",
@@ -25,7 +24,7 @@ export const de: UIStringsOverride = {
25
24
  "Lies {url}, damit ich dir Fragen zu dieser Seite stellen kann.",
26
25
  scrollToTop: "Nach oben scrollen",
27
26
  },
28
- ask: {
27
+ assistant: {
29
28
  ai: "KI",
30
29
  clear: "Unterhaltung löschen",
31
30
  close: "Schließen",
@@ -36,16 +35,19 @@ export const de: UIStringsOverride = {
36
35
  placeholder: "Eine Frage stellen…",
37
36
  send: "Senden",
38
37
  tip: "Tipp: Du kannst den Chat öffnen und schließen mit",
39
- title: "KI fragen",
38
+ title: "Assistent",
40
39
  you: "Du",
41
40
  },
42
41
  banner: { dismiss: "Ankündigung schließen" },
43
42
  changelog: {
44
43
  description: "Produkt-Updates und Versionshinweise.",
45
- showReleases: "Releases für {version} anzeigen",
46
44
  title: "Änderungsprotokoll",
47
45
  },
48
- content: { diagramError: "Dieses Diagramm konnte nicht dargestellt werden." },
46
+ content: {
47
+ copyColor: "Farbe {name} {value} kopieren",
48
+ copyPrompt: "Prompt kopieren",
49
+ diagramError: "Dieses Diagramm konnte nicht dargestellt werden.",
50
+ },
49
51
  feedback: {
50
52
  no: "Nein",
51
53
  question: "War diese Seite hilfreich?",
@@ -61,6 +63,7 @@ export const de: UIStringsOverride = {
61
63
  featured: "Empfohlen",
62
64
  githubRepository: "GitHub-Repository",
63
65
  navigation: "Navigation",
66
+ opensInNewTab: "Öffnet sich in einem neuen Tab",
64
67
  primary: "Primär",
65
68
  sections: "Abschnitte",
66
69
  toggleNavigation: "Navigation umschalten",
@@ -81,8 +84,8 @@ export const de: UIStringsOverride = {
81
84
  search: {
82
85
  all: "Alle",
83
86
  allLanguages: "Alle Sprachen",
84
- askAi: "KI fragen",
85
- askAiHint: "Erhalte sofort eine Antwort von der KI",
87
+ assistant: "Assistent",
88
+ assistantHint: "Erhalte sofort eine Antwort von der KI",
86
89
  button: "Suchen",
87
90
  devOnly: "Die Suche ist im Produktions-Build verfügbar.",
88
91
  error: "Etwas ist schiefgelaufen. Bitte versuche es erneut.",