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.
- package/AGENTS.md +19 -0
- package/CHANGELOG.md +245 -0
- package/README.md +34 -21
- package/dist/cli/{chunk-vacwm2hv.js → chunk-27g6wdth.js} +2 -2
- package/dist/cli/{chunk-ps4m1xh4.js → chunk-2hn4b8z7.js} +513 -550
- package/dist/cli/chunk-2hn4b8z7.js.map +12 -0
- package/dist/cli/chunk-5shv93fd.js +39 -0
- package/dist/cli/chunk-5shv93fd.js.map +10 -0
- package/dist/cli/chunk-6crbhc3x.js +361 -0
- package/dist/cli/chunk-6crbhc3x.js.map +14 -0
- package/dist/cli/{chunk-8cjtbafj.js → chunk-6hsn950k.js} +109 -383
- package/dist/cli/chunk-6hsn950k.js.map +10 -0
- package/dist/cli/chunk-6vm74dry.js +148 -0
- package/dist/cli/chunk-6vm74dry.js.map +10 -0
- package/dist/cli/{chunk-yg63d42r.js → chunk-79jhk4py.js} +87 -58
- package/dist/cli/chunk-79jhk4py.js.map +35 -0
- package/dist/cli/chunk-82bbrxdn.js +51 -0
- package/dist/cli/chunk-82bbrxdn.js.map +10 -0
- package/dist/cli/chunk-abh8yjkn.js +31 -0
- package/dist/cli/chunk-abh8yjkn.js.map +10 -0
- package/dist/cli/chunk-ah61y8py.js +75 -0
- package/dist/cli/chunk-ah61y8py.js.map +11 -0
- package/dist/cli/{chunk-dwgcp5sm.js → chunk-ce574jw2.js} +1 -1
- package/dist/cli/chunk-ch6g3ar0.js +102 -0
- package/dist/cli/chunk-ch6g3ar0.js.map +10 -0
- package/dist/cli/chunk-dh8cwk36.js +279 -0
- package/dist/cli/chunk-dh8cwk36.js.map +10 -0
- package/dist/cli/{chunk-rqy0s5wh.js → chunk-epjnccmv.js} +17 -16
- package/dist/cli/{chunk-rqy0s5wh.js.map → chunk-epjnccmv.js.map} +3 -3
- package/dist/cli/chunk-f2z5v128.js +97 -0
- package/dist/cli/chunk-f2z5v128.js.map +10 -0
- package/dist/cli/{chunk-2z47ypj8.js → chunk-fa25z98p.js} +16 -3
- package/dist/cli/chunk-fa25z98p.js.map +11 -0
- package/dist/cli/{chunk-1jefwnfs.js → chunk-fs23ddbb.js} +1076 -2592
- package/dist/cli/chunk-fs23ddbb.js.map +35 -0
- package/dist/cli/{chunk-e7f42gdj.js → chunk-fxypxtvm.js} +2 -2
- package/dist/cli/{chunk-bvwwhd84.js → chunk-fz5wtpmh.js} +15 -15
- package/dist/cli/{chunk-bvwwhd84.js.map → chunk-fz5wtpmh.js.map} +1 -1
- package/dist/cli/chunk-hdpx1tax.js +91 -0
- package/dist/cli/chunk-hdpx1tax.js.map +10 -0
- package/dist/cli/{chunk-ct47dqpx.js → chunk-jts8mvcz.js} +67 -7
- package/dist/cli/{chunk-2mzebbbz.js.map → chunk-jts8mvcz.js.map} +6 -4
- package/dist/cli/{chunk-ahnw3kxw.js → chunk-jwyddg7y.js} +27 -22
- package/dist/cli/chunk-jwyddg7y.js.map +15 -0
- package/dist/cli/{chunk-cjtn640a.js → chunk-kdp5q7ke.js} +43 -20
- package/dist/cli/chunk-kdp5q7ke.js.map +10 -0
- package/dist/cli/{chunk-5g0w1e2c.js → chunk-kpf8rrjc.js} +28 -16
- package/dist/cli/{chunk-5g0w1e2c.js.map → chunk-kpf8rrjc.js.map} +4 -4
- package/dist/cli/chunk-m3vmjgmq.js +133 -0
- package/dist/cli/chunk-m3vmjgmq.js.map +10 -0
- package/dist/cli/{chunk-b27xqwn9.js → chunk-mb2919y2.js} +9 -5
- package/dist/cli/chunk-mb2919y2.js.map +10 -0
- package/dist/cli/{chunk-5qk08vmp.js → chunk-q5163e60.js} +133 -54
- package/dist/cli/chunk-q5163e60.js.map +11 -0
- package/dist/cli/chunk-qkqwkpte.js +12437 -0
- package/dist/cli/chunk-qkqwkpte.js.map +182 -0
- package/dist/cli/{chunk-4x36ddpw.js → chunk-qs4q5p4e.js} +81 -87
- package/dist/cli/chunk-qs4q5p4e.js.map +10 -0
- package/dist/cli/{chunk-0xjyb285.js → chunk-qwsrynx5.js} +15 -5
- package/dist/cli/{chunk-0xjyb285.js.map → chunk-qwsrynx5.js.map} +4 -4
- package/dist/cli/chunk-s1p84fyh.js +261 -0
- package/dist/cli/chunk-s1p84fyh.js.map +10 -0
- package/dist/cli/chunk-s6jhgk0q.js +176 -0
- package/dist/cli/chunk-s6jhgk0q.js.map +11 -0
- package/dist/cli/chunk-vtk4a6dg.js +374 -0
- package/dist/cli/chunk-vtk4a6dg.js.map +10 -0
- package/dist/cli/{chunk-k79xp7av.js → chunk-wgm7m9qk.js} +230 -700
- package/dist/cli/chunk-wgm7m9qk.js.map +36 -0
- package/dist/cli/chunk-wm7js3j9.js +145 -0
- package/dist/cli/chunk-wm7js3j9.js.map +11 -0
- package/dist/cli/chunk-yt5n7ppj.js +79 -0
- package/dist/cli/chunk-yt5n7ppj.js.map +10 -0
- package/dist/cli/{chunk-3r45185y.js → chunk-yw7dm696.js} +9 -11
- package/dist/cli/{chunk-3r45185y.js.map → chunk-yw7dm696.js.map} +3 -3
- package/dist/cli/{chunk-nn13znc2.js → chunk-zxcczpyx.js} +1 -1
- package/dist/cli/chunk-zxh4d9vy.js +122 -0
- package/dist/cli/chunk-zxh4d9vy.js.map +11 -0
- package/dist/cli/index.js +214 -57
- package/dist/cli/index.js.map +8 -7
- package/dist/types/ai/agent-readability.d.ts +52 -0
- package/dist/types/ai/ai-catalog.d.ts +42 -0
- package/dist/types/ai/api/paths.d.ts +17 -0
- package/dist/types/ai/api-catalog.d.ts +18 -0
- package/dist/types/ai/ask-context.d.ts +7 -7
- package/dist/types/ai/ask.d.ts +368 -0
- package/dist/types/ai/changelog-markdown.d.ts +2 -0
- package/dist/types/ai/component-markdown.d.ts +2 -2
- package/dist/types/ai/index.d.ts +24 -0
- package/dist/types/ai/link-headers.d.ts +24 -0
- package/dist/types/ai/llms.d.ts +25 -0
- package/dist/types/ai/markdown.d.ts +45 -0
- package/dist/types/ai/mcp/discovery.d.ts +68 -0
- package/dist/types/ai/mcp/tools.d.ts +16 -0
- package/dist/types/ai/openapi-components.d.ts +43 -0
- package/dist/types/ai/relative-links.d.ts +26 -0
- package/dist/types/ai/serializers.d.ts +15 -0
- package/dist/types/ai/skills.d.ts +42 -0
- package/dist/types/ai/tar.d.ts +25 -0
- package/dist/types/ai/visibility.d.ts +17 -0
- package/dist/types/ai/web-bot-auth.d.ts +16 -0
- package/dist/types/analytics/adobe.d.ts +35 -0
- package/dist/types/analytics/amplitude.d.ts +50 -0
- package/dist/types/analytics/clarity.d.ts +31 -0
- package/dist/types/analytics/clearbit.d.ts +29 -0
- package/dist/types/analytics/cloudflare.d.ts +41 -0
- package/dist/types/analytics/fathom.d.ts +41 -0
- package/dist/types/analytics/google-analytics.d.ts +44 -0
- package/dist/types/analytics/google-tag-manager.d.ts +40 -0
- package/dist/types/analytics/head.d.ts +30 -0
- package/dist/types/analytics/heap.d.ts +40 -0
- package/dist/types/analytics/hightouch.d.ts +44 -0
- package/dist/types/analytics/hotjar.d.ts +33 -0
- package/dist/types/analytics/index.d.ts +61 -0
- package/dist/types/analytics/inline.d.ts +17 -0
- package/dist/types/analytics/logrocket.d.ts +44 -0
- package/dist/types/analytics/mixpanel.d.ts +67 -0
- package/dist/types/analytics/pirsch.d.ts +42 -0
- package/dist/types/analytics/plausible.d.ts +56 -0
- package/dist/types/analytics/posthog.d.ts +45 -0
- package/dist/types/analytics/schema.d.ts +320 -0
- package/dist/types/analytics/script.d.ts +46 -0
- package/dist/types/analytics/segment.d.ts +50 -0
- package/dist/types/analytics/vercel.d.ts +48 -0
- package/dist/types/astro/integration.d.ts +76 -0
- package/dist/types/astro/markdown-negotiation.d.ts +23 -0
- package/dist/types/astro/module-types.d.ts +14 -0
- package/dist/types/astro/pages.d.ts +44 -0
- package/dist/types/cli/env.d.ts +12 -0
- package/dist/types/cli/init/scaffold.d.ts +154 -0
- package/dist/types/components/layout/nav-utils.d.ts +11 -0
- package/dist/types/core/adapter.d.ts +47 -0
- package/dist/types/core/api-name.d.ts +7 -0
- package/dist/types/core/changelog-index.d.ts +13 -0
- package/dist/types/core/config-input.d.ts +197 -526
- package/dist/types/core/config.d.ts +61 -35
- package/dist/types/core/content-assets.d.ts +76 -0
- package/dist/types/core/custom-pages.d.ts +33 -0
- package/dist/types/core/data.d.ts +30 -15
- package/dist/types/core/define-components.d.ts +12 -9
- package/dist/types/core/deployment-env.d.ts +6 -11
- package/dist/types/core/frontmatter.d.ts +10 -0
- package/dist/types/core/graph.d.ts +18 -0
- package/dist/types/core/heading-markers.d.ts +54 -0
- package/dist/types/core/i18n-ui.d.ts +12 -10
- package/dist/types/core/i18n.d.ts +87 -0
- package/dist/types/core/includes.d.ts +138 -0
- package/dist/types/core/last-modified.d.ts +47 -0
- package/dist/types/core/links.d.ts +95 -0
- package/dist/types/core/locale-links.d.ts +60 -0
- package/dist/types/core/manifest.d.ts +17 -0
- package/dist/types/core/meta.d.ts +38 -0
- package/dist/types/core/nav-diagnostics.d.ts +26 -0
- package/dist/types/core/navigation.d.ts +6 -0
- package/dist/types/core/node-require.d.ts +19 -0
- package/dist/types/core/package-json.d.ts +13 -0
- package/dist/types/core/probe.d.ts +42 -0
- package/dist/types/core/project-graph.d.ts +51 -0
- package/dist/types/core/project.d.ts +2 -0
- package/dist/types/core/safe-href.d.ts +2 -0
- package/dist/types/core/safe-links.d.ts +26 -0
- package/dist/types/core/schema.d.ts +2284 -454
- package/dist/types/core/site-url.d.ts +16 -0
- package/dist/types/core/sources/assets.d.ts +36 -0
- package/dist/types/core/sources/cache.d.ts +37 -0
- package/dist/types/core/sources/collection.d.ts +28 -0
- package/dist/types/core/sources/contentful-rich-text.d.ts +31 -0
- package/dist/types/core/sources/contentful.d.ts +40 -0
- package/dist/types/core/sources/filesystem.d.ts +24 -0
- package/dist/types/core/sources/github-releases.d.ts +31 -0
- package/dist/types/core/sources/json.d.ts +30 -0
- package/dist/types/core/sources/lexical.d.ts +19 -0
- package/dist/types/core/sources/lower.d.ts +75 -0
- package/dist/types/core/sources/mdx-remote.d.ts +28 -0
- package/dist/types/core/sources/normalize.d.ts +147 -0
- package/dist/types/core/sources/notion.d.ts +131 -0
- package/dist/types/core/sources/obsidian.d.ts +46 -0
- package/dist/types/core/sources/payload.d.ts +39 -0
- package/dist/types/core/sources/portable-text.d.ts +42 -0
- package/dist/types/core/sources/read.d.ts +23 -0
- package/dist/types/core/sources/remote.d.ts +74 -0
- package/dist/types/core/sources/resolve.d.ts +19 -0
- package/dist/types/core/sources/sanity.d.ts +43 -0
- package/dist/types/core/sources/strapi-blocks.d.ts +12 -0
- package/dist/types/core/sources/strapi.d.ts +33 -0
- package/dist/types/core/sources/types.d.ts +7 -0
- package/dist/types/core/sources/watch.d.ts +45 -0
- package/dist/types/core/text-width.d.ts +11 -0
- package/dist/types/core/types.d.ts +15 -1
- package/dist/types/core/unrecognized-keys.d.ts +7 -0
- package/dist/types/core/versions.d.ts +72 -0
- package/dist/types/core/yaml.d.ts +9 -0
- package/dist/types/deploy/adapter-output.d.ts +45 -0
- package/dist/types/deploy/adapters/cloudflare.d.ts +40 -0
- package/dist/types/deploy/adapters/index.d.ts +29 -0
- package/dist/types/deploy/adapters/netlify.d.ts +37 -0
- package/dist/types/deploy/adapters/node.d.ts +37 -0
- package/dist/types/deploy/adapters/registry.d.ts +133 -0
- package/dist/types/deploy/adapters/types.d.ts +71 -0
- package/dist/types/deploy/adapters/vercel.d.ts +38 -0
- package/dist/types/deploy/artifacts.d.ts +65 -0
- package/dist/types/deploy/cloudflare-negotiation.d.ts +196 -0
- package/dist/types/deploy/function-bundle.d.ts +80 -0
- package/dist/types/deploy/headers.d.ts +50 -0
- package/dist/types/deploy/node-headers.d.ts +42 -0
- package/dist/types/deploy/platforms/cloudflare.d.ts +40 -0
- package/dist/types/deploy/platforms/index.d.ts +18 -0
- package/dist/types/deploy/platforms/netlify.d.ts +13 -0
- package/dist/types/deploy/platforms/node.d.ts +11 -0
- package/dist/types/deploy/platforms/paths.d.ts +27 -0
- package/dist/types/deploy/platforms/static.d.ts +10 -0
- package/dist/types/deploy/platforms/types.d.ts +104 -0
- package/dist/types/deploy/platforms/vercel.d.ts +32 -0
- package/dist/types/deploy/redirects.d.ts +53 -0
- package/dist/types/deploy/robots.d.ts +8 -0
- package/dist/types/deploy/rss.d.ts +31 -0
- package/dist/types/deploy/sitemap.d.ts +21 -0
- package/dist/types/deploy/vercel-negotiation.d.ts +109 -0
- package/dist/types/markdown/code-title.d.ts +32 -0
- package/dist/types/markdown/fence-meta.d.ts +23 -0
- package/dist/types/markdown/themes.d.ts +3 -3
- package/dist/types/openapi/asyncapi.d.ts +129 -0
- package/dist/types/openapi/graphql-build.d.ts +8 -0
- package/dist/types/openapi/graphql.d.ts +122 -0
- package/dist/types/openapi/model.d.ts +158 -0
- package/dist/types/openapi/parse.d.ts +57 -0
- package/dist/types/openapi/references.d.ts +37 -25
- package/dist/types/openapi/render-mdx.d.ts +33 -0
- package/dist/types/openapi/sentence.d.ts +7 -0
- package/dist/types/openapi/signature.d.ts +10 -0
- package/dist/types/openapi/source.d.ts +22 -0
- package/dist/types/openapi/spec-dependency-error.d.ts +10 -0
- package/dist/types/reference/asyncapi.d.ts +166 -0
- package/dist/types/reference/graphql.d.ts +181 -0
- package/dist/types/reference/index.d.ts +32 -0
- package/dist/types/reference/openapi.d.ts +165 -0
- package/dist/types/reference/options.d.ts +157 -0
- package/dist/types/reference/scalar.d.ts +136 -0
- package/dist/types/reference/schema.d.ts +630 -0
- package/dist/types/search/adapters/algolia.d.ts +32 -0
- package/dist/types/search/adapters/flexsearch.d.ts +12 -0
- package/dist/types/search/adapters/index.d.ts +31 -0
- package/dist/types/search/adapters/mixedbread.d.ts +22 -0
- package/dist/types/search/adapters/orama-cloud.d.ts +33 -0
- package/dist/types/search/adapters/orama.d.ts +13 -0
- package/dist/types/search/adapters/pagefind.d.ts +12 -0
- package/dist/types/search/adapters/registry.d.ts +228 -0
- package/dist/types/search/adapters/types.d.ts +34 -0
- package/dist/types/search/adapters/typesense.d.ts +42 -0
- package/dist/types/search/build.d.ts +23 -0
- package/dist/types/search/documents.d.ts +90 -0
- package/dist/types/search/facets.d.ts +3 -0
- package/dist/types/search/orama-index.d.ts +1 -1
- package/dist/types/search/sync/algolia.d.ts +14 -0
- package/dist/types/search/sync/index.d.ts +14 -0
- package/dist/types/search/sync/orama-cloud.d.ts +10 -0
- package/dist/types/search/sync/typesense.d.ts +14 -0
- package/dist/types/sources/contentful.d.ts +68 -0
- package/dist/types/sources/custom.d.ts +20 -0
- package/dist/types/sources/filesystem.d.ts +42 -0
- package/dist/types/sources/github-releases.d.ts +46 -0
- package/dist/types/sources/index.d.ts +48 -0
- package/dist/types/sources/mdx-remote.d.ts +63 -0
- package/dist/types/sources/notion.d.ts +65 -0
- package/dist/types/sources/obsidian.d.ts +34 -0
- package/dist/types/sources/payload.d.ts +68 -0
- package/dist/types/sources/registry.d.ts +1414 -0
- package/dist/types/sources/sanity.d.ts +69 -0
- package/dist/types/sources/shared.d.ts +46 -0
- package/dist/types/sources/strapi.d.ts +66 -0
- package/dist/types/theme/icon-kind.d.ts +11 -0
- package/dist/types/theme/icons.d.ts +20 -0
- package/docs/01-quickstart.mdx +18 -18
- package/docs/02-deployment.mdx +52 -28
- package/docs/03-upgrading.mdx +364 -0
- package/docs/04-migrating.mdx +58 -0
- package/docs/08-faq.mdx +5 -5
- package/docs/advanced/blog.mdx +13 -6
- package/docs/advanced/changelog.mdx +23 -35
- package/docs/advanced/custom-pages.mdx +22 -10
- package/docs/advanced/meta.ts +1 -8
- package/docs/advanced/skills.mdx +8 -0
- package/docs/cli/audit.mdx +646 -0
- package/docs/cli/doctor.mdx +29 -0
- package/docs/{reference/eval.mdx → cli/evals.mdx} +12 -11
- package/docs/cli/index.mdx +105 -0
- package/docs/cli/meta.ts +7 -0
- package/docs/{reference → cli}/translate.mdx +9 -9
- package/docs/cli/validate.mdx +41 -0
- package/docs/cli/version.mdx +40 -0
- package/docs/configuration/analytics.mdx +350 -59
- package/docs/configuration/assistant.mdx +357 -0
- package/docs/configuration/customization.mdx +16 -10
- package/docs/configuration/index.mdx +50 -31
- package/docs/configuration/meta.ts +1 -1
- package/docs/configuration/search.mdx +76 -55
- package/docs/configuration/theming.mdx +24 -15
- package/docs/content/components.mdx +21 -5
- package/docs/{reference → content}/frontmatter.mdx +35 -1
- package/docs/content/i18n.mdx +9 -7
- package/docs/content/includes.mdx +2 -4
- package/docs/content/index.mdx +1 -1
- package/docs/content/islands.mdx +11 -6
- package/docs/content/meta.mdx +1 -1
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +9 -7
- package/docs/content/sources.mdx +145 -50
- package/docs/content/syntax.mdx +16 -12
- package/docs/content/versioning.mdx +3 -3
- package/docs/discoverability/agent-discovery.mdx +12 -12
- package/docs/discoverability/index.mdx +4 -4
- package/docs/discoverability/json-api.mdx +4 -4
- package/docs/discoverability/llms-txt.mdx +6 -6
- package/docs/discoverability/markdown.mdx +4 -4
- package/docs/discoverability/mcp.mdx +11 -11
- package/docs/discoverability/sitemap-and-robots.mdx +3 -3
- package/docs/index.mdx +4 -4
- package/docs/references/asyncapi.mdx +59 -0
- package/docs/{advanced → references}/graphql.mdx +45 -32
- package/docs/{reference → references}/meta.ts +2 -2
- package/docs/references/openapi.mdx +171 -0
- package/docs/references/scalar.mdx +64 -0
- package/package.json +42 -8
- package/skills/blume/SKILL.md +23 -10
- package/skills/blume-migrate/SKILL.md +22 -21
- package/skills/blume-migrate/assets/oxfmt@0.67.0.patch +49 -0
- package/skills/blume-migrate/references/docusaurus.md +5 -4
- package/skills/blume-migrate/references/fumadocs.md +4 -4
- package/skills/blume-migrate/references/mintlify.md +23 -8
- package/skills/blume-migrate/references/monorepo.md +6 -6
- package/skills/blume-migrate/references/starlight.md +4 -4
- package/src/ai/agent-readability.ts +25 -26
- package/src/ai/ai-catalog.ts +50 -32
- package/src/ai/api/handlers.ts +46 -11
- package/src/ai/api/paths.ts +1 -1
- package/src/ai/api-catalog.ts +8 -8
- package/src/ai/ask-context.ts +7 -7
- package/src/ai/ask-data.ts +3 -3
- package/src/ai/ask.ts +637 -100
- package/src/ai/changelog-markdown.ts +91 -0
- package/src/ai/component-markdown.ts +328 -12
- package/src/ai/cors.ts +3 -3
- package/src/ai/index.ts +45 -0
- package/src/ai/link-headers.ts +7 -6
- package/src/ai/llms.ts +20 -15
- package/src/ai/markdown.ts +35 -5
- package/src/ai/mcp/data.ts +9 -5
- package/src/ai/openapi-components.ts +5 -2
- package/src/ai/relative-links.ts +170 -0
- package/src/ai/serializers.ts +3 -3
- package/src/ai/skills.ts +1 -1
- package/src/ai/visibility.ts +1 -1
- package/src/ai/web-bot-auth.ts +2 -2
- package/src/analytics/adobe.ts +46 -0
- package/src/analytics/amplitude.ts +79 -0
- package/src/analytics/clarity.ts +46 -0
- package/src/analytics/clearbit.ts +47 -0
- package/src/analytics/cloudflare.ts +67 -0
- package/src/analytics/fathom.ts +64 -0
- package/src/analytics/google-analytics.ts +84 -0
- package/src/analytics/google-tag-manager.ts +61 -0
- package/src/analytics/head.ts +130 -0
- package/src/analytics/heap.ts +65 -0
- package/src/analytics/hightouch.ts +77 -0
- package/src/analytics/hotjar.ts +47 -0
- package/src/analytics/index.ts +71 -0
- package/src/analytics/inline.ts +21 -0
- package/src/analytics/logrocket.ts +71 -0
- package/src/analytics/mixpanel.ts +92 -0
- package/src/analytics/pirsch.ts +66 -0
- package/src/analytics/plausible.ts +83 -0
- package/src/analytics/posthog.ts +78 -0
- package/src/analytics/schema.ts +60 -0
- package/src/analytics/script.ts +60 -0
- package/src/analytics/segment.ts +85 -0
- package/src/analytics/vercel.ts +50 -0
- package/src/astro/adapter-root.ts +7 -9
- package/src/astro/component-slots.ts +131 -91
- package/src/astro/generate.ts +129 -361
- package/src/astro/integration.ts +2 -6
- package/src/astro/module-types.ts +1 -1
- package/src/astro/pages.ts +13 -101
- package/src/astro/render-deps.ts +379 -0
- package/src/astro/runtime-deps.ts +201 -0
- package/src/astro/templates.ts +575 -562
- package/src/audit/agent.ts +24 -0
- package/src/audit/catalog.ts +2 -2
- package/src/audit/checks/assets.ts +2 -2
- package/src/audit/checks/dns-aid.ts +1 -1
- package/src/audit/checks/duplicates.ts +3 -1
- package/src/audit/checks/i18n.ts +1 -1
- package/src/audit/checks/indexability.ts +7 -7
- package/src/audit/checks/links.ts +2 -2
- package/src/audit/checks/llms.ts +6 -6
- package/src/audit/checks/network.ts +3 -3
- package/src/audit/checks/og-image.ts +2 -2
- package/src/audit/checks/robots.ts +1 -1
- package/src/audit/checks/sitemap.ts +2 -2
- package/src/audit/checks/social.ts +1 -1
- package/src/audit/run.ts +4 -3
- package/src/audit/terms.ts +31 -0
- package/src/audit/url.ts +13 -13
- package/src/blume-modules.d.ts +2 -2
- package/src/cli/command-meta.ts +10 -0
- package/src/cli/commands/audit.ts +40 -21
- package/src/cli/commands/build.ts +71 -316
- package/src/cli/commands/check.ts +1 -0
- package/src/cli/commands/dev.ts +40 -1
- package/src/cli/commands/doctor.ts +92 -14
- package/src/cli/commands/eject.ts +44 -7
- package/src/cli/commands/eval.ts +5 -5
- package/src/cli/commands/init.ts +161 -41
- package/src/cli/commands/migrate.ts +121 -0
- package/src/cli/commands/preview.ts +7 -1
- package/src/cli/commands/translate.ts +5 -5
- package/src/cli/commands/upgrade.ts +141 -0
- package/src/cli/commands/version.ts +57 -44
- package/src/cli/eject-scripts.ts +121 -6
- package/src/cli/index.ts +11 -1
- package/src/cli/init/install.ts +70 -0
- package/src/cli/init/questions.ts +7 -0
- package/src/cli/init/scaffold.ts +459 -75
- package/src/cli/lazy-command.ts +37 -1
- package/src/cli/prepare.ts +40 -6
- package/src/cli/required-secrets.ts +39 -12
- package/src/cli/unknown-flags.ts +266 -0
- package/src/cli/yarn-pnp.ts +52 -0
- package/src/components/content/AccordionItem.astro +7 -1
- package/src/components/content/Card.astro +4 -3
- package/src/components/content/ColorItem.astro +22 -4
- package/src/components/content/GithubInfo.astro +2 -2
- package/src/components/content/Prompt.astro +25 -25
- package/src/components/content/Tabs.astro +3 -1
- package/src/components/content/Tile.astro +2 -3
- package/src/components/content/Tooltip.astro +57 -9
- package/src/components/content/content-strings.ts +34 -0
- package/src/components/content/diff.ts +1 -1
- package/src/components/content/mermaid-element.ts +13 -2
- package/src/components/content/prompt-markdown.ts +292 -0
- package/src/components/content/tooltip-id.ts +41 -0
- package/src/components/copy-feedback.ts +1 -1
- package/src/components/islands/{AskAI.astro → Assistant.astro} +10 -10
- package/src/components/islands/{ask-ai.tsx → assistant.tsx} +23 -23
- package/src/components/islands/hooks.ts +36 -11
- package/src/components/layout/Analytics.astro +21 -79
- package/src/components/layout/Banner.astro +3 -1
- package/src/components/layout/DiscoveryLinks.astro +69 -0
- package/src/components/layout/Header.astro +93 -30
- package/src/components/layout/LanguageSwitcher.astro +4 -1
- package/src/components/layout/Logo.astro +23 -2
- package/src/components/layout/NavSelector.astro +13 -2
- package/src/components/layout/NavTree.astro +12 -3
- package/src/components/layout/NavTreeScript.astro +17 -3
- package/src/components/layout/PageActions.astro +3 -3
- package/src/components/layout/PageFeedback.astro +11 -1
- package/src/components/layout/PageLayout.astro +58 -11
- package/src/components/layout/Pagination.astro +7 -7
- package/src/components/layout/ReferenceLayout.astro +22 -13
- package/src/components/layout/RootLayout.astro +75 -72
- package/src/components/layout/Search.astro +43 -19
- package/src/components/layout/WebMcp.astro +1 -1
- package/src/components/layout/analytics-client.ts +73 -16
- package/src/components/layout/drawer-inert.ts +113 -15
- package/src/components/layout/dropdown-clamp.ts +105 -0
- package/src/components/layout/head-scripts.ts +15 -6
- package/src/components/layout/nav-utils.ts +17 -0
- package/src/components/layout/search/algolia.ts +8 -8
- package/src/components/layout/search/orama-cloud.ts +9 -7
- package/src/components/layout/search/typesense.ts +11 -17
- package/src/components/openapi/MessageComposer.astro +2 -2
- package/src/components/openapi/Playground.astro +2 -2
- package/src/components/openapi/description.ts +2 -2
- package/src/components/openapi/playground-client.ts +79 -10
- package/src/core/changelog-index.ts +24 -0
- package/src/core/code-fences.ts +1 -1
- package/src/core/component-overrides.ts +399 -154
- package/src/core/config-input.ts +201 -566
- package/src/core/config.ts +131 -42
- package/src/core/custom-pages.ts +105 -0
- package/src/core/data.ts +34 -15
- package/src/core/define-components.ts +12 -9
- package/src/core/deployment-env.ts +18 -74
- package/src/core/diagnostics.ts +14 -7
- package/src/core/graph.ts +69 -25
- package/src/core/i18n-ui.ts +41 -11
- package/src/core/i18n.ts +17 -0
- package/src/core/includes.ts +156 -38
- package/src/core/last-modified.ts +6 -11
- package/src/core/links.ts +166 -2
- package/src/core/manifest.ts +10 -3
- package/src/core/navigation.ts +115 -16
- package/src/core/new-tab.ts +35 -0
- package/src/core/node-require.ts +21 -0
- package/src/core/project-graph.ts +42 -26
- package/src/core/project.ts +9 -4
- package/src/core/request-body.ts +61 -0
- package/src/core/safe-href.ts +28 -0
- package/src/core/safe-links.ts +68 -0
- package/src/core/schema.ts +528 -745
- package/src/core/server-features.ts +10 -11
- package/src/core/sources/assets.ts +47 -11
- package/src/core/sources/collection.ts +67 -0
- package/src/core/sources/contentful-rich-text.ts +285 -0
- package/src/core/sources/contentful.ts +173 -0
- package/src/core/sources/github-releases.ts +51 -1
- package/src/core/sources/json.ts +71 -0
- package/src/core/sources/lexical.ts +195 -0
- package/src/core/sources/lower.ts +226 -0
- package/src/core/sources/normalize.ts +52 -2
- package/src/core/sources/notion.ts +39 -28
- package/src/core/sources/payload.ts +135 -0
- package/src/core/sources/portable-text.ts +11 -16
- package/src/core/sources/remote.ts +226 -0
- package/src/core/sources/resolve.ts +104 -166
- package/src/core/sources/sanity.ts +16 -49
- package/src/core/sources/strapi-blocks.ts +124 -0
- package/src/core/sources/strapi.ts +191 -0
- package/src/core/sources/types.ts +12 -1
- package/src/core/types.ts +15 -1
- package/src/core/ui-packs/ar.ts +10 -7
- package/src/core/ui-packs/bg.ts +10 -7
- package/src/core/ui-packs/bn.ts +10 -7
- package/src/core/ui-packs/ca.ts +7 -6
- package/src/core/ui-packs/cs.ts +10 -7
- package/src/core/ui-packs/da.ts +10 -7
- package/src/core/ui-packs/de.ts +10 -7
- package/src/core/ui-packs/el.ts +7 -6
- package/src/core/ui-packs/es.ts +7 -6
- package/src/core/ui-packs/fa.ts +10 -7
- package/src/core/ui-packs/fi.ts +10 -7
- package/src/core/ui-packs/fr.ts +7 -6
- package/src/core/ui-packs/he.ts +10 -7
- package/src/core/ui-packs/hi.ts +10 -7
- package/src/core/ui-packs/hr.ts +10 -7
- package/src/core/ui-packs/hu.ts +10 -7
- package/src/core/ui-packs/id.ts +10 -7
- package/src/core/ui-packs/it.ts +7 -6
- package/src/core/ui-packs/ja.ts +7 -6
- package/src/core/ui-packs/ko.ts +7 -6
- package/src/core/ui-packs/nl.ts +10 -7
- package/src/core/ui-packs/no.ts +10 -7
- package/src/core/ui-packs/pl.ts +10 -7
- package/src/core/ui-packs/pt-br.ts +7 -6
- package/src/core/ui-packs/pt.ts +7 -6
- package/src/core/ui-packs/ro.ts +10 -7
- package/src/core/ui-packs/ru.ts +10 -7
- package/src/core/ui-packs/sk.ts +10 -7
- package/src/core/ui-packs/sr.ts +10 -7
- package/src/core/ui-packs/sv.ts +10 -7
- package/src/core/ui-packs/th.ts +7 -6
- package/src/core/ui-packs/tr.ts +10 -7
- package/src/core/ui-packs/uk.ts +10 -7
- package/src/core/ui-packs/vi.ts +7 -6
- package/src/core/ui-packs/zh-tw.ts +7 -6
- package/src/core/ui-packs/zh.ts +7 -6
- package/src/core/unrecognized-keys.ts +10 -0
- package/src/core/version-cut.ts +116 -8
- package/src/deploy/adapter-output.ts +57 -97
- package/src/deploy/adapters/cloudflare.ts +39 -0
- package/src/deploy/adapters/index.ts +41 -0
- package/src/deploy/adapters/netlify.ts +34 -0
- package/src/deploy/adapters/node.ts +34 -0
- package/src/deploy/adapters/registry.ts +127 -0
- package/src/deploy/adapters/types.ts +92 -0
- package/src/deploy/adapters/vercel.ts +35 -0
- package/src/deploy/artifacts.ts +55 -27
- package/src/deploy/cloudflare-negotiation.ts +179 -100
- package/src/deploy/function-bundle.ts +18 -3
- package/src/deploy/headers.ts +124 -23
- package/src/deploy/node-headers.ts +198 -0
- package/src/deploy/platforms/cloudflare.ts +312 -0
- package/src/deploy/platforms/index.ts +67 -0
- package/src/deploy/platforms/netlify.ts +52 -0
- package/src/deploy/platforms/node.ts +40 -0
- package/src/deploy/platforms/paths.ts +42 -0
- package/src/deploy/platforms/static.ts +29 -0
- package/src/deploy/platforms/types.ts +112 -0
- package/src/deploy/platforms/vercel.ts +193 -0
- package/src/deploy/redirects.ts +30 -18
- package/src/deploy/robots.ts +3 -3
- package/src/deploy/rss.ts +2 -2
- package/src/deploy/sitemap.ts +2 -2
- package/src/deploy/vercel-negotiation.ts +2 -2
- package/src/eval/agents.ts +32 -1
- package/src/eval/findings.ts +19 -11
- package/src/eval/report.ts +10 -2
- package/src/markdown/external-links.ts +65 -0
- package/src/markdown/include.ts +45 -27
- package/src/markdown/index.ts +34 -9
- package/src/markdown/inline-code.ts +12 -6
- package/src/markdown/relative-links.ts +324 -0
- package/src/markdown/themes.ts +3 -3
- package/src/migrate/migrate.ts +149 -0
- package/src/openapi/parse.ts +64 -16
- package/src/openapi/proxy.ts +62 -10
- package/src/openapi/references.ts +147 -147
- package/src/openapi/render-mdx.ts +32 -10
- package/src/openapi/scalar.ts +15 -13
- package/src/openapi/sentence.ts +14 -0
- package/src/openapi/source.ts +37 -21
- package/src/openapi/spec-dependency-error.ts +15 -0
- package/src/reference/asyncapi.ts +83 -0
- package/src/reference/graphql.ts +89 -0
- package/src/reference/index.ts +40 -0
- package/src/reference/openapi.ts +83 -0
- package/src/reference/options.ts +201 -0
- package/src/reference/scalar.ts +136 -0
- package/src/reference/schema.ts +88 -0
- package/src/registry/eject.ts +109 -53
- package/src/search/adapters/algolia.ts +46 -0
- package/src/search/adapters/flexsearch.ts +29 -0
- package/src/search/adapters/index.ts +39 -0
- package/src/search/adapters/mixedbread.ts +39 -0
- package/src/search/adapters/orama-cloud.ts +51 -0
- package/src/search/adapters/orama.ts +24 -0
- package/src/search/adapters/pagefind.ts +27 -0
- package/src/search/adapters/registry.ts +131 -0
- package/src/search/adapters/types.ts +46 -0
- package/src/search/adapters/typesense.ts +57 -0
- package/src/search/build.ts +8 -4
- package/src/search/documents.ts +8 -2
- package/src/search/orama-index.ts +1 -1
- package/src/search/sync/algolia.ts +12 -11
- package/src/search/sync/index.ts +35 -20
- package/src/search/sync/orama-cloud.ts +12 -9
- package/src/search/sync/typesense.ts +15 -13
- package/src/sources/contentful.ts +63 -0
- package/src/sources/custom.ts +38 -0
- package/src/sources/filesystem.ts +51 -0
- package/src/sources/github-releases.ts +52 -0
- package/src/sources/index.ts +60 -0
- package/src/sources/mdx-remote.ts +76 -0
- package/src/sources/notion.ts +63 -0
- package/src/sources/obsidian.ts +38 -0
- package/src/sources/payload.ts +60 -0
- package/src/sources/registry.ts +182 -0
- package/src/sources/sanity.ts +66 -0
- package/src/sources/shared.ts +52 -0
- package/src/sources/strapi.ts +58 -0
- package/src/theme/entry.ts +24 -2
- package/src/translate/report.ts +40 -7
- package/src/upgrade/upgrade.ts +499 -0
- package/dist/cli/chunk-0qymqwzz.js +0 -164
- package/dist/cli/chunk-0qymqwzz.js.map +0 -15
- package/dist/cli/chunk-1jefwnfs.js.map +0 -48
- package/dist/cli/chunk-2mzebbbz.js +0 -69
- package/dist/cli/chunk-2z47ypj8.js.map +0 -11
- package/dist/cli/chunk-4x36ddpw.js.map +0 -11
- package/dist/cli/chunk-5093q3n7.js +0 -68
- package/dist/cli/chunk-5093q3n7.js.map +0 -10
- package/dist/cli/chunk-5qk08vmp.js.map +0 -11
- package/dist/cli/chunk-7s8hm3b6.js +0 -5347
- package/dist/cli/chunk-7s8hm3b6.js.map +0 -58
- package/dist/cli/chunk-8cjtbafj.js.map +0 -13
- package/dist/cli/chunk-97r59kpr.js +0 -381
- package/dist/cli/chunk-97r59kpr.js.map +0 -12
- package/dist/cli/chunk-ahnw3kxw.js.map +0 -15
- package/dist/cli/chunk-b27xqwn9.js.map +0 -10
- package/dist/cli/chunk-bf6bt1xt.js +0 -185
- package/dist/cli/chunk-bf6bt1xt.js.map +0 -11
- package/dist/cli/chunk-cjtn640a.js.map +0 -10
- package/dist/cli/chunk-ct47dqpx.js.map +0 -11
- package/dist/cli/chunk-esphfr8p.js +0 -107
- package/dist/cli/chunk-esphfr8p.js.map +0 -11
- package/dist/cli/chunk-ex56aa81.js +0 -1016
- package/dist/cli/chunk-ex56aa81.js.map +0 -13
- package/dist/cli/chunk-garjf5z9.js +0 -30
- package/dist/cli/chunk-garjf5z9.js.map +0 -10
- package/dist/cli/chunk-js7saxwm.js +0 -1045
- package/dist/cli/chunk-js7saxwm.js.map +0 -22
- package/dist/cli/chunk-k79xp7av.js.map +0 -39
- package/dist/cli/chunk-ps4m1xh4.js.map +0 -15
- package/dist/cli/chunk-q4rae3bg.js +0 -60
- package/dist/cli/chunk-q4rae3bg.js.map +0 -10
- package/dist/cli/chunk-rz9jmfhz.js +0 -108
- package/dist/cli/chunk-rz9jmfhz.js.map +0 -10
- package/dist/cli/chunk-vh9w1sgp.js +0 -73
- package/dist/cli/chunk-vh9w1sgp.js.map +0 -10
- package/dist/cli/chunk-vrfp10qk.js +0 -81
- package/dist/cli/chunk-vrfp10qk.js.map +0 -10
- package/dist/cli/chunk-yg63d42r.js.map +0 -34
- package/docs/advanced/api-reference.mdx +0 -240
- package/docs/configuration/ask-ai.mdx +0 -256
- package/docs/reference/cli.mdx +0 -197
- package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +0 -20
- package/src/components/content/changelog-element.ts +0 -69
- package/src/search/providers.ts +0 -91
- /package/dist/cli/{chunk-vacwm2hv.js.map → chunk-27g6wdth.js.map} +0 -0
- /package/dist/cli/{chunk-dwgcp5sm.js.map → chunk-ce574jw2.js.map} +0 -0
- /package/dist/cli/{chunk-e7f42gdj.js.map → chunk-fxypxtvm.js.map} +0 -0
- /package/dist/cli/{chunk-nn13znc2.js.map → chunk-zxcczpyx.js.map} +0 -0
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/project.ts", "../src/core/config.ts", "../src/core/deployment-env.ts", "../src/core/load-module.ts", "../src/core/schema.ts", "../src/openapi/references.ts", "../src/seo/x-handle.ts", "../src/theme/fonts.ts", "../src/core/github.ts", "../src/core/i18n-ui.ts", "../src/core/ui-packs/ar.ts", "../src/core/ui-packs/bg.ts", "../src/core/ui-packs/bn.ts", "../src/core/ui-packs/ca.ts", "../src/core/ui-packs/cs.ts", "../src/core/ui-packs/da.ts", "../src/core/ui-packs/de.ts", "../src/core/ui-packs/el.ts", "../src/core/ui-packs/es.ts", "../src/core/ui-packs/fa.ts", "../src/core/ui-packs/fi.ts", "../src/core/ui-packs/fr.ts", "../src/core/ui-packs/he.ts", "../src/core/ui-packs/hi.ts", "../src/core/ui-packs/hr.ts", "../src/core/ui-packs/hu.ts", "../src/core/ui-packs/id.ts", "../src/core/ui-packs/it.ts", "../src/core/ui-packs/ja.ts", "../src/core/ui-packs/ko.ts", "../src/core/ui-packs/nl.ts", "../src/core/ui-packs/no.ts", "../src/core/ui-packs/pl.ts", "../src/core/ui-packs/pt-br.ts", "../src/core/ui-packs/pt.ts", "../src/core/ui-packs/ro.ts", "../src/core/ui-packs/ru.ts", "../src/core/ui-packs/sk.ts", "../src/core/ui-packs/sr.ts", "../src/core/ui-packs/sv.ts", "../src/core/ui-packs/th.ts", "../src/core/ui-packs/tr.ts", "../src/core/ui-packs/uk.ts", "../src/core/ui-packs/vi.ts", "../src/core/ui-packs/zh-tw.ts", "../src/core/ui-packs/zh.ts", "../src/core/ui-packs/index.ts", "../src/core/open-in-chat.ts", "../src/core/standard-schema.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { existsSync } from \"node:fs\";\n\nimport { isAbsolute, join, resolve } from \"pathe\";\n\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport type { ProjectContext } from \"./types.ts\";\n\nconst CONFIG_FILENAMES = [\n \"blume.config.ts\",\n \"blume.config.mjs\",\n \"blume.config.js\",\n];\n\nconst THEME_FILENAMES = [\"theme.css\"];\nconst COMPONENTS_FILENAMES = [\"components.tsx\", \"components.ts\"];\n\nconst firstExisting = (root: string, names: string[]): string | null => {\n for (const name of names) {\n const candidate = join(root, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n};\n\n/** Locate the Blume config file for a project root, if any. */\nexport const findConfigFile = (root: string): string | null =>\n firstExisting(root, CONFIG_FILENAMES);\n\n/**\n * Resolve the generated runtime directory for a project. Defaults to\n * `<root>/.blume`; an override (e.g. `.blume-verify` for an isolated build that\n * runs alongside a live `blume dev`) may be relative to the root or absolute.\n */\nexport const resolveRuntimeDir = (\n root: string,\n runtimeDir = \".blume\"\n): string =>\n isAbsolute(runtimeDir) ? runtimeDir : join(resolve(root), runtimeDir);\n\n/**\n * Resolve every path Blume needs from a project root and its resolved config.\n * Paths are absolute and normalized. `options.runtimeDir` relocates the whole\n * generated runtime (and its build output) so a verify build/check can run\n * without touching a live dev server's `.blume/` or the real `dist/`.\n */\nexport const resolveProjectContext = (\n root: string,\n config: ResolvedConfig,\n options?: { runtimeDir?: string }\n): ProjectContext => {\n const absoluteRoot = resolve(root);\n const contentRoot = isAbsolute(config.content.root)\n ? config.content.root\n : join(absoluteRoot, config.content.root);\n\n const pagesPath = join(absoluteRoot, config.content.pages);\n const pagesRoot = existsSync(pagesPath) ? pagesPath : null;\n\n const outDir = resolveRuntimeDir(absoluteRoot, options?.runtimeDir);\n // A relocated runtime keeps its build output self-contained under itself, so a\n // verify build never empties the user's real `<root>/dist`.\n const distDir = options?.runtimeDir\n ? join(outDir, \"dist\")\n : join(absoluteRoot, \"dist\");\n\n return {\n componentsFile: firstExisting(absoluteRoot, COMPONENTS_FILENAMES),\n configFile: findConfigFile(absoluteRoot),\n contentRoot,\n distDir,\n outDir,\n pagesRoot,\n root: absoluteRoot,\n themeFile: firstExisting(absoluteRoot, THEME_FILENAMES),\n };\n};\n",
|
|
6
|
-
"import { existsSync, readFileSync } from \"node:fs\";\n\nimport { z } from \"zod\";\n\nimport type { BlumeConfig } from \"./config-input.ts\";\nimport { applyDeploymentEnv } from \"./deployment-env.ts\";\nimport { BlumeError, diagnosticsFromZod } from \"./diagnostics.ts\";\nimport { createModuleLoader } from \"./load-module.ts\";\nimport { findConfigFile } from \"./project.ts\";\nimport { blumeConfigSchema } from \"./schema.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\n/**\n * Define a Blume site's configuration with full type-checking and editor\n * autocomplete. Place the call in `blume.config.ts` at your project root and\n * `export default` the result:\n *\n * ```ts\n * import { defineConfig } from \"blume\";\n *\n * export default defineConfig({\n * title: \"Acme Docs\",\n * description: \"Everything you need to build with Acme.\",\n * });\n * ```\n *\n * Every field is optional — an empty `defineConfig({})` produces a working\n * site from the Markdown/MDX in your `docs/` directory. Configure only what you\n * want to change; sensible defaults fill in the rest.\n *\n * This is an identity helper: it returns its input unchanged and exists purely\n * for type inference (and as a stable home for future plugin hooks). The object\n * is validated against the Blume schema when the CLI loads it.\n *\n * ## Top-level fields\n *\n * **Site identity**\n * - `title` — site title, shown in the header, `<title>`, and OG images.\n * Defaults to `\"Documentation\"`.\n * - `description` — default meta description, used where a page sets none.\n * - `logo` — brand mark. A string is an image path/URL; the object form splits\n * an `image` mark from wordmark `text` and can override the brand `href`.\n * - `banner` — site-wide announcement bar; a string, or `{ content, link,\n * dismissible }`.\n *\n * **Content & navigation**\n * - `content` — where content lives (`root`, defaults to `docs`) and pluggable\n * `sources` (filesystem, remote MDX, GitHub Releases, Sanity, Notion, or a\n * custom `ContentSource`). Omit `sources` and the top-level `root` becomes one\n * implicit filesystem source.\n * - `navigation` — sidebar, header `tabs`, `selectors` (version/language/product\n * switchers), pinned `featured` links, header `actions` and the one `cta`,\n * and the `repo` link (a toggle, or a URL). Omit `sidebar` to generate it\n * from the content tree.\n * - `redirects` — `{ from, to, status }` rules (301 by default).\n * - `github` — `{ owner, repo, branch, dir, host, api }`, powering \"Edit this\n * page\" links and the header repo link; `host` points them at a GitHub\n * Enterprise instance, `api` overrides the REST base derived from it.\n *\n * **Appearance**\n * - `theme` — `accent` color, `fonts` (curated slugs, any provider family, or\n * local font files), `radius`,\n * `mode` (`system`/`light`/`dark`), and `background`.\n * - `markdown` — `code` (language icons, inline highlighting, line wrap),\n * `headingAnchors`, `imageZoom`, and opt-in KaTeX `math`.\n * - `toc` — on-page table of contents; `true`/`false` or a heading-level range.\n * - `lastModified` — \"Last updated\" stamps from `git` history or frontmatter.\n * - `feedback` — the per-page \"Was this helpful?\" widget (on by default).\n * - `export` — reader-facing PDF/EPUB export actions (off by default).\n *\n * **Reference docs**\n * - `openapi` — native OpenAPI reference: one real page per operation, woven\n * into the sidebar and search. Point `sources`/`spec` at your spec.\n * - `asyncapi` — native AsyncAPI reference with the same treatment; 2.x specs\n * are normalized to 3.x automatically.\n *\n * **Search & AI**\n * - `search` — search backend `provider` (`orama` by default; `pagefind`,\n * `algolia`, `typesense`, `orama-cloud`, `mixedbread`, or `none`) plus its\n * credential block.\n * - `ai` — `ask` (the Ask AI chat endpoint and its provider/model), `llmsTxt`\n * (emit `llms.txt`), `mcp` (expose the docs as an MCP server for connecting\n * agents), and `markdownComponents` (Markdown serializers for custom\n * components in agent-facing output).\n *\n * **SEO, feeds & analytics**\n * - `seo` — `og` images, `sitemap`, `robots`, `rss` feeds, `structuredData`\n * JSON-LD, `agentReadability`, and robots `contentSignals`.\n * - `analytics` — PostHog, Vercel, or arbitrary `scripts` (Plausible, Fathom,\n * GA, …).\n *\n * **Astro**\n * - `integrations` — Astro integrations appended after Blume's built-ins, in\n * declaration order. Install and maintain each integration in the site.\n *\n * **Deployment & i18n**\n * - `deployment` — `site` URL (needed for absolute links, sitemaps, and OG),\n * `adapter` (`vercel`/`node`/`netlify`/`cloudflare`), `output`\n * (`static`/`server`), and `base` path. Auto-detected on Vercel/Netlify/\n * Cloudflare from the platform env.\n * - `i18n` — opt-in multi-locale: `locales`, `defaultLocale`, `parser`\n * (`dir` vs filename `dot` suffix), and per-locale UI overrides.\n *\n * - `examples` — `<Component path>` previews: `source` (default `examples/`;\n * supports a glob for colocated registries) and `css`, a stylesheet injected\n * into the isolated preview frames (e.g. shadcn variables).\n *\n * @example Zero-config — just render the Markdown under `docs/`.\n * ```ts\n * export default defineConfig({});\n * ```\n *\n * @example A production docs site with theming, search, and deployment.\n * ```ts\n * export default defineConfig({\n * title: \"Acme Docs\",\n * description: \"Build faster with Acme.\",\n * logo: { image: \"/logo.svg\", text: \"Acme\" },\n * github: { owner: \"acme\", repo: \"acme\" },\n * theme: { accent: \"violet\", fonts: { body: \"inter\" }, radius: \"lg\" },\n * navigation: {\n * tabs: [\n * { label: \"Guides\", path: \"/guides\" },\n * { label: \"API\", path: \"/api\" },\n * ],\n * },\n * search: { provider: \"orama\" },\n * deployment: { site: \"https://docs.acme.com\", adapter: \"vercel\" },\n * });\n * ```\n *\n * @example An OpenAPI reference with the Ask AI assistant enabled.\n * ```ts\n * export default defineConfig({\n * title: \"Acme API\",\n * openapi: {\n * enabled: true,\n * route: \"/reference\",\n * sources: [{ label: \"Core\", spec: \"./openapi.json\" }],\n * },\n * ai: { ask: { enabled: true }, llmsTxt: true },\n * });\n * ```\n *\n * @param config - The site configuration. All fields are optional.\n * @returns The same config object, typed for inference.\n * @see https://useblume.dev/docs for the full configuration reference.\n */\nexport const defineConfig = (config: BlumeConfig): BlumeConfig => config;\n\n/** Result of loading + validating a project config. */\nexport interface ConfigLoadResult {\n config: ResolvedConfig;\n /** Absolute path of the config file used, or null when defaults were used. */\n configFile: string | null;\n diagnostics: Diagnostic[];\n /**\n * Whether the config file set `theme.fonts` itself. The schema always fills\n * the roles with defaults, so the resolved config can't tell an intentional\n * font choice from the fallback — and only intentional choices should flow\n * into derived surfaces like OG card fonts.\n */\n themeFontsConfigured: boolean;\n}\n\nconst importConfigModule = createModuleLoader();\n\n/**\n * The slice of a user config module probed before schema defaults apply:\n * whether `theme.fonts` was actually set. `looseObject` keeps every other key\n * out of scope; a non-object at either level simply fails the probe.\n */\nconst themeFontsProbeSchema = z.looseObject({\n theme: z.looseObject({ fonts: z.unknown() }).optional(),\n});\n\n/**\n * Load and validate the project config. When no config file exists, schema\n * defaults produce a fully resolved config so the zero-boilerplate path works.\n */\nexport const loadConfig = async (\n root: string,\n /**\n * Supplied only by `blume dev`: the local dev server URL, used as the\n * `deployment.site` fallback when none is configured or detected. Builds\n * never pass it, so production output can't end up pointing at localhost.\n */\n options: { devServerUrl?: string } = {}\n): Promise<ConfigLoadResult> => {\n const configFile = findConfigFile(root);\n\n let raw: unknown;\n if (configFile) {\n try {\n raw = await importConfigModule(configFile);\n } catch (error) {\n // SAFETY: the module loader rejects with the thrown load/parse failure,\n // which Node surfaces as an Error; a non-Error rejection only degrades\n // the interpolated message.\n throw new BlumeError({\n code: \"BLUME_CONFIG_LOAD_FAILED\",\n file: configFile,\n message: `Failed to load config: ${(error as Error).message}`,\n severity: \"error\",\n });\n }\n }\n\n // Read before parsing: schema defaults erase the set-vs-defaulted distinction.\n const probe = themeFontsProbeSchema.safeParse(raw);\n const themeFontsConfigured =\n probe.success && probe.data.theme?.fonts !== undefined;\n\n const parsed = blumeConfigSchema.safeParse(raw ?? {});\n if (!parsed.success) {\n // Read the raw config text (when on disk) so errors carry a line/column.\n const source =\n configFile && existsSync(configFile)\n ? readFileSync(configFile, \"utf-8\")\n : undefined;\n const diagnostics = diagnosticsFromZod(parsed.error, {\n code: \"BLUME_CONFIG_INVALID\",\n file: configFile ?? undefined,\n source,\n });\n const [first, ...rest] = diagnostics;\n const primary = first ?? {\n code: \"BLUME_CONFIG_INVALID\",\n file: configFile ?? undefined,\n message: \"Invalid Blume config.\",\n severity: \"error\" as const,\n };\n // Surface every issue in one failing run — reporting only the first turns\n // a three-mistake config into three fix-rerun-fail loops.\n const moreIssues = rest.map((d) => ` - ${d.message}`).join(\"\\n\");\n const detail =\n rest.length > 0\n ? {\n ...primary,\n message: `${primary.message}\\n${rest.length} more config issue(s):\\n${moreIssues}`,\n }\n : primary;\n throw new BlumeError(detail);\n }\n\n // Resolve the canonical site URL, then SEO defaults that depend on it.\n // Precedence: explicit config > platform env (Vercel/Netlify/Cloudflare, via\n // applyDeploymentEnv) > the local dev server URL (dev only).\n const config = applyDeploymentEnv(parsed.data);\n const site = config.deployment.site ?? options.devServerUrl;\n\n // OG images need an absolute `og:image`, so they default on once a site URL\n // is known and off otherwise. An explicit `seo.og.enabled` always wins.\n const ogEnabled = config.seo.og.enabled ?? Boolean(site);\n\n return {\n config: {\n ...config,\n deployment: { ...config.deployment, site },\n seo: { ...config.seo, og: { ...config.seo.og, enabled: ogEnabled } },\n },\n configFile,\n diagnostics: [],\n themeFontsConfigured,\n };\n};\n",
|
|
7
|
-
"import type { ResolvedConfig } from \"./schema.ts\";\n\n/** The deployment platforms Blume can infer from runtime/CI env vars. */\ntype DeploymentAdapter = NonNullable<ResolvedConfig[\"deployment\"][\"adapter\"]>;\n\ninterface Platform {\n /** Astro adapter to use when building for server output on this platform. */\n adapter: DeploymentAdapter;\n /** True when the env indicates the build is running on this platform. */\n detect: (env: NodeJS.ProcessEnv) => boolean;\n /** Resolve the canonical site URL from the platform's env vars, or null. */\n site: (env: NodeJS.ProcessEnv) => string | null;\n}\n\n/** Prefix a bare host with `https://`; pass values that are already absolute. */\nconst toUrl = (value: string | undefined): string | null => {\n const trimmed = value?.trim();\n if (!trimmed) {\n return null;\n }\n return /^https?:\\/\\//u.test(trimmed) ? trimmed : `https://${trimmed}`;\n};\n\n/**\n * Platforms checked in order; the first whose `detect` matches wins. Site URLs\n * prefer the stable production domain over per-deployment preview URLs so the\n * inferred origin (sitemap, OG, RSS) stays put across deploys.\n */\nconst PLATFORMS: Platform[] = [\n {\n adapter: \"vercel\",\n detect: (env) => Boolean(env.VERCEL),\n // Fall through per *resolved* value, not per variable — a platform can set\n // a var to the empty string, which `??` on the raw values treats as\n // present, dead-ending the chain and silently losing the site URL.\n site: (env) =>\n toUrl(env.VERCEL_PROJECT_PRODUCTION_URL) ?? toUrl(env.VERCEL_URL),\n },\n {\n adapter: \"netlify\",\n detect: (env) => Boolean(env.NETLIFY),\n site: (env) =>\n toUrl(env.URL) ?? toUrl(env.DEPLOY_PRIME_URL) ?? toUrl(env.DEPLOY_URL),\n },\n {\n adapter: \"cloudflare\",\n detect: (env) => Boolean(env.CF_PAGES),\n site: (env) => toUrl(env.CF_PAGES_URL),\n },\n];\n\n/**\n * Adapters whose `deployment.site` arrives from platform env vars at deploy\n * time. Consumers (e.g. the audit) use this to tell \"site is missing\" apart\n * from \"site is missing *here*, but the platform will set it\".\n */\nexport const SITE_INFERRING_ADAPTERS: ReadonlySet<string> = new Set(\n PLATFORMS.map((platform) => platform.adapter)\n);\n\n/**\n * Fill in `deployment.adapter` and `deployment.site` from platform env vars\n * (Vercel, Netlify, Cloudflare Pages) when the user hasn't set them. Explicit\n * config always wins, and the adapter is only inferred for server output (it\n * has no effect on static builds). Mirrors Astro's platform auto-detection so a\n * project deployed to a known host gets a working canonical origin for free.\n */\nexport const applyDeploymentEnv = (\n config: ResolvedConfig,\n env: NodeJS.ProcessEnv = process.env\n): ResolvedConfig => {\n const platform = PLATFORMS.find((candidate) => candidate.detect(env));\n if (!platform) {\n return config;\n }\n\n const { deployment } = config;\n const adapter =\n deployment.adapter ??\n (deployment.output === \"server\" ? platform.adapter : null);\n const site = deployment.site ?? platform.site(env) ?? undefined;\n\n if (adapter === deployment.adapter && site === deployment.site) {\n return config;\n }\n return { ...config, deployment: { ...deployment, adapter, site } };\n};\n",
|
|
8
|
-
"import { createJiti } from \"jiti\";\n\n/**\n * Create a loader for user-authored ESM/TS modules (`blume.config.ts`,\n * `meta.ts`). One jiti instance is reused across every file the returned loader\n * is called with. `moduleCache: false` ensures edits are picked up on each load,\n * which is what makes dev-server regeneration reflect config/meta changes.\n */\n// oxlint-disable-next-line anti-slop/no-unknown-returns -- user-authored modules can export anything; callers validate the loaded value at their own boundary\nexport const createModuleLoader = (): ((file: string) => Promise<unknown>) => {\n const jiti = createJiti(import.meta.url, { moduleCache: false });\n return async (file: string) => {\n const loaded = await jiti.import<{ default?: unknown }>(file);\n return loaded?.default ?? loaded;\n };\n};\n",
|
|
9
|
-
"import type { AstroIntegration } from \"astro\";\nimport { z } from \"zod\";\n\nimport type { ComponentMarkdown } from \"../ai/component-markdown.ts\";\nimport type { CodeTheme } from \"../markdown/themes.ts\";\nimport { normalizeRoute } from \"../openapi/references.ts\";\nimport { normalizeXHandle } from \"../seo/x-handle.ts\";\nimport { FONT_SLUGS, isFontSlug } from \"../theme/fonts.ts\";\nimport { normalizeBasePath } from \"./base-path.ts\";\nimport { PUBLIC_HOST_URL } from \"./github.ts\";\nimport { uiLocaleOverridesSchema } from \"./i18n-ui.ts\";\nimport { openInChatProviders } from \"./open-in-chat.ts\";\nimport type { ContentSource } from \"./sources/types.ts\";\nimport { isStandardSchema } from \"./standard-schema.ts\";\nimport type { StandardSchema } from \"./standard-schema.ts\";\nimport { trimEnd } from \"./trim.ts\";\n\n/**\n * An absolute HTTP(S) URL, for any field that lands verbatim in an `href` —\n * the header repo mark, the GitHub instance origin. Zod's bare `z.url()` also\n * admits `javascript:` and `data:`, which would render as a script link on\n * every page.\n */\nconst httpUrlSchema = z.url({ protocol: /^https?$/u });\n\n/**\n * Public Blume schemas.\n *\n * These are exported from `blume/schema` so migration tools, editor\n * integrations, and the runtime share a single source of validation truth.\n */\n\n// ---------------------------------------------------------------------------\n// Shared primitives\n// ---------------------------------------------------------------------------\n\n// `typeof` checks live in named predicates (the form the oxlint anti-slop\n// config sanctions); generic so each site keeps its own union narrowing.\nconst isString = <Value>(value: Value): value is Value & string =>\n typeof value === \"string\";\n\nconst isBoolean = <Value>(value: Value): value is Value & boolean =>\n typeof value === \"boolean\";\n\n/** Icon inputs in serializable contexts (frontmatter, meta files). */\nconst iconName = z.string().min(1);\n\n/** Default include glob for filesystem-backed content sources. */\nconst DEFAULT_CONTENT_GLOB = \"**/*.{md,mdx}\";\n\nconst hydrationMode = z.enum([\"load\", \"idle\", \"visible\", \"media\", \"only\"]);\nexport type HydrationMode = z.infer<typeof hydrationMode>;\n\n/**\n * A publish date in frontmatter. YAML auto-parses an unquoted `2026-01-01` into\n * a `Date`, so accept either form and normalize to an ISO string.\n */\nconst dateSchema = z\n .union([z.string(), z.date()])\n .transform((value) => (value instanceof Date ? value.toISOString() : value));\n\n/**\n * How a sidebar group renders:\n * - `flat`: a non-collapsible header with its items listed beneath (default).\n * - `group`: a collapsible `<details>` disclosure.\n * - `page`: a single row that drills into a sub-panel showing only this group's\n * items, with a back arrow at the top.\n */\nconst sidebarDisplaySchema = z.enum([\"flat\", \"group\", \"page\"]);\nexport type SidebarDisplay = z.infer<typeof sidebarDisplaySchema>;\n\n// ---------------------------------------------------------------------------\n// Page frontmatter\n// ---------------------------------------------------------------------------\n\nconst sidebarMetaSchema = z.strictObject({\n badge: z.string().optional(),\n /**\n * Render mode for this page's folder group. Only meaningful on a folder's\n * `index` page — it configures the group, not the page. Overrides the\n * folder's `meta.ts` `display` and the global `navigation.sidebar.display`.\n */\n display: sidebarDisplaySchema.optional(),\n hidden: z.boolean().default(false),\n icon: iconName.optional(),\n label: z.string().optional(),\n order: z.number().optional(),\n});\n\n/**\n * An X handle, normalized to a leading `@` — `twitter:site`/`twitter:creator`\n * require it, and a handle configured without one is the obvious typo to absorb\n * rather than reject. The layouts normalize again on the way out, since a page's\n * `seo.x.creator` reaches them straight from unvalidated frontmatter.\n */\nconst xHandleSchema = z.string().transform(normalizeXHandle).optional();\n\nconst seoMetaSchema = z.strictObject({\n canonical: z.url().optional(),\n description: z.string().optional(),\n image: z.string().optional(),\n noindex: z.boolean().default(false),\n title: z.string().optional(),\n /** Per-page X attribution — a guest post credits its own author. */\n x: z.strictObject({ creator: xHandleSchema }).optional(),\n});\n\nconst searchMetaSchema = z.strictObject({\n boost: z.number().optional(),\n exclude: z.boolean().default(false),\n tags: z.array(z.string()).optional(),\n});\n\nconst aiMetaSchema = z.strictObject({\n /** Exclude this page from llms.txt and llms-full.txt. */\n exclude: z.boolean().default(false),\n});\n\nconst changelogMetaSchema = z.strictObject({\n category: z.string().optional(),\n date: dateSchema.optional(),\n version: z.string().optional(),\n});\n\n/**\n * A post author: a bare name/handle, or an object with a name plus optional\n * avatar/URL. The object is passthrough so richer author metadata (social\n * handles, roles) survives untouched — Blume doesn't render authors yet, so\n * this exists to preserve the field (common on blog/changelog pages) rather\n * than have a strict scan reject it.\n */\nconst authorSchema = z.union([\n z.string(),\n z\n .object({\n avatar: z.string().optional(),\n image: z.string().optional(),\n name: z.string(),\n url: z.string().optional(),\n })\n .catchall(z.unknown()),\n]);\n\n// Shorthand defaults use `.prefault()`, not `.default()`, wherever the value\n// must still be parsed — Zod 4's `.default()` returns the value as-is, so a\n// `.default({})` on an object with inner defaults (or a transform) would\n// resolve to a bare `{}` instead of the fully-defaulted shape.\n\n/** Frontmatter accepted on any content page. */\nconst pageMetaBaseSchema = z.strictObject({\n ai: aiMetaSchema.prefault({}),\n /** Post author(s) for blog/changelog content; preserved, not yet rendered. */\n authors: z.union([authorSchema, z.array(authorSchema)]).optional(),\n changelog: changelogMetaSchema.optional(),\n /** Publish date for feed-backed content like blog/changelog. */\n date: dateSchema.optional(),\n deprecated: z.boolean().default(false),\n description: z.string().optional(),\n draft: z.boolean().default(false),\n hidden: z.boolean().default(false),\n icon: iconName.optional(),\n /** Overrides the git-derived last-modified date when `lastModified` is on. */\n lastModified: dateSchema.optional(),\n noindex: z.boolean().default(false),\n search: searchMetaSchema.prefault({}),\n seo: seoMetaSchema.prefault({}),\n sidebar: sidebarMetaSchema.prefault({}),\n slug: z.string().optional(),\n title: z.string().optional(),\n // No default: an absent `type` must fall through to `content.defaultType`.\n type: z.string().optional(),\n});\n\nexport const pageMetaSchema = pageMetaBaseSchema;\n\nexport type PageMeta = z.infer<typeof pageMetaBaseSchema>;\nexport type PageMetaInput = z.input<typeof pageMetaBaseSchema>;\n\n/** The fully-defaulted front matter of a page that declares nothing. */\nconst EMPTY_PAGE_META: PageMeta = pageMetaBaseSchema.parse({});\n\n/**\n * The page schema as the generated content collections declare it, so\n * `entry.data` is typed and normalized (dates as ISO strings, X handles with\n * their `@`) the same way the scan's `PageMeta` is. Two deliberate loosenings\n * over {@link pageMetaSchema}: custom keys (`frontmatter.extend`, per-type\n * maps) pass through instead of failing the strict parse, and a page the\n * strict parse rejects resolves to the empty defaults instead of throwing.\n * The scan has already dropped such a page with a `BLUME_FRONTMATTER_INVALID`\n * diagnostic — Blume continues without it unless `--strict` — so the\n * collection must not turn that dropped page into a failed content sync.\n */\nexport const pageCollectionSchema = pageMetaBaseSchema\n .loose()\n // oxlint-disable-next-line promise/prefer-await-to-then -- zod's catch, not a promise\n .catch(() => EMPTY_PAGE_META);\n\n/** Built-in page frontmatter keys; custom keys must never redeclare one. */\nconst BUILT_IN_PAGE_META_KEYS = new Set<string>(\n pageMetaBaseSchema.keyof().options\n);\n\n/**\n * A map of custom frontmatter keys to user-supplied validation schemas,\n * consumed through the Standard Schema `~standard` contract — never Zod's own\n * API — so the consumer's zod (any version), Valibot, or ArkType all work\n * (see `standard-schema.ts`). Shared by the site-wide `frontmatter.extend`\n * and the per-type `content.types.<type>.frontmatter` maps. Built-in\n * frontmatter fields can't be redeclared — they're load-bearing (routing,\n * sidebar, SEO), and shadowing one would silently change its semantics.\n */\nconst customKeySchemaRecord = (where: string) =>\n z\n .record(\n z.string(),\n z.custom<StandardSchema>(isStandardSchema, {\n message:\n \"Expected a Standard Schema (e.g. a Zod schema — any Zod version works).\",\n })\n )\n .default({})\n .superRefine((value, ctx) => {\n for (const key of Object.keys(value)) {\n if (BUILT_IN_PAGE_META_KEYS.has(key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `\"${key}\" is a built-in frontmatter field and cannot be redeclared via ${where}.`,\n path: [key],\n });\n }\n }\n });\n\n// ---------------------------------------------------------------------------\n// Folder meta (meta.ts)\n// ---------------------------------------------------------------------------\n\nexport const folderMetaSchema = z.strictObject({\n collapsed: z.boolean().optional(),\n /** Render mode for this group; overrides `navigation.sidebar.display`. */\n display: sidebarDisplaySchema.optional(),\n icon: iconName.optional(),\n order: z.number().optional(),\n /** Explicit child ordering by slug segment (without numeric prefix). */\n pages: z.array(z.string()).optional(),\n title: z.string().optional(),\n});\n\nexport type FolderMeta = z.infer<typeof folderMetaSchema>;\n\n// ---------------------------------------------------------------------------\n// Project config (blume.config.ts)\n// ---------------------------------------------------------------------------\n\n/** The logo mark: a single image path/URL, or light/dark variants with alt text. */\nconst logoImageSchema = z.union([\n z.string(),\n z.strictObject({\n alt: z.string().optional(),\n dark: z.string().optional(),\n light: z.string().optional(),\n }),\n]);\n\n/**\n * Site logo. A bare string is the image shorthand. The object form splits the\n * brand into an optional `image` mark and optional wordmark `text` so a site can\n * show an image-only logo (a mark with the wordmark baked in), a text-only logo,\n * or both. Omit `text` to fall back to the site title; set `text: \"\"` to render\n * the mark alone. `href` overrides the brand link (defaults to `/`).\n */\nconst logoConfigSchema = z.union([\n z.string(),\n z.strictObject({\n href: z.string().optional(),\n image: logoImageSchema.optional(),\n text: z.string().optional(),\n }),\n]);\n\n/** Site-wide announcement banner: a string, or text with an optional link. */\nconst bannerConfigSchema = z.union([\n z.string(),\n z.strictObject({\n content: z.string(),\n /** Show a dismiss button; the choice is remembered per visitor. */\n dismissible: z.boolean().default(false),\n /** Stable key for remembering dismissal; defaults to the content. */\n id: z.string().optional(),\n link: z.strictObject({ href: z.string(), text: z.string() }).optional(),\n }),\n]);\n\n/** A local filesystem content source. */\nconst filesystemSourceSchema = z.strictObject({\n exclude: z.array(z.string()).default([\"**/_*\", \"**/.*\"]),\n include: z.array(z.string()).default([DEFAULT_CONTENT_GLOB]),\n /** Namespaces the source's routes under `/<prefix>/`. */\n prefix: z.string().optional(),\n root: z.string().default(\"docs\"),\n type: z.literal(\"filesystem\"),\n});\n\n/**\n * Remote Markdown/MDX fetched over HTTP. Enumerate files either explicitly\n * (`files` against a raw `url` base) or from a GitHub repo subtree (`github`).\n * The token, when needed, comes from `GITHUB_TOKEN` — never inlined here.\n */\nconst mdxRemoteSourceSchema = z.strictObject({\n /** Explicit list of source-relative file paths to fetch from `url`. */\n files: z.array(z.string()).optional(),\n /** Enumerate a GitHub repo subtree via the git-trees API. */\n github: z\n .strictObject({\n owner: z.string(),\n path: z.string().default(\"\"),\n ref: z.string().default(\"main\"),\n repo: z.string(),\n })\n .optional(),\n /** Glob patterns applied to enumerated refs. */\n include: z.array(z.string()).default([DEFAULT_CONTENT_GLOB]),\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval: z.number().positive().optional(),\n /** Namespaces the source's routes under `/<prefix>/`. */\n prefix: z.string().optional(),\n type: z.literal(\"mdx-remote\"),\n /** Raw base URL, e.g. `https://raw.githubusercontent.com/acme/sdk/main/docs`. */\n url: z.string().optional(),\n});\n\n/** A Sanity dataset queried with GROQ; Portable Text bodies become Markdown. */\nconst sanitySourceSchema = z.object({\n /** Sanity API version (a date); default `2024-01-01`. */\n apiVersion: z.string().optional(),\n dataset: z.string(),\n /** Field paths mapping a document onto Blume meta + body. */\n fields: z\n .strictObject({\n body: z.string().optional(),\n description: z.string().optional(),\n lastModified: z.string().optional(),\n slug: z.string().optional(),\n title: z.string().optional(),\n })\n .optional(),\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval: z.number().positive().optional(),\n prefix: z.string().optional(),\n projectId: z.string(),\n /** GROQ query selecting the documents to import. */\n query: z.string(),\n type: z.literal(\"sanity\"),\n});\n\n/** A Notion database; pages become entries, blocks become MDX. */\nconst notionSourceSchema = z.object({\n /** Max concurrent Notion API requests; default 3 (Notion's per-integration pace). */\n concurrency: z.number().positive().optional(),\n database: z.string(),\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval: z.number().positive().optional(),\n prefix: z.string().optional(),\n /** Notion property names mapped onto Blume meta. */\n properties: z\n .strictObject({\n description: z.string().optional(),\n order: z.string().optional(),\n slug: z.string().optional(),\n status: z.string().optional(),\n title: z.string().optional(),\n })\n .optional(),\n /** Status value treated as published; others map to `draft`. Default `Published`. */\n publishedValue: z.string().optional(),\n type: z.literal(\"notion\"),\n});\n\n/**\n * An Obsidian vault, read in place. Wikilinks become route links and\n * `%%comments%%` are stripped at load time, so the vault stays the source of\n * truth — no export step and no generated notes in the repo.\n */\nconst obsidianSourceSchema = z.strictObject({\n /** Vault folder names to skip at any depth, in addition to dot-folders. */\n exclude: z.array(z.string()).optional(),\n /** Namespaces the source's routes under `/<prefix>/`; e.g. `vault`. */\n prefix: z.string().optional(),\n type: z.literal(\"obsidian\"),\n /** Vault directory, absolute or relative to the project root. */\n vault: z.string().min(1),\n});\n\n/**\n * A repo's GitHub Releases, materialized as `type: changelog` entries — release\n * notes become the changelog with no files to maintain. A private repo reads a\n * token from `GITHUB_TOKEN`; it is never inlined here.\n */\nconst githubReleasesSourceSchema = z.strictObject({\n /** Include draft releases (needs a token with repo write access). */\n drafts: z.boolean().optional(),\n /** Cap the number of releases materialized, newest-first. Default 100. */\n limit: z.number().positive().optional(),\n /** Repository owner (user or org). */\n owner: z.string(),\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval: z.number().positive().optional(),\n /** Namespaces the source's routes under `/<prefix>/`; e.g. `changelog`. */\n prefix: z.string().optional(),\n /** Include prereleases. */\n prereleases: z.boolean().optional(),\n /** Repository name. */\n repo: z.string(),\n type: z.literal(\"github-releases\"),\n});\n\n/**\n * A user-provided `ContentSource` instance, passed straight through from\n * `blume.config.ts`. This is the extension point that lets adapters with custom\n * serializers (or any backend) ship without their SDKs touching core.\n */\nconst customSourceSchema = z.object({\n source: z.custom<ContentSource>(\n (val): val is ContentSource =>\n typeof val === \"object\" &&\n val !== null &&\n \"load\" in val &&\n typeof val.load === \"function\" &&\n \"name\" in val &&\n typeof val.name === \"string\",\n { message: \"custom source must be a ContentSource (with name + load)\" }\n ),\n type: z.literal(\"custom\"),\n});\n\n/** A single configured content source. */\nconst contentSourceSchema = z.discriminatedUnion(\"type\", [\n filesystemSourceSchema,\n mdxRemoteSourceSchema,\n githubReleasesSourceSchema,\n sanitySourceSchema,\n notionSourceSchema,\n obsidianSourceSchema,\n customSourceSchema,\n]);\n\n/** A resolved content-source config entry (post-defaults). */\nexport type ContentSourceConfig = z.infer<typeof contentSourceSchema>;\n\n/**\n * Per-type content definition. An object (rather than a bare frontmatter map)\n * so type-scoped concerns added later — search facets, templates — have a\n * home without a breaking config change.\n */\nconst contentTypeConfigSchema = z.strictObject({\n /**\n * Custom frontmatter keys whose values become filterable facets for pages\n * of this type — surfaced in search documents and filterable through the\n * MCP tools' `filters` input. Each name must be a custom key declared for\n * the type (in its `frontmatter` map or the site-wide `frontmatter.extend`),\n * checked at the config level where both maps are visible. Only string\n * (or number/boolean, stringified) values ever facet.\n */\n facets: z.array(z.string()).default([]),\n /**\n * Custom frontmatter keys for pages of this type, layered on top of the\n * site-wide `frontmatter.extend`. Every declared key is validated on every\n * page of the type — absent ones included — so a required schema enforces\n * the key type-wide while leaving other types untouched.\n */\n frontmatter: customKeySchemaRecord(\"content.types\"),\n});\n\nconst contentConfigSchema = z.strictObject({\n defaultType: z.string().default(\"doc\"),\n exclude: z.array(z.string()).default([\"**/_*\", \"**/.*\"]),\n include: z.array(z.string()).default([DEFAULT_CONTENT_GLOB]),\n pages: z.string().default(\"pages\"),\n root: z.string().default(\"docs\"),\n /**\n * Pluggable content sources. When omitted, the top-level\n * `root`/`include`/`exclude` desugar to one implicit filesystem source, so\n * existing projects are unchanged.\n */\n sources: z.array(contentSourceSchema).optional(),\n /**\n * Per-type content definitions, keyed by the frontmatter `type` they apply\n * to (including `defaultType`, for pages that set none).\n */\n types: z.record(z.string(), contentTypeConfigSchema).default({}),\n});\n\n/**\n * A header label that may localize: a plain string, or a map of locale code to\n * label (`{ en: \"Docs\", ja: \"ドキュメント\" }`). Resolved when each locale's\n * navigation is built — the active locale's entry wins, then the default\n * locale's, then the map's first entry — so a single-locale site can keep\n * plain strings and an i18n site can translate its header without forking the\n * config.\n */\nconst localizableLabelSchema = z.union([\n z.string(),\n z\n .record(z.string(), z.string())\n .refine((value) => Object.keys(value).length > 0, {\n message: \"Provide at least one locale's label.\",\n }),\n]);\n\nexport type LocalizableLabel = z.infer<typeof localizableLabelSchema>;\n\nconst navTabSchema = z.strictObject({\n // Rejected empty rather than accepted: an empty `href` would render a link to\n // nowhere, and it can't mean \"resolve it for me\" either — that's what\n // omitting the field does.\n href: z.string().min(1).optional(),\n icon: iconName.optional(),\n items: z\n .array(\n z.strictObject({\n description: z.string().optional(),\n icon: iconName.optional(),\n label: localizableLabelSchema,\n path: z.string(),\n tag: z.string().optional(),\n })\n )\n .optional(),\n label: localizableLabelSchema,\n path: z.string(),\n});\n\nconst navSelectorItemSchema = z.strictObject({\n description: z.string().optional(),\n icon: iconName.optional(),\n label: z.string(),\n path: z.string(),\n tag: z.string().optional(),\n});\n\nconst navSelectorSchema = z.strictObject({\n items: z.array(navSelectorItemSchema).default([]),\n kind: z.enum([\"dropdown\", \"language\", \"product\", \"version\"]),\n label: z.string(),\n});\n\nconst directoryModeSchema = z.enum([\"accordion\", \"card\", \"none\"]);\nexport type DirectoryMode = z.infer<typeof directoryModeSchema>;\n\n/** A node in an explicit sidebar config: a page reference or a group/link. */\nexport type SidebarItemConfig =\n | string\n | {\n label: string;\n badge?: string;\n directory?: DirectoryMode;\n display?: SidebarDisplay;\n href?: string;\n icon?: string;\n collapsed?: boolean;\n items?: SidebarItemConfig[];\n root?: string;\n };\n\n// Zod 4's `ZodType` defaults its Input parameter to `unknown` (it no longer\n// mirrors Output), so the recursive annotation names both — otherwise\n// `z.input` of anything containing this schema degrades to `unknown`.\nconst sidebarItemSchema: z.ZodType<SidebarItemConfig, SidebarItemConfig> =\n z.lazy(() =>\n z.union([\n z.string(),\n z.strictObject({\n badge: z.string().optional(),\n collapsed: z.boolean().optional(),\n directory: directoryModeSchema.optional(),\n display: sidebarDisplaySchema.optional(),\n href: z.string().optional(),\n icon: iconName.optional(),\n items: z.array(sidebarItemSchema).optional(),\n label: z.string(),\n root: z.string().optional(),\n }),\n ])\n );\n\nconst fontFallbackSchema = z.enum([\"sans\", \"serif\", \"mono\"]);\n\n/** Any family from a zero-config Astro provider, by name. */\nconst remoteFontSchema = z.strictObject({\n fallback: fontFallbackSchema.optional(),\n name: z.string().min(1),\n provider: z\n .enum([\"google\", \"fontsource\", \"bunny\", \"fontshare\"])\n .default(\"google\"),\n /** Character subsets to load; defaults to `latin` plus the locales' scripts. */\n subsets: z.array(z.string().min(1)).nonempty().optional(),\n weights: z\n .array(\n z.union([z.number().int().positive(), z.string().regex(/^\\d+\\.\\.\\d+$/u)])\n )\n .nonempty()\n .optional(),\n});\n\n/** One local `@font-face`: a file plus optional weight/style (else inferred). */\nconst localFontVariantSchema = z.strictObject({\n src: z.string().min(1),\n style: z.enum([\"normal\", \"italic\", \"oblique\"]).optional(),\n weight: z\n .union([\n z.number().int().positive(),\n z.string().regex(/^\\d+(?:\\.\\.\\d+)?$/u),\n ])\n .optional(),\n});\n\n/** A self-hosted family loaded from font files in the project. */\nconst localFontSchema = z.strictObject({\n fallback: fontFallbackSchema.optional(),\n name: z.string().min(1),\n variants: z.array(localFontVariantSchema).nonempty(),\n});\n\n/**\n * A role's font: a curated Google Font slug (see `theme/fonts.ts`), a\n * remote-provider family, or local font files. Bare strings must be curated\n * slugs so a typo fails with the supported list instead of a provider error.\n */\nconst fontValueSchema = z\n .union([z.string(), remoteFontSchema, localFontSchema])\n .superRefine((value, ctx) => {\n if (isString(value) && !isFontSlug(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Unknown font \"${value}\". Supported fonts: ${FONT_SLUGS.join(\", \")}. For any other family, use the object form: { name: \"...\" } (remote provider) or { name: \"...\", variants: [...] } (local files).`,\n });\n }\n });\n\n/**\n * An optional per-mode theme value: a string applies to both color modes; a\n * `{ light, dark }` object sets each mode individually (either may be\n * omitted to override a single mode).\n */\nconst perModeValueSchema = z\n .union([\n z.string(),\n z.strictObject({\n dark: z.string().optional(),\n light: z.string().optional(),\n }),\n ])\n .optional()\n .transform((value) =>\n isString(value) ? { dark: value, light: value } : value\n );\n\nconst themeConfigSchema = z.strictObject({\n accent: z\n .union([\n z.string(),\n z.strictObject({ dark: z.string(), light: z.string() }),\n ])\n .default(\"blue\")\n .transform((value) =>\n isString(value) ? { dark: value, light: value } : value\n ),\n action: z.string().optional(),\n background: perModeValueSchema,\n backgroundImage: perModeValueSchema,\n fonts: z\n .strictObject({\n body: fontValueSchema.default(\"inter\"),\n display: fontValueSchema.default(\"inter\"),\n mono: fontValueSchema.default(\"ibm-plex-mono\"),\n })\n .prefault({}),\n layout: z.enum([\"sidebar\"]).default(\"sidebar\"),\n mode: z.enum([\"system\", \"light\", \"dark\"]).default(\"system\"),\n radius: z.enum([\"none\", \"sm\", \"md\", \"lg\"]).default(\"md\"),\n});\n\n/** Public credentials for the Algolia search backend (sync key is an env var). */\nconst algoliaSearchSchema = z.strictObject({\n appId: z.string(),\n indexName: z.string(),\n searchApiKey: z.string(),\n});\n\n/** Public credentials for the Orama Cloud search backend. */\nconst oramaCloudSearchSchema = z.strictObject({\n apiKey: z.string(),\n endpoint: z.string(),\n /** Index id used by the build-time sync (with `ORAMA_PRIVATE_API_KEY`). */\n indexId: z.string().optional(),\n});\n\n/** Public credentials for a (self-hosted or cloud) Typesense backend. */\nconst typesenseSearchSchema = z.strictObject({\n collection: z.string(),\n host: z.string(),\n port: z.number().int().positive().optional(),\n protocol: z.enum([\"http\", \"https\"]).optional(),\n searchApiKey: z.string(),\n});\n\n/** Mixedbread semantic search: the store the server endpoint queries. */\nconst mixedbreadSearchSchema = z.strictObject({\n storeId: z.string(),\n});\n\nexport const searchProviders = [\n \"orama\",\n \"pagefind\",\n \"flexsearch\",\n \"algolia\",\n \"orama-cloud\",\n \"typesense\",\n \"mixedbread\",\n \"none\",\n] as const;\n\n/** Providers that need a config block, mapped to its `search.*` key. */\nconst PROVIDER_CONFIG_KEY = {\n algolia: \"algolia\",\n mixedbread: \"mixedbread\",\n \"orama-cloud\": \"oramaCloud\",\n typesense: \"typesense\",\n} as const;\n\n/** Curated link for the search dialog empty state (internal route or external URL). */\nconst searchPopularLinkSchema = z.strictObject({\n href: z.string(),\n icon: iconName.optional(),\n label: z.string(),\n});\n\nconst searchConfigSchema = z\n .strictObject({\n algolia: algoliaSearchSchema.optional(),\n indexing: z\n .strictObject({\n includeCodeBlocks: z.boolean().default(false),\n includeHiddenPages: z.boolean().default(false),\n })\n .prefault({}),\n mixedbread: mixedbreadSearchSchema.optional(),\n oramaCloud: oramaCloudSearchSchema.optional(),\n /** Curated links for the Cmd+K empty state; defaults to the first sidebar pages. */\n popular: z.array(searchPopularLinkSchema).default([]),\n provider: z.enum(searchProviders).default(\"orama\"),\n typesense: typesenseSearchSchema.optional(),\n })\n .superRefine((value, ctx) => {\n // Hosted providers can't work without their credentials; flag a missing\n // block with a path so the diagnostic points at `search.<provider>`.\n // SAFETY: providers without a config block (orama, pagefind, …) miss the\n // map and read undefined, which the `field &&` guard below absorbs.\n const field =\n PROVIDER_CONFIG_KEY[value.provider as keyof typeof PROVIDER_CONFIG_KEY];\n if (field && !value[field]) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `search.${field} is required when provider is \"${value.provider}\".`,\n path: [field],\n });\n }\n });\n\n/**\n * The `ai.ask.reasoning` levels: the AI SDK's top-level `reasoning` values\n * minus `provider-default`, which is what omitting the field means.\n */\nexport const askReasoningLevels = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n] as const;\n\n/** Ask AI backends. `gateway` (default) routes through the Vercel AI Gateway. */\nexport const askAiProviders = [\n \"gateway\",\n \"openrouter\",\n \"llmgateway\",\n \"inkeep\",\n \"openai-compatible\",\n] as const;\n\n/**\n * JWK parameters that carry private or secret key material (RFC 7518): the\n * private exponent/scalar, the RSA CRT parameters, and the symmetric key.\n * A directory is public by definition, so any of these in a configured key is\n * a leaked credential, not a config style choice — reject loudly.\n */\nconst PRIVATE_JWK_PARAMS = [\"d\", \"p\", \"q\", \"dp\", \"dq\", \"qi\", \"oth\", \"k\"];\n\n/**\n * A public JWK for the Web Bot Auth signature directory. Shape is left to the\n * signing setup (Ed25519 `OKP` keys in current deployments) — validation only\n * requires the mandatory `kty` and refuses private key material.\n */\nconst publicJwkSchema = z\n .record(z.string(), z.unknown())\n .superRefine((jwk, ctx) => {\n if (!isString(jwk.kty) || jwk.kty.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'A JWK must declare its key type (\"kty\").',\n });\n }\n const leaked = PRIVATE_JWK_PARAMS.filter((param) => param in jwk);\n if (leaked.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The JWK contains private key material (\"${leaked.join('\", \"')}\") — the signatures directory is public, so list only public keys and keep the private key where the signing agent runs.`,\n });\n }\n });\n\nconst mcpConfigSchema = z.strictObject({\n enabled: z.boolean().default(false),\n /** Optional system hint passed to connecting agents. */\n instructions: z.string().optional(),\n /** Server name shown to clients; defaults to the site title. */\n name: z.string().optional(),\n /**\n * Normalized like `openapi.route`: a slash-less value would otherwise be\n * string-concatenated onto the site origin (`https://acme.comdocs-mcp`).\n */\n route: z.string().default(\"/mcp\").transform(normalizeRoute),\n});\n\nconst askEndpointSchema = z\n .string()\n .trim()\n .min(1)\n .refine(\n (value) => {\n if (value.startsWith(\"/\") && !value.startsWith(\"//\")) {\n return true;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n },\n {\n message:\n \"ai.ask.endpoint must be an HTTP(S) URL or a root-relative path.\",\n }\n );\n\n/** The object form of `ai.llmsTxt`; a bare boolean normalizes onto it. */\nconst llmsTxtObjectSchema = z.strictObject({\n /**\n * Markdown inserted after the title and summary, before the page sections:\n * the llms.txt spec's \"details\" slot. The place to tell agents when to use\n * the product and how to call it; trimmed, and dropped when blank.\n */\n details: z.string().trim().min(1).optional(),\n enabled: z.boolean().default(true),\n openapi: z.boolean().default(true),\n});\n\ntype LlmsTxtResolved = z.output<typeof llmsTxtObjectSchema>;\n\n/** The object form of `ai.catalog`; a bare boolean normalizes onto it. */\nconst aiCatalogObjectSchema = z.strictObject({\n enabled: z.boolean().default(true),\n /**\n * Representative queries per catalog entry, keyed by the entry's\n * `<namespace>:<name>` (the identifier minus its `urn:air:<host>:` prefix,\n * e.g. `mcp:docs`, `skill:blume`, `api:docs`). Replaces the generated\n * defaults for that entry; 2–5 short natural-language questions the\n * resource can answer, which registries embed for semantic search.\n */\n queries: z\n .record(z.string().min(1), z.array(z.string().trim().min(1)).min(1))\n .default({}),\n});\n\ntype AiCatalogResolved = z.output<typeof aiCatalogObjectSchema>;\n\nconst aiConfigSchema = z.strictObject({\n /**\n * The JSON docs API: the page index, per-page JSON, and navigation under\n * `/api/docs/` (prerendered, so a static site serves them from files), the\n * live search endpoint on server output, and the OpenAPI description of\n * the whole machine-readable surface at `/openapi.json`. On by default.\n */\n api: z.boolean().default(true),\n ask: z\n .strictObject({\n // Name of the env var holding the provider's API key; each provider has\n // a sensible default, so this only needs setting to override it.\n apiKeyEnv: z.string().optional(),\n // Base URL of the backend. Required for `openai-compatible` only when no\n // external endpoint is supplied; for named providers it overrides the preset.\n baseUrl: z.url().optional(),\n // Origins allowed to call the generated `/api/ask` from another site (a\n // marketing page that embeds an ask box, say), or `\"*\"` for every\n // origin. Each URL is reduced to its origin so a trailing slash or path\n // can't defeat the exact match the route performs. Read by the\n // generated route only; an external `endpoint` owns its own CORS.\n cors: z\n .array(\n z.union([\n z.literal(\"*\"),\n z\n .url({ protocol: /^https?$/u })\n .transform((value) => new URL(value).origin),\n ])\n )\n .optional(),\n enabled: z.boolean().default(false),\n // Optional external endpoint for projects that keep their docs static\n // and host Ask AI in an existing backend. Absolute URLs and root-relative\n // paths are both valid; the built-in request/stream contract is unchanged.\n endpoint: askEndpointSchema.optional(),\n // Static request headers the generated endpoint sends the provider on\n // every call (a caller-identifying header for a shared backend, say).\n // Values are inlined into the generated route as literals, so the API\n // key stays in `apiKeyEnv`; these are for non-secret metadata.\n headers: z.record(z.string(), z.string()).optional(),\n // Extra system-prompt text (identity, language, tone) appended to the\n // built-in instructions, so the grounding contract — answer from the\n // retrieved excerpts, cite pages as Markdown links — stays intact.\n instructions: z.string().trim().min(1).optional(),\n model: z.string().default(\"openai/gpt-5.5\"),\n provider: z.enum(askAiProviders).default(\"gateway\"),\n // How much the model reasons before answering, sent as the backend's\n // own reasoning-effort control (see `askEndpointTemplate`). Omitted\n // keeps the provider's default; `none` is the fastest and cheapest for\n // grounded docs Q&A, where the excerpts carry the answer. Not for\n // Inkeep, which has no such control (refined below).\n reasoning: z.enum(askReasoningLevels).optional(),\n // How much documentation each question carries. Injected characters are\n // the dominant term in time-to-first-token on a self-hosted backend, so\n // these trade recall for latency. No zod defaults here: only what the\n // user set reaches the generated (and ejected) endpoint, so omitted\n // fields keep tracking the installed package's built-in defaults in\n // `ai/ask-context.ts` instead of pinning today's numbers as literals.\n retrieval: z\n .strictObject({\n contextBudget: z.number().int().positive().optional(),\n excerptChars: z.number().int().positive().optional(),\n maxResults: z.number().int().positive().optional(),\n })\n .optional(),\n // Empty-state prompts shown before the first question. Each renders as a\n // clickable suggestion; `icon` is an optional Lucide name beside it.\n suggestions: z\n .array(\n z.strictObject({\n icon: iconName.optional(),\n label: z.string().min(1),\n })\n )\n .default([]),\n })\n .superRefine((value, ctx) => {\n // A generic OpenAI-compatible backend has no preset URL, so the user\n // must supply one; the named providers fall back to their preset.\n if (\n value.provider === \"openai-compatible\" &&\n !(value.baseUrl || value.endpoint)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'ai.ask.baseUrl is required when provider is \"openai-compatible\".',\n path: [\"baseUrl\"],\n });\n }\n // `cors` configures the generated route, which an external `endpoint`\n // replaces; accepting both would silently do nothing.\n if (value.cors && value.endpoint) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"ai.ask.cors only applies to the generated route; with ai.ask.endpoint, CORS is that backend's job.\",\n path: [\"cors\"],\n });\n }\n // Inkeep runs its own QA pipeline behind an OpenAI-compatible endpoint\n // with no reasoning control; a level would only reach it as an\n // unsupported `reasoning_effort`, so refuse it up front.\n if (value.provider === \"inkeep\" && value.reasoning) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'ai.ask.reasoning is not supported when provider is \"inkeep\".',\n path: [\"reasoning\"],\n });\n }\n })\n .optional(),\n /**\n * The AI Catalog / ARD manifest at `/.well-known/ai-catalog.json` (mirrored\n * at `/.well-known/ard.json`): one entry per agent-facing resource the site\n * publishes — the MCP server card, each agent skill, the JSON docs API's\n * OpenAPI document, each rendered API reference, and llms.txt — so agent\n * registries can index the site from its domain alone. Needs a\n * `deployment.site` (identifiers are domain-anchored URNs). On by default;\n * the object form overrides the generated representative queries.\n */\n catalog: z\n .union([z.boolean(), aiCatalogObjectSchema])\n .default(true)\n .transform((value): AiCatalogResolved =>\n isBoolean(value) ? { enabled: value, queries: {} } : value\n ),\n /**\n * `llms.txt`/`llms-full.txt` emission. A bare boolean toggles it; the object\n * form adds `openapi: false` to keep generated API reference pages out of\n * both files (e.g. when the configured spec is example content) and\n * `details`, free-form Markdown placed after the summary — the llms.txt\n * spec's details block, where a site tells agents when to reach for it.\n */\n llmsTxt: z\n .union([z.boolean(), llmsTxtObjectSchema])\n .default(true)\n .transform((value): LlmsTxtResolved =>\n isBoolean(value) ? { enabled: value, openapi: true } : value\n ),\n // Serializers for the agent-facing Markdown downlevel (the `.md` mirror,\n // llms-full.txt, MCP get_page), keyed by JSX name. Functions live here —\n // not in components.tsx — because the config file is executed at build\n // time while the components file is only statically analyzed. A same-name\n // entry replaces the built-in serializer.\n // Two-argument `z.record` — the single-argument form throws at\n // schema-construction time under Zod 4 (see uiStringsOverrideSchema).\n markdownComponents: z\n .record(\n z.string(),\n z.custom<ComponentMarkdown>(\n (value): value is ComponentMarkdown => typeof value === \"function\",\n {\n message: \"Expected a serializer function.\",\n }\n )\n )\n .default({}),\n /** Expose the docs as an MCP server for connecting agents. */\n mcp: mcpConfigSchema.prefault({}),\n /**\n * The \"Open in chat\" page action. `true` (the default) lists every\n * provider, `false` hides the action entirely, and an array of provider\n * keys shows just that subset, in the given order. Normalized to the\n * provider list so consumers read a plain array.\n */\n openInChat: z\n .union([\n z.boolean(),\n z\n .array(z.enum(openInChatProviders))\n .refine((value) => new Set(value).size === value.length, {\n message: \"ai.openInChat must not repeat a provider.\",\n }),\n ])\n .default(true)\n .transform((value) => {\n if (isBoolean(value)) {\n return value ? [...openInChatProviders] : [];\n }\n return value;\n }),\n /**\n * Publish Agent Skills for discovery: a directory (resolved against the\n * project root) whose subdirectories each hold a `SKILL.md`. The build\n * copies each skill under `/.well-known/agent-skills/` — a lone `SKILL.md`\n * verbatim, a skill with supporting files as a `.tar.gz` — and emits the\n * discovery index (`index.json`) with SHA-256 digests per the Agent Skills\n * Discovery RFC.\n */\n skills: z.string().min(1).optional(),\n /**\n * Web Bot Auth (IETF `webbotauth`): publish the org's HTTP Message\n * Signature public keys at `/.well-known/http-message-signatures-directory`\n * so sites receiving requests from the org's agents can verify them.\n * Opt-in and public-keys-only — the private keys live wherever the signing\n * agents run, never in the site.\n */\n webBotAuth: z\n .strictObject({\n keys: z.array(publicJwkSchema).default([]),\n })\n .prefault({}),\n /**\n * WebMCP: register in-page tools (search, page Markdown, the docs index)\n * on the browser's model context so agentic browsers can drive the docs\n * without a separate MCP connection. A tiny script that no-ops in browsers\n * without the API; on by default.\n */\n webmcp: z.boolean().default(true),\n});\n\n/**\n * A pinned link rendered above the sidebar sections — a blog, changelog, or\n * contact page that should always be reachable, regardless of the active tab.\n * `href` may be an external URL or an internal route.\n */\nconst featuredLinkSchema = z.strictObject({\n href: z.string(),\n icon: iconName.optional(),\n label: z.string(),\n});\n\n/**\n * A header link: a plain one (`Log in`, `Status`), or the single call to\n * action. Same shape as a featured link minus the icon — the header row is\n * text, not iconography.\n */\nconst headerActionSchema = z.strictObject({\n href: z.string(),\n label: z.string(),\n});\n\nconst navigationConfigSchema = z.strictObject({\n /** Plain links in the header, left of the icon buttons. */\n actions: z.array(headerActionSchema).default([]),\n /**\n * The one primary call to action in the header, as a filled button.\n *\n * Singular on purpose: a docs header has room for exactly one thing a\n * reader is being asked to do, a row of buttons asks for nothing, and\n * `featured` already takes the secondary links.\n */\n cta: headerActionSchema.optional(),\n /** Pinned links shown above the generated sidebar sections. */\n featured: z.array(featuredLinkSchema).default([]),\n /**\n * The GitHub link in the header. `true` derives it from `github`, `false`\n * hides it, and an absolute URL points it anywhere on GitHub — an\n * organization, say, when the docs repo itself is private and `github` has\n * to stay unset. The mark stays the GitHub one, so a URL elsewhere belongs in\n * `actions`.\n */\n repo: z.union([z.boolean(), httpUrlSchema]).default(true),\n selectors: z.array(navSelectorSchema).default([]),\n /**\n * Sidebar behavior. `display` sets how every group renders (a group in an\n * explicit `items` config may still override it); `items` is an explicit\n * sidebar — when omitted the sidebar is generated from the content tree.\n * A bare array is shorthand for `{ items }`.\n */\n sidebar: z\n .union([\n z.array(sidebarItemSchema),\n z.strictObject({\n display: sidebarDisplaySchema.default(\"flat\"),\n items: z.array(sidebarItemSchema).optional(),\n }),\n ])\n .prefault({})\n .transform((value) =>\n Array.isArray(value) ? { display: \"flat\" as const, items: value } : value\n ),\n tabs: z.array(navTabSchema).default([]),\n});\n\nexport type AskAiProvider = (typeof askAiProviders)[number];\nexport type AskReasoning = (typeof askReasoningLevels)[number];\nexport type AskAiConfig = NonNullable<z.infer<typeof aiConfigSchema>[\"ask\"]>;\nexport { openInChatProviders } from \"./open-in-chat.ts\";\nexport type { OpenInChatProvider } from \"./open-in-chat.ts\";\n\n// Reader-facing \"Export\" page action (PDF via print, EPUB via client-side\n// generation). Off by default. Accepts a shorthand boolean to toggle both\n// formats, or an object to enable them individually; both normalize to\n// `{ epub, pdf }` so consumers read plain booleans.\nconst exportConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n epub: z.boolean().default(false),\n pdf: z.boolean().default(false),\n }),\n ])\n .transform((value) =>\n isBoolean(value) ? { epub: value, pdf: value } : value\n );\n\n/** A configured locale: ISO-ish code plus display metadata for the switcher. */\nconst localeSchema = z.strictObject({\n code: z.string().min(1),\n /** Text direction; drives `<html dir>` and a future RTL pass. */\n dir: z.enum([\"ltr\", \"rtl\"]).default(\"ltr\"),\n label: z.string(),\n /**\n * Freeform style guidance for `blume translate`, e.g. \"Brazilian\n * Portuguese, informal você\". Pins register and dialect from the first\n * translation and wins over an existing translation's style on reruns.\n */\n style: z.string().optional(),\n});\n\n/**\n * Internationalization. Opt-in: when absent, Blume is single-locale and behaves\n * exactly as before. The default locale lives at the content root; other locales\n * are top-level directories named by `code` (the `dir` parser).\n */\nconst i18nConfigSchema = z\n .strictObject({\n defaultLocale: z.string().default(\"en\"),\n /** Locale rendered for a missing translation; `null` disables fallback. */\n fallbackLocale: z.string().nullable().optional(),\n /** Drop the URL prefix for the default locale (`/`, `/fr/…`). Static-safe. */\n hideDefaultLocalePrefix: z.boolean().default(true),\n locales: z.array(localeSchema).min(1),\n /** `\"dir\"`: locale directories (`fr/page.mdx`). `\"dot\"`: filename suffix (`page.fr.mdx`). */\n parser: z.enum([\"dir\", \"dot\"]).default(\"dir\"),\n /** Per-locale UI string overrides: `{ fr: { search: { button: \"…\" } } }`. */\n ui: uiLocaleOverridesSchema.optional(),\n })\n .superRefine((value, ctx) => {\n const codes = new Set(value.locales.map((locale) => locale.code));\n if (!codes.has(value.defaultLocale)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `i18n.defaultLocale \"${value.defaultLocale}\" must match one of i18n.locales.`,\n path: [\"defaultLocale\"],\n });\n }\n if (\n value.fallbackLocale !== null &&\n value.fallbackLocale !== undefined &&\n !codes.has(value.fallbackLocale)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `i18n.fallbackLocale \"${value.fallbackLocale}\" must match one of i18n.locales.`,\n path: [\"fallbackLocale\"],\n });\n }\n });\n\n/**\n * Version ids must start with a letter (`v1.0`, not `1.0`): the id doubles as\n * the snapshot directory name, and a leading digit would collide with the\n * numeric-prefix ordering convention (`01-intro.mdx`), which strips `1.0/` to\n * `0/`. The rest allows word characters, dots, and hyphens — URL-safe as-is.\n */\nexport const VERSION_ID = /^[A-Za-z][\\w.-]*$/u;\n\n/** A frozen documentation snapshot: a directory under the content root. */\nconst archivedVersionSchema = z.strictObject({\n /**\n * The \"you're viewing an old version\" notice: `true` for the built-in\n * message, a string for custom copy, `false` to hide it.\n */\n banner: z.union([z.boolean(), z.string()]).default(true),\n /**\n * Where this version's pages point their canonical URL: `latest` targets the\n * same page in the current docs when it still exists (self otherwise), so\n * search engines treat the live page as authoritative without deindexing\n * version-only content. `self` keeps every page authoritative.\n */\n canonical: z.enum([\"latest\", \"self\"]).default(\"latest\"),\n /** Directory name under the content root, and the URL segment. */\n id: z\n .string()\n .regex(\n VERSION_ID,\n 'Version ids must start with a letter (e.g. \"v1.0\") and contain only letters, digits, dots, hyphens, and underscores.'\n ),\n /** Switcher label; defaults to the id. */\n label: z.string().optional(),\n /** Emit `noindex` on every page of this version. */\n noindex: z.boolean().default(false),\n});\n\n/**\n * Docs versioning. Opt-in: the latest docs live at the content root with\n * unprefixed URLs, and each archived version is a frozen snapshot directory\n * (`content/docs/<id>/`) cut with `blume version <id>`. Archived means frozen:\n * snapshots carry their own translations and are never retranslated.\n */\nconst versionsConfigSchema = z\n .strictObject({\n /** Frozen snapshots, newest first — this order is the switcher order. */\n archived: z.array(archivedVersionSchema).default([]),\n /** Labels the unprefixed tree (the latest docs) in the switcher. */\n current: z.strictObject({\n /** Small tag rendered next to the label (e.g. `Latest`). */\n badge: z.string().optional(),\n label: z.string(),\n }),\n switcher: z\n .strictObject({\n /**\n * Where switching lands when the page has no equivalent in the target\n * version: `same-page` goes to the equivalent when it exists (version\n * root otherwise); `root` always goes to the version root.\n */\n redirect: z.enum([\"same-page\", \"root\"]).default(\"same-page\"),\n })\n .prefault({}),\n })\n .superRefine((value, ctx) => {\n const seen = new Set<string>();\n for (const [position, version] of value.archived.entries()) {\n if (seen.has(version.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `versions.archived declares \"${version.id}\" more than once.`,\n path: [\"archived\", position, \"id\"],\n });\n }\n seen.add(version.id);\n }\n });\n\nconst analyticsScriptSchema = z\n .strictObject({\n // Extra attributes (e.g. `data-domain`, `id`) spread onto the <script>.\n attributes: z.record(z.string(), z.string()).optional(),\n // Inline script body, mutually exclusive with `src`.\n content: z.string().optional(),\n // External script URL, mutually exclusive with `content`.\n src: z.string().optional(),\n // Load strategy for an external script.\n strategy: z.enum([\"async\", \"defer\"]).optional(),\n })\n .refine((value) => Boolean(value.src) !== Boolean(value.content), {\n message: \"An analytics script must set exactly one of `src` or `content`.\",\n });\n\nconst analyticsConfigSchema = z.strictObject({\n // Cloudflare Web Analytics in manual (JS snippet) mode; the token comes from\n // the site's snippet in the dashboard. A zone Cloudflare proxies with\n // automatic RUM injection on needs no config at all.\n cloudflare: z\n .strictObject({\n token: z.string().min(1),\n })\n .optional(),\n posthog: z\n .strictObject({\n host: z.string().optional(),\n key: z.string(),\n })\n .optional(),\n // Escape hatch for any other provider (Plausible, Fathom, GA, Umami, …).\n scripts: z.array(analyticsScriptSchema).optional(),\n vercel: z.boolean().optional(),\n});\n\nconst deploymentConfigSchema = z.strictObject({\n adapter: z\n .enum([\"vercel\", \"node\", \"netlify\", \"cloudflare\"])\n .nullable()\n .default(null),\n base: z.string().optional(),\n output: z.enum([\"static\", \"server\"]).default(\"static\"),\n site: z.url().optional(),\n});\n\nconst redirectSchema = z.strictObject({\n from: z.string(),\n status: z\n .union([z.literal(301), z.literal(302), z.literal(307), z.literal(308)])\n .default(301),\n to: z.string(),\n});\n\n/**\n * One authorized remote image source, passed through to Astro's\n * `image.remotePatterns`. Wildcards follow Astro's rules: `hostname` accepts\n * `**.example.com` (any depth) or `*.example.com` (one level), `pathname`\n * accepts `/dir/**` or `/dir/*` the same way.\n */\nconst imageRemotePatternSchema = z.strictObject({\n hostname: z.string().optional(),\n pathname: z.string().optional(),\n port: z.string().optional(),\n protocol: z.string().optional(),\n});\n\n/**\n * Image optimization (`image`). Local images referenced by relative path\n * (``) are optimized at build time automatically —\n * compressed, converted to WebP, and stamped with intrinsic dimensions.\n * Remote images are only optimized when their host is authorized here;\n * both fields map directly onto Astro's `image` config.\n */\nconst imageConfigSchema = z.strictObject({\n /** Hosts whose remote images may be optimized, e.g. `[\"cdn.example.com\"]`. */\n domains: z.array(z.string()).default([]),\n /** Pattern-based host authorization, for wildcards `domains` can't express. */\n remotePatterns: z.array(imageRemotePatternSchema).default([]),\n});\n\n/**\n * X (Twitter) attribution. The account fields feed `twitter:site` (the site's\n * account) and `twitter:creator` (the author's), which is the one piece of X\n * card metadata with no Open Graph equivalent to fall back to — everything else\n * on the card is read from `og:*`.\n */\nconst xConfigSchema = z.strictObject({\n /** The author's account, overridable per page via `seo.x.creator`. */\n creator: xHandleSchema,\n /** The site's own account, e.g. `@blume`. */\n handle: xHandleSchema,\n});\n\n/**\n * Any CSS color. Takumi parses the full grammar, so this stays unvalidated\n * here and a bad value fails the OG prerender with a parse error naming it —\n * the same fail-fast the card's accent relies on. Validating hex-only here\n * would reject `oklch(…)`, which `theme.accent` (the card's default accent)\n * already accepts.\n */\nconst ogColorSchema = z.string();\n\nconst ogPaletteSchema = z.strictObject({\n accent: ogColorSchema.optional(),\n background: ogColorSchema.optional(),\n border: ogColorSchema.optional(),\n foreground: ogColorSchema.optional(),\n muted: ogColorSchema.optional(),\n});\n\n/**\n * A font to load into the OG card renderer. A bare string is a Google Fonts\n * family name; the name-only object form pins the weight (a number, a list, or\n * a variable range like `\"100..900\"`) and style, fetched from Google Fonts at\n * build. The `src` form reads a local font file from the project instead.\n * Either way Takumi does per-glyph fallback, so a family covering a script\n * (e.g. Noto Sans JP for CJK) fixes tofu without touching how Latin renders.\n */\nconst ogFontWeightSchema = z.union([\n z.number().int().positive(),\n z.array(z.number().int().positive()),\n z.string().regex(/^\\d+\\.\\.\\d+$/u),\n]);\nconst ogFontStyleSchema = z.enum([\"normal\", \"italic\"]);\nconst ogFontSchema = z.union([\n z.string(),\n z.strictObject({\n name: z.string(),\n style: z.union([ogFontStyleSchema, z.array(ogFontStyleSchema)]).optional(),\n weight: ogFontWeightSchema.optional(),\n }),\n /** A local font file, read from the project at build. */\n z.strictObject({\n name: z.string(),\n src: z.string().min(1),\n style: ogFontStyleSchema.optional(),\n weight: z.number().int().positive().optional(),\n }),\n]);\n\nconst ogConfigSchema = z.strictObject({\n /**\n * Site-wide card subtitle, shown on pages without their own description.\n * Defaults to the site description; a string overrides it, `false` renders\n * every card without a subtitle (page descriptions included).\n */\n description: z.union([z.string(), z.literal(false)]).optional(),\n /**\n * Generate a per-page Open Graph image. Defaults to on once a deployment\n * site URL is known (set or auto-detected) and off otherwise, since\n * `og:image` must be absolute to be useful to crawlers — resolved in\n * `loadConfig`. An explicit value here always wins.\n */\n enabled: z.boolean().optional(),\n /**\n * Google Font families for the generated card, extending Takumi's Latin-only\n * default so non-Latin titles (CJK, and so on) render instead of tofu.\n * Fetched from Google Fonts at build.\n */\n fonts: z.array(ogFontSchema).optional(),\n /**\n * Local SVG used in the generated card instead of the site logo; `false`\n * renders the card without any brand mark.\n */\n logo: z.union([z.string(), z.literal(false)]).optional(),\n /** Optional generated-card colors. */\n palette: ogPaletteSchema.optional(),\n /**\n * Footer site text. Defaults to the deployment site's host plus\n * `deployment.base` (`docs.acme.com`, `user.github.io/repo`); a string\n * overrides it, `false` hides it.\n */\n site: z.union([z.string(), z.literal(false)]).optional(),\n /**\n * Card headlines for custom `.astro` pages, keyed by route (`\"/\"`, `\"/cli\"`).\n * A custom page has no frontmatter to read, so its card is otherwise titled\n * by humanizing its last URL segment (`/cli` → \"Cli\"); an entry here wins.\n * Content pages always take their card headline from the page title.\n */\n titles: z.record(z.string(), z.string()).optional(),\n});\n\nconst rssConfigSchema = z.strictObject({\n enabled: z.boolean().default(true),\n /** Max items per feed, newest first. */\n limit: z.number().int().positive().default(50),\n /** Content types that each get a feed at `/<type>/rss.xml`. */\n types: z.array(z.string()).default([\"blog\", \"changelog\"]),\n});\n\n/**\n * robots.txt `Content-Signal` preferences — the emerging content-usage\n * declaration for how crawlers may reuse the site. Each field maps to one\n * signal:\n * - `search` → `search` (traditional and AI search indexing)\n * - `aiInput` → `ai-input` (grounding / RAG use at answer time)\n * - `aiTrain` → `ai-train` (model training)\n */\nconst contentSignalsObjectSchema = z.strictObject({\n aiInput: z.boolean().default(true),\n aiTrain: z.boolean().default(true),\n search: z.boolean().default(true),\n});\n\n/**\n * Content signals accept a boolean shorthand or a per-signal object, and\n * normalize to `{ search, aiInput, aiTrain }` — or `null` when disabled, so\n * robots.txt omits the declaration entirely. On by default (`true`): Blume\n * declares the docs open to search and agents. `false` opts out; an object\n * restricts individual signals (unset signals stay `yes`).\n */\nconst contentSignalsSchema = z\n .union([z.boolean(), contentSignalsObjectSchema])\n .transform((value) => {\n if (value === true) {\n return contentSignalsObjectSchema.parse({});\n }\n if (value === false) {\n return null;\n }\n return value;\n });\n\n/** A schema.org `PostalAddress`, any part of which may be given. */\nconst postalAddressSchema = z.strictObject({\n addressCountry: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n streetAddress: z.string().optional(),\n});\n\n/**\n * `seo.organization`: the organization behind the site, emitted on every page\n * as a schema.org `Organization` node (see `seo/jsonld.ts`). Name and URL\n * default to the site's; contact details become a `ContactPoint`, the address\n * a `PostalAddress` — what agents check to verify a business.\n */\nconst organizationConfigSchema = z.strictObject({\n address: postalAddressSchema.optional(),\n contactType: z.string().default(\"customer support\"),\n email: z.email().optional(),\n logo: z.string().optional(),\n name: z.string().optional(),\n sameAs: z.array(z.url()).default([]),\n telephone: z.string().optional(),\n url: z.url().optional(),\n});\n\n/**\n * `seo.software`: the product the site documents, emitted on the homepage as\n * a schema.org `SoftwareApplication` node. `true` takes every default (name\n * and description from the site, category `DeveloperApplication`).\n */\nconst softwareConfigSchema = z.strictObject({\n applicationCategory: z.string().default(\"DeveloperApplication\"),\n description: z.string().optional(),\n license: z.string().optional(),\n name: z.string().optional(),\n operatingSystem: z.string().optional(),\n price: z.union([z.number().nonnegative(), z.string()]).optional(),\n priceCurrency: z.string().default(\"USD\"),\n sameAs: z.array(z.url()).default([]),\n});\n\ntype SoftwareResolved = z.output<typeof softwareConfigSchema>;\n\n/** Discoverability features: OG images, feeds, sitemap, structured data. */\nconst seoConfigSchema = z.strictObject({\n /**\n * Emit `agent-readability.json` at the site root: a manifest that indexes\n * the agent-facing surface (llms.txt, Markdown mirrors, MCP server, feeds)\n * so agents can discover it without scraping HTML.\n */\n agentReadability: z.boolean().default(true),\n /** robots.txt `Content-Signal` usage declaration (on by default). */\n contentSignals: contentSignalsSchema.prefault(true),\n og: ogConfigSchema.default({}),\n /** The organization behind the site, as an `Organization` JSON-LD node. */\n organization: organizationConfigSchema.optional(),\n /** Generate robots.txt (with a Sitemap reference when available). */\n robots: z.boolean().default(true),\n rss: rssConfigSchema.prefault({}),\n /** Generate sitemap.xml (requires deployment.site). */\n sitemap: z.boolean().default(true),\n /** The documented product, as a homepage `SoftwareApplication` node. */\n software: z\n .union([z.boolean(), softwareConfigSchema])\n .optional()\n .transform((value): SoftwareResolved | undefined => {\n if (value === true) {\n return softwareConfigSchema.parse({});\n }\n return value === false ? undefined : value;\n }),\n /** Emit schema.org JSON-LD in each page's <head>. */\n structuredData: z.boolean().default(true),\n /** X (Twitter) account attribution for share cards. */\n x: xConfigSchema.default({}),\n});\n\n/**\n * The GitHub instance's origin, normalized. Repo, edit, and API URLs are all\n * built by appending to this, so it is reduced to a bare origin: a trailing\n * slash would double the separator, and a path, query, fragment, or embedded\n * credentials would land in the middle of every generated link.\n */\nconst githubOriginSchema = httpUrlSchema.transform(\n (value) => new URL(value).origin\n);\n\n/**\n * A REST API base: an origin plus an optional path, since Enterprise Server\n * serves the API from `/api/v3`. Anything past the path is dropped for the same\n * reason the host is reduced — `/repos/{owner}/{repo}` is appended as a string,\n * so a query would swallow the route and a fragment would strip it from the\n * request entirely, leaving a lookup that silently returns the wrong thing.\n */\nconst githubApiSchema = httpUrlSchema.transform((value) => {\n const { origin, pathname } = new URL(value);\n return trimEnd(`${origin}${pathname}`, \"/\");\n});\n\nconst githubConfigSchema = z.strictObject({\n /** REST API base. Derived from `host` when unset. */\n api: githubApiSchema.optional(),\n branch: z.string().default(\"main\"),\n /** Path from the repo root to the project root (for monorepos). */\n dir: z.string().optional(),\n /** Origin of the GitHub instance, for Enterprise installations. */\n host: githubOriginSchema.default(PUBLIC_HOST_URL),\n owner: z.string(),\n repo: z.string(),\n});\n\n/** The theme fields the structural code-theme check inspects. */\ninterface CodeThemeFields {\n colors?: unknown;\n settings?: unknown;\n tokenColors?: unknown;\n}\n\n/** A non-null, non-array object — the floor for a theme and its `colors` map. */\nconst isThemeObject = <Value>(value: Value): value is Value & CodeThemeFields =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst codeThemeSchema = z.custom<CodeTheme>((value) => {\n if (isString(value)) {\n return true;\n }\n if (!isThemeObject(value)) {\n return false;\n }\n // Token rules live in `settings` (Shiki's canonical field, also the TextMate\n // form themes like createCssVariablesTheme() produce) or `tokenColors` (the\n // VS Code spelling Shiki falls back to). A colors-only theme (editor fg/bg,\n // no token rules) is also valid — Shiki renders it from `colors` alone. Each\n // field present must have the right shape, and at least one must be present.\n const settingsValid =\n value.settings === undefined || Array.isArray(value.settings);\n const tokenColorsValid =\n value.tokenColors === undefined || Array.isArray(value.tokenColors);\n const colorsValid = value.colors === undefined || isThemeObject(value.colors);\n const hasContent =\n value.settings !== undefined ||\n value.tokenColors !== undefined ||\n value.colors !== undefined;\n return settingsValid && tokenColorsValid && colorsValid && hasContent;\n}, \"Expected a Shiki theme name or custom theme object\");\n\nconst codeBlockThemeSchema = z.strictObject({\n dark: codeThemeSchema.default(\"github-dark\"),\n light: codeThemeSchema.default(\"github-light\"),\n});\n\nconst codeBlocksConfigSchema = z.strictObject({\n theme: codeBlockThemeSchema.prefault({}),\n});\n\n/**\n * `<Component />` example previews. A string is shorthand for `{ source }`:\n * where examples live, relative to the project root (default `examples`).\n * `source` may be a glob (anything with `*`/`?`/`[]`/`{}`/`!`), in which case\n * only matching files are discovered and each `<Component path>` key is\n * relative to the glob's static prefix — use this for a registry layout that\n * colocates component sources with their examples\n * (`registry/<pkg>/**\\/examples/*`), leaving the sources (which have no\n * default export to wrap) out.\n *\n * `css` names a stylesheet (relative to the project root) injected into every\n * preview frame after Blume's default tokens. Previews render in an isolated\n * iframe that the site's docs styles never reach, so this is where design\n * tokens for the previewed components live — e.g. shadcn variables and\n * `@theme` mappings. Tailwind itself is already provided; the file should\n * hold tokens and custom styles, not another `@import \"tailwindcss\"`.\n */\nconst examplesConfigSchema = z\n .union([\n z.string(),\n z.strictObject({\n css: z.string().optional(),\n source: z.string().default(\"examples\"),\n }),\n ])\n .transform((value): { css?: string; source: string } =>\n isString(value) ? { source: value } : value\n );\n\n/**\n * \"Last updated\" timestamps for content pages. `false` (default) disables the\n * feature; `true` derives each page's date from git history; an object selects\n * the source explicitly. A page's `lastModified` frontmatter always wins.\n */\nconst lastModifiedConfigSchema = z.union([\n z.boolean(),\n z.strictObject({ type: z.enum([\"git\", \"frontmatter\"]).default(\"git\") }),\n]);\n\n/**\n * How the \"last updated\" stamp and the changelog timeline render their dates —\n * a curated pass-through to `Intl.DateTimeFormat`, shared by both surfaces so\n * they read alike. Defaults to `{ dateStyle: \"long\" }`. Both stamps format in\n * UTC unless a `timeZone` is given, so a date reads the same regardless of the\n * build machine's zone. `dateStyle` is a preset that can't be combined with the\n * individual component fields (`year`, `month`, …), matching `Intl`'s own rule.\n */\nconst dateFormatConfigSchema = z\n .strictObject({\n /** Calendar system (e.g. `japanese`, `buddhist`). */\n calendar: z.string().optional(),\n /** Preset date length; mutually exclusive with the component fields. */\n dateStyle: z.enum([\"full\", \"long\", \"medium\", \"short\"]).optional(),\n /** Day representation. */\n day: z.enum([\"numeric\", \"2-digit\"]).optional(),\n /** Era representation (e.g. the Japanese imperial era). */\n era: z.enum([\"long\", \"short\", \"narrow\"]).optional(),\n /** Month representation. */\n month: z.enum([\"numeric\", \"2-digit\", \"long\", \"short\", \"narrow\"]).optional(),\n /** Numbering system (e.g. `latn`, `arab`). */\n numberingSystem: z.string().optional(),\n /** IANA time zone (e.g. `Asia/Tokyo`). Defaults to `UTC`. */\n timeZone: z.string().optional(),\n /** Weekday representation. */\n weekday: z.enum([\"long\", \"short\", \"narrow\"]).optional(),\n /** Year representation. */\n year: z.enum([\"numeric\", \"2-digit\"]).optional(),\n })\n .refine(\n (value) =>\n value.dateStyle === undefined ||\n (value.weekday === undefined &&\n value.era === undefined &&\n value.year === undefined &&\n value.month === undefined &&\n value.day === undefined),\n {\n message:\n \"dateFormat.dateStyle can't be combined with weekday/era/year/month/day; use one or the other.\",\n }\n );\n\n/** Code-block rendering options (`markdown.code`). */\nconst codeConfigSchema = z.strictObject({\n /**\n * Show a brand language icon in the code-block header (TypeScript, Python,\n * …). On by default; recognized languages only.\n */\n icons: z.boolean().default(true),\n /**\n * Wrap long lines instead of scrolling horizontally. Off by default, so\n * code keeps its original line breaks and overflows into a scroll area.\n */\n wrap: z.boolean().default(false),\n});\n\nconst markdownConfigSchema = z.strictObject({\n /** Code-block rendering: language icons and line wrapping. */\n code: codeConfigSchema.prefault({}),\n codeBlocks: codeBlocksConfigSchema.prefault({}),\n /**\n * Wrap each `##`–`######` heading in a link to its own anchor so readers can\n * click to copy, bookmark, or share a permalink to that section. On by\n * default; set to `false` to render plain headings.\n */\n headingAnchors: z.boolean().default(true),\n /**\n * Make content images click-to-zoom (open in a lightbox). On by default;\n * opt a single image out with `data-no-zoom`.\n */\n imageZoom: z.boolean().default(true),\n});\n\n/** React island behavior (`react`). */\nconst reactConfigSchema = z.strictObject({\n /**\n * Auto-memoize React components/hooks with the React Compiler\n * (`babel-plugin-react-compiler`). On by default whenever React is enabled\n * (a project `.tsx`/`.jsx`, a React island/example/override, or Ask AI); set\n * to `false` to skip the compiler's babel pass.\n */\n compiler: z.boolean().default(true),\n});\n\n/**\n * A single spec rendered by the API reference. `spec` is a local path or an\n * `http(s)` URL (an OpenAPI document under `openapi`, an AsyncAPI document\n * under `asyncapi`).\n */\nconst openapiSourceSchema = z.strictObject({\n /** Include generated pages from this spec in llms.txt/llms-full.txt. */\n includeInLlms: z.boolean().default(true),\n /** Include generated pages from this spec in site search. */\n includeInSearch: z.boolean().default(true),\n /** Nav/section label for this source. */\n label: z.string().optional(),\n /** Emit noindex metadata and omit generated pages from the sitemap. */\n noindex: z.boolean().default(false),\n /** Per-source route; defaults to the block's `route` (or a derived path). */\n route: z.string().optional(),\n /**\n * Append the English \"Reference for the … endpoint in the … API.\" sentence\n * to every generated operation page's meta description. On by default, so\n * terse specs still ship distinct, snippet-length descriptions; set to\n * `false` on a non-English site to describe pages with the spec's own prose\n * alone (falling back to the page title when an operation has none).\n */\n seoDescriptionSuffix: z.boolean().default(true),\n /** Local path or `http(s)` URL to the spec. */\n spec: z.string(),\n});\n\nexport type OpenApiSource = z.input<typeof openapiSourceSchema>;\n\n/**\n * Arbitrary Scalar API-reference options forwarded verbatim to the generated\n * `<ScalarComponent>` (Scalar renderer only). A passthrough map — Blume doesn't\n * mirror Scalar's full config surface — so keys like `localization`, `agent`,\n * `hideTestRequestButton`, or `orderSchemaPropertiesBy` all flow through. These\n * take precedence over Blume's own derived config (spec, theme), so this is a\n * full escape hatch; the dedicated `theme` field is the ergonomic shorthand.\n */\nconst scalarConfigSchema = z.record(z.string(), z.unknown()).optional();\n\n/**\n * The interactive \"Try it\" panel on operation pages (Blume renderer). On by\n * default; `false` hides it. The object form keeps it on and sets `proxy`,\n * the CORS escape hatch the Send button routes requests through: a proxy URL,\n * or `true` for the built-in `/_api-proxy` endpoint (which requires\n * `deployment.output: \"server\"`). Booleans normalize to the object shape so\n * consumers read `{ enabled, proxy }` directly. `proxy` applies to the\n * HTTP-posting playgrounds (OpenAPI, GraphQL) — an event composer's WebSocket\n * connect is direct. One schema for every reference block, so the\n * normalization can never drift between them.\n */\nconst playgroundConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n enabled: z.boolean().default(true),\n proxy: z.union([z.boolean(), z.string()]).default(false),\n }),\n ])\n .default(true)\n .transform((value) =>\n isBoolean(value) ? { enabled: value, proxy: false } : value\n );\n\n/**\n * The shared shape of the API-reference blocks — only the mount route and\n * code-sample defaults differ per spec kind, so each block declares just\n * those (the GraphQL block derives from this via omit/extend below).\n */\nconst referenceConfigSchema = (defaults: {\n codeSamples: string[];\n route: string;\n}) =>\n z.strictObject({\n /** Code-sample languages/tools shown per operation (Blume renderer). */\n codeSamples: z.array(z.string()).default(defaults.codeSamples),\n enabled: z.boolean().default(false),\n /** Start nested schema rows expanded rather than collapsed (Blume renderer). */\n expandSchemas: z.boolean().default(false),\n /** The \"Try it\" panel; see {@link playgroundConfigSchema}. */\n playground: playgroundConfigSchema,\n /** Who renders the reference: Blume's own UI, or the embedded Scalar SPA. */\n renderer: z.enum([\"blume\", \"scalar\"]).default(\"blume\"),\n /** Where the reference mounts. */\n route: z.string().default(defaults.route),\n /** Extra Scalar config forwarded to `<ScalarComponent>` (Scalar renderer only). */\n scalar: scalarConfigSchema,\n /** One or more specs; each renders on its own route by default. */\n sources: z.array(openapiSourceSchema).default([]),\n /** Shorthand for a single source: `sources: [{ spec }]`. */\n spec: z.string().optional(),\n /** Scalar theme name (Scalar renderer only). */\n theme: z.string().optional(),\n });\n\n/**\n * OpenAPI reference. By default (`renderer: \"blume\"`) Blume parses the spec with\n * Scalar's parser and renders its own UI: one real page per operation, grouped\n * by tag in the sidebar and included in site search, llms.txt, and OG. Set\n * `renderer: \"scalar\"` to fall back to the embedded Scalar SPA (a single\n * self-contained route that doesn't weave into the sidebar or search).\n */\nconst openapiConfigSchema = referenceConfigSchema({\n codeSamples: [\"curl\", \"js\", \"python\"],\n route: \"/reference\",\n});\n\n/**\n * AsyncAPI reference. Same shape as {@link openapiConfigSchema}: by default\n * (`renderer: \"blume\"`) Blume normalizes the spec to AsyncAPI 3.x and renders\n * its own UI — one real page per operation — with `renderer: \"scalar\"` as the\n * embedded-SPA opt-out. Only the defaults differ: the reference mounts at\n * `/events`, and empty `codeSamples` means every tool the operation's protocol\n * binding suggests.\n */\nconst asyncapiConfigSchema = referenceConfigSchema({\n codeSamples: [],\n route: \"/events\",\n});\n\n/**\n * A single GraphQL schema rendered by the reference. `spec` is a local path or\n * an `http(s)` URL to SDL text or an introspection JSON result; `endpoint` is\n * the live GraphQL API URL the playground and code samples target (a schema,\n * unlike an OpenAPI document, names no server).\n */\nconst graphqlSourceSchema = openapiSourceSchema.extend({\n /** URL of the live GraphQL endpoint (playground + code samples). */\n endpoint: z.string().optional(),\n});\n\nexport type GraphqlSource = z.input<typeof graphqlSourceSchema>;\n\n/**\n * GraphQL reference. Blume lowers the schema (SDL or introspection JSON) to\n * one real page per root field — grouped as Queries/Mutations/Subscriptions —\n * plus one page per named type (Objects, Input Objects, Enums, Interfaces,\n * Unions, Scalars), all included in the sidebar, search, llms.txt, and OG.\n * Always Blume-rendered: the Scalar SPA reads OpenAPI documents only, so the\n * block declares no `renderer`/`scalar`/`theme` escape hatches.\n */\nconst graphqlConfigSchema = referenceConfigSchema({\n codeSamples: [\"curl\", \"js\", \"python\"],\n route: \"/graphql\",\n})\n // No `renderer`/`scalar`/`theme` escape hatches (the Scalar SPA reads\n // OpenAPI documents only) and no `expandSchemas` (GraphQL field tables have\n // no nesting) — everything else, the playground normalization included, is\n // the shared reference shape.\n .omit({ expandSchemas: true, renderer: true, scalar: true, theme: true })\n .extend({\n /** Default live endpoint URL for every source (per-source `endpoint` wins). */\n endpoint: z.string().optional(),\n /** One or more schemas; each renders on its own route by default. */\n sources: z.array(graphqlSourceSchema).default([]),\n });\n\n/**\n * Opt-in custom frontmatter keys. `extend` maps each extra key a project's\n * pages may carry (e.g. `owner`, `reviewedAt`) to a validation schema; the\n * page schema stays strict for everything else, so typo-catching is preserved.\n * Schemas are consumed through the Standard Schema `~standard` contract —\n * never Zod's own API — so the consumer's zod (any version), Valibot, or\n * ArkType all work (see `standard-schema.ts`). Every declared key is validated\n * on every page, absent ones included, so a required schema enforces the key\n * site-wide; mark it `.optional()` to validate only when present. Built-in\n * frontmatter fields can't be redeclared — they're load-bearing (routing,\n * sidebar, SEO), and shadowing one would silently change its semantics.\n */\nconst frontmatterConfigSchema = z.strictObject({\n extend: customKeySchemaRecord(\"frontmatter.extend\"),\n});\n\n/** Full user-facing config schema. All fields optional with defaults. */\n/**\n * Table-of-contents config. `true`/`false` toggles it; an object narrows the\n * heading range. Normalized to `{ enabled, minLevel, maxLevel }` (default: on,\n * H2–H3, matching the historical hardcoded range).\n */\nconst tocConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n maxHeadingLevel: z.number().int().min(1).max(6).optional(),\n minHeadingLevel: z.number().int().min(1).max(6).optional(),\n }),\n ])\n .default(true)\n .transform((value) => {\n if (isBoolean(value)) {\n return { enabled: value, maxLevel: 3, minLevel: 2 };\n }\n return {\n enabled: true,\n maxLevel: value.maxHeadingLevel ?? 3,\n minLevel: value.minHeadingLevel ?? 2,\n };\n })\n // Checked after defaults apply, so `{ minHeadingLevel: 5 }` (default max 3)\n // is caught too — an inverted range would silently render an empty TOC.\n .refine((value) => value.minLevel <= value.maxLevel, {\n message:\n \"toc.minHeadingLevel must be less than or equal to toc.maxHeadingLevel.\",\n });\n\nexport const blumeConfigSchema = z\n .strictObject({\n ai: aiConfigSchema.prefault({}),\n analytics: analyticsConfigSchema.optional(),\n asyncapi: asyncapiConfigSchema.prefault({}),\n banner: bannerConfigSchema.optional(),\n /**\n * Site-wide mount point prepended to every generated route (e.g. `/docs`),\n * while staying invisible to the sidebar/nav tree. Distinct from a per-source\n * `prefix` (which creates a group) and from `deployment.base` (Astro's\n * host-subdirectory base); the two compose. Normalized to `\"\"` or `/seg`.\n */\n basePath: z\n .string()\n .optional()\n .transform((value) => normalizeBasePath(value)),\n content: contentConfigSchema.prefault({}),\n /**\n * Date presentation for the \"last updated\" stamp and the changelog timeline.\n * Pass-through `Intl.DateTimeFormat` options; defaults to `{ dateStyle: \"long\" }`.\n */\n dateFormat: dateFormatConfigSchema.default({ dateStyle: \"long\" }),\n deployment: deploymentConfigSchema.prefault({}),\n description: z.string().optional(),\n /**\n * Where `<Component path>` resolves live previews and their source from.\n * A string is shorthand for `{ source }` — the directory (or glob, for\n * colocated registry layouts) under the project root that holds example\n * files. The object form adds `css`: a stylesheet injected into every\n * preview frame (design tokens, shadcn variables, `@theme` mappings).\n */\n examples: examplesConfigSchema.prefault(\"examples\"),\n export: exportConfigSchema.prefault(false),\n feedback: z.boolean().default(true),\n /** Opt-in custom frontmatter keys, validated by user-supplied schemas. */\n frontmatter: frontmatterConfigSchema.prefault({}),\n github: githubConfigSchema.optional(),\n graphql: graphqlConfigSchema.prefault({}),\n i18n: i18nConfigSchema.optional(),\n image: imageConfigSchema.prefault({}),\n integrations: z.array(z.custom<AstroIntegration>()).default([]),\n lastModified: lastModifiedConfigSchema.default(false),\n logo: logoConfigSchema.optional(),\n markdown: markdownConfigSchema.prefault({}),\n navigation: navigationConfigSchema.prefault({}),\n openapi: openapiConfigSchema.prefault({}),\n react: reactConfigSchema.prefault({}),\n redirects: z.array(redirectSchema).default([]),\n search: searchConfigSchema.prefault({}),\n seo: seoConfigSchema.prefault({}),\n theme: themeConfigSchema.prefault({}),\n title: z.string().default(\"Documentation\"),\n toc: tocConfigSchema,\n versions: versionsConfigSchema.optional(),\n })\n .superRefine((config, ctx) => {\n // A version id that is also a configured locale code would make a leading\n // `<id>/` directory ambiguous between the two axes — refuse it outright so\n // detection order (version first, then locale) never has to guess.\n if (config.versions && config.i18n) {\n const localeCodes = new Set(\n config.i18n.locales.map((locale) => locale.code.toLowerCase())\n );\n for (const [position, version] of config.versions.archived.entries()) {\n if (localeCodes.has(version.id.toLowerCase())) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Version id \"${version.id}\" is also a configured locale code — rename the version (e.g. \"v${version.id}\").`,\n path: [\"versions\", \"archived\", position, \"id\"],\n });\n }\n }\n }\n // A custom key is declared site-wide (`frontmatter.extend`) or per-type\n // (`content.types`), never both — two schemas for one key would make\n // precedence on pages of that type ambiguous.\n for (const [typeName, typeConfig] of Object.entries(config.content.types)) {\n for (const key of Object.keys(typeConfig.frontmatter)) {\n if (Object.hasOwn(config.frontmatter.extend, key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `\"${key}\" is already declared in frontmatter.extend and cannot be redeclared for type \"${typeName}\".`,\n path: [\"content\", \"types\", typeName, \"frontmatter\", key],\n });\n }\n }\n // A facet with no declared key could never carry a value — pages can't\n // even set the key — so it's a config mistake, caught here where both\n // the per-type map and the site-wide extend are visible.\n for (const [position, facet] of typeConfig.facets.entries()) {\n if (\n !(\n Object.hasOwn(typeConfig.frontmatter, facet) ||\n Object.hasOwn(config.frontmatter.extend, facet)\n )\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Facet \"${facet}\" for type \"${typeName}\" is not a declared custom frontmatter key — add it to the type's frontmatter map or frontmatter.extend.`,\n path: [\"content\", \"types\", typeName, \"facets\", position],\n });\n }\n }\n }\n });\n\n/** Resolved config: every field present after defaults are applied. */\nexport type ResolvedConfig = z.infer<typeof blumeConfigSchema>;\n/** Resolved `dateFormat`: the `Intl.DateTimeFormat` options both date stamps share. */\nexport type ResolvedDateFormat = z.infer<typeof dateFormatConfigSchema>;\n/** Resolved `frontmatter.extend`: custom key → user-supplied schema. */\nexport type FrontmatterExtend = Record<string, StandardSchema>;\n/** Resolved i18n block (present only when the project opts into i18n). */\nexport type ResolvedI18nConfig = z.infer<typeof i18nConfigSchema>;\n/** A configured locale with display metadata. */\nexport type LocaleConfig = z.infer<typeof localeSchema>;\n/** Resolved versions block (present only when the project opts into versioning). */\nexport type ResolvedVersionsConfig = z.infer<typeof versionsConfigSchema>;\n/** A configured archived (frozen) version. */\nexport type ArchivedVersionConfig = z.infer<typeof archivedVersionSchema>;\n/**\n * User-authored config, straight off the schema. The public, hand-documented\n * authoring type is `BlumeConfig` in `./config-input.ts`, which a compile-time\n * guard keeps structurally identical to this.\n */\nexport type BlumeConfigInput = z.input<typeof blumeConfigSchema>;\n/** A configured search backend. */\nexport type SearchProvider = (typeof searchProviders)[number];\n/** Resolved robots.txt `Content-Signal` preferences (`null` when disabled). */\nexport type ContentSignals = z.infer<typeof contentSignalsSchema>;\n/** The resolved per-signal policy object (present when signals are enabled). */\nexport type ContentSignalPolicy = NonNullable<ContentSignals>;\n",
|
|
10
|
-
"import { normalizeRoute, withBasePath } from \"../core/base-path.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport { trimChar } from \"../core/trim.ts\";\n\n// Re-exported from its home next to the other path helpers; `core/schema.ts`\n// and downstream consumers historically imported it from here.\nexport { normalizeRoute } from \"../core/base-path.ts\";\n\n/**\n * Pure resolution of the configured API reference blocks into concrete routes,\n * labels, and a renderer choice — no file IO, so the content source, the\n * nav-target validation, the Scalar page generator, and the `blume:openapi`\n * data module all share one source of truth. Kept free of any Astro/template\n * imports so `core` can depend on it without a cycle.\n */\n\nexport type ReferenceKind = \"openapi\" | \"asyncapi\" | \"graphql\";\n\n/** Who renders a reference: Blume's own UI, or the embedded Scalar SPA. */\nexport type ReferenceRenderer = \"blume\" | \"scalar\";\n\n/** Per-block display options for the Blume renderer. */\nexport interface ReferenceDisplay {\n /** Code-sample languages shown per operation. */\n codeSamples: string[];\n /** Whether nested schema rows start expanded. */\n expandSchemas: boolean;\n /**\n * The \"Try it\" playground: whether operation pages render it, and the CORS\n * proxy the Send button routes through (`false` off, a URL string, or\n * `true` for the built-in `/_api-proxy` endpoint).\n */\n playground: { enabled: boolean; proxy: string | boolean };\n}\n\n/** A spec source resolved to a concrete route, label, and renderer. */\nexport interface ReferenceSource {\n kind: ReferenceKind;\n renderer: ReferenceRenderer;\n /** Unique token derived from the route; the `<Operation source>` / data key. */\n slug: string;\n /** Normalized route the reference mounts at, e.g. `/reference`. */\n route: string;\n /**\n * Site-wide `basePath` the rendered pages are mounted under (`\"\"` when\n * none). Kept separate from `route` — the content pipeline applies it to\n * staged entries itself — so consumers prefix only the URLs they emit.\n */\n basePath: string;\n label: string;\n /** Whether generated pages are included in llms.txt/llms-full.txt. */\n includeInLlms: boolean;\n /** Whether generated pages are included in site search. */\n includeInSearch: boolean;\n /** Whether generated pages emit noindex metadata and stay out of the sitemap. */\n noindex: boolean;\n /**\n * Whether operation meta descriptions end with the generated English\n * \"Reference for …\" sentence, or carry the spec's own prose alone.\n */\n seoDescriptionSuffix: boolean;\n /** Local path or `http(s)` URL, verbatim from config. */\n spec: string;\n /**\n * URL of the live GraphQL endpoint the playground and code samples target\n * (GraphQL only — a schema, unlike an OpenAPI document, names no server).\n */\n endpoint?: string;\n /** Per-block Scalar theme name override, if any (Scalar renderer only). */\n theme?: string;\n /**\n * Arbitrary Scalar config forwarded to `<ScalarComponent>` (Scalar renderer\n * only). Takes precedence over Blume's derived spec/theme config. Typed off\n * the config schema so the two can never drift.\n */\n scalar?: ResolvedConfig[\"openapi\"][\"scalar\"];\n /** Display options carried through to the Blume renderer. */\n display: ReferenceDisplay;\n /**\n * Warnings recorded while deduping — another source's route collided with\n * this one and was dropped. Surfaced as diagnostics when the source loads.\n */\n collisions?: string[];\n}\n\n// Keep Unicode letters/marks/numbers so diacritics stay in the slug (ASCII-only\n// stripping turned `Größe` into `gr-e`, which the nav humanizer rendered as\n// `Gr E`); `\\p{M}` keeps combining marks attached to their base letter, which\n// NFC cannot always compose away (Devanagari vowel signs, Turkish `İ`'s\n// lowercased combining dot).\nconst NON_SLUG = /[^\\p{L}\\p{M}\\p{N}]+/gu;\n// Format characters (ZWNJ, ZWJ, bidi controls) separate no words — hyphenating\n// them would split Persian/Indic compounds the way ASCII stripping split\n// `Größe` — so they are dropped, not replaced.\nconst FORMAT_CHARS = /\\p{Cf}/gu;\n// A combining mark at the start of the slug has no base letter to attach to\n// (it would glue onto the preceding `/` in a URL), and a marks-only slug must\n// come out empty so callers' fallbacks (`operations`, `reference`) fire.\nconst LEADING_MARKS = /^\\p{M}+/u;\n\n/**\n * Lowercase, hyphen-separated slug: `Add a Pet!` -> `add-a-pet`. Unicode\n * letters are kept (`Größe` -> `größe`), NFC-normalized so canonically\n * equivalent spellings (NFD input from macOS tooling) land on one slug.\n * Non-ASCII slugs rely on the emitter percent-encoding the URL where a raw\n * URI is required (sitemap, canonical).\n */\nexport const slugify = (text: string): string =>\n trimChar(\n text\n .normalize(\"NFC\")\n .toLowerCase()\n .replace(FORMAT_CHARS, \"\")\n .replace(NON_SLUG, \"-\"),\n \"-\"\n ).replace(LEADING_MARKS, \"\");\n\n/** A stable per-reference token from its route: `/api/events` -> `api-events`. */\nconst routeSlug = (route: string): string =>\n slugify(trimChar(route, \"/\")) || \"reference\";\n\n/**\n * The structural shape all three reference blocks (`openapi`, `asyncapi`,\n * `graphql`) share. `endpoint` exists only on the GraphQL block and its\n * sources; `scalar`/`theme` only on the Scalar-capable kinds — optional here\n * so one resolver serves every block.\n */\ninterface Block {\n enabled: boolean;\n endpoint?: string;\n route: string;\n scalar?: ResolvedConfig[\"openapi\"][\"scalar\"];\n sources: {\n endpoint?: string;\n includeInLlms: boolean;\n includeInSearch: boolean;\n label?: string;\n noindex: boolean;\n route?: string;\n seoDescriptionSuffix: boolean;\n spec: string;\n }[];\n spec?: string;\n theme?: string;\n}\n\n/** A spec is a single source (`spec` shorthand prepended to any `sources`). */\nconst sourcesOf = (block: Block): Block[\"sources\"] => {\n const sources = [...block.sources];\n if (block.spec) {\n sources.unshift({\n includeInLlms: true,\n includeInSearch: true,\n noindex: false,\n seoDescriptionSuffix: true,\n spec: block.spec,\n });\n }\n return sources;\n};\n\nconst referencesFor = (\n kind: ReferenceKind,\n block: Block,\n defaultLabel: string,\n renderer: ReferenceRenderer,\n display: ReferenceDisplay,\n basePath: string\n): ReferenceSource[] => {\n if (!block.enabled) {\n return [];\n }\n const sources = sourcesOf(block);\n const base = normalizeRoute(block.route);\n\n return sources.map((source, index) => {\n const label =\n source.label ??\n (sources.length > 1 ? `${defaultLabel} ${index + 1}` : defaultLabel);\n\n let route: string;\n if (source.route) {\n route = normalizeRoute(source.route);\n } else if (sources.length === 1) {\n route = base;\n } else {\n const suffix = source.label ? slugify(source.label) : \"\";\n route = normalizeRoute(`${base}/${suffix || index + 1}`);\n }\n\n const reference: ReferenceSource = {\n basePath,\n display,\n includeInLlms: source.includeInLlms,\n includeInSearch: source.includeInSearch,\n kind,\n label,\n noindex: source.noindex,\n renderer,\n route,\n scalar: block.scalar,\n seoDescriptionSuffix: source.seoDescriptionSuffix,\n slug: routeSlug(route),\n spec: source.spec,\n theme: block.theme,\n };\n // Per-source endpoint wins; the block-level one is the shared default\n // (the common single-schema case pairs it with the `spec` shorthand).\n const endpoint = source.endpoint ?? block.endpoint;\n if (endpoint !== undefined) {\n reference.endpoint = endpoint;\n }\n return reference;\n });\n};\n\n/**\n * Resolve every enabled reference. Both blocks honor their `renderer` —\n * Blume's own UI by default, with the embedded Scalar SPA as the opt-out.\n */\nexport const resolveReferences = (\n config: ResolvedConfig\n): ReferenceSource[] => [\n ...referencesFor(\n \"openapi\",\n config.openapi,\n \"API Reference\",\n config.openapi.renderer,\n {\n codeSamples: config.openapi.codeSamples,\n expandSchemas: config.openapi.expandSchemas,\n playground: config.openapi.playground,\n },\n config.basePath\n ),\n ...referencesFor(\n \"asyncapi\",\n config.asyncapi,\n \"Events\",\n config.asyncapi.renderer,\n {\n codeSamples: config.asyncapi.codeSamples,\n expandSchemas: config.asyncapi.expandSchemas,\n playground: config.asyncapi.playground,\n },\n config.basePath\n ),\n // GraphQL is always Blume-rendered — Scalar's embedded SPA reads OpenAPI\n // documents only, so the block declares no `renderer` opt-out (nor the\n // schema-row `expandSchemas` toggle; GraphQL field tables have no nesting).\n ...referencesFor(\n \"graphql\",\n config.graphql,\n \"GraphQL\",\n \"blume\",\n {\n codeSamples: config.graphql.codeSamples,\n expandSchemas: false,\n playground: config.graphql.playground,\n },\n config.basePath\n ),\n];\n\n/**\n * Mounted route for every reference, regardless of renderer. References no\n * longer add a header tab automatically — authors point a `navigation.tabs`\n * entry at one of these routes to surface it (and, for Blume-rendered specs, to\n * scope its operations sidebar). These routes are whitelisted as valid nav\n * targets so such a tab doesn't read as a broken link.\n */\nexport const referenceRoutes = (config: ResolvedConfig): string[] =>\n resolveReferences(config).map((ref) =>\n // Blume-rendered operation pages flow through the content pipeline and are\n // mounted under `basePath`. Scalar references are a single embedded page\n // injected at the raw `route`, left root-anchored.\n ref.renderer === \"blume\"\n ? withBasePath(config.basePath, ref.route)\n : ref.route\n );\n\n/**\n * Accept one resolved reference into the deduped Blume-rendered set, or return\n * null to skip it. Mutates `seen`/`usedSlugs` so repeated routes/slugs collapse.\n * A dropped route collision is recorded on the kept reference (mirroring the\n * Scalar path's warning) — losing a whole spec's pages must not be silent.\n */\nconst blumeReferenceOf = (\n ref: ReferenceSource,\n seen: Map<string, ReferenceSource>,\n usedSlugs: Set<string>\n): ReferenceSource | null => {\n if (ref.renderer !== \"blume\") {\n return null;\n }\n const kept = seen.get(ref.route);\n if (kept) {\n (kept.collisions ??= []).push(\n `Two API reference sources resolve to ${ref.route}; keeping the first.`\n );\n return null;\n }\n // Distinct routes can slugify identically (`/api/v1` and `/api-v1` both\n // yield `api-v1`). The slug keys the `blume:openapi` data module, so a\n // collision would let one spec silently overwrite the other while the\n // loser's pages still point at the shared key — disambiguate.\n let { slug } = ref;\n let n = 2;\n while (usedSlugs.has(slug)) {\n slug = `${ref.slug}-${n}`;\n n += 1;\n }\n usedSlugs.add(slug);\n const accepted = slug === ref.slug ? ref : { ...ref, slug };\n // Keep the accepted object (not the original) so a later collision's warning\n // lands on the reference the caller actually receives.\n seen.set(ref.route, accepted);\n return accepted;\n};\n\n/** Blume-rendered references (both kinds), deduped by route (first wins). */\nexport const blumeReferences = (config: ResolvedConfig): ReferenceSource[] => {\n const seen = new Map<string, ReferenceSource>();\n const usedSlugs = new Set<string>();\n const result: ReferenceSource[] = [];\n for (const ref of resolveReferences(config)) {\n const accepted = blumeReferenceOf(ref, seen, usedSlugs);\n if (accepted) {\n result.push(accepted);\n }\n }\n return result;\n};\n\n/** Whether any reference is Scalar-rendered (gates the `@scalar/astro` dep + pages). */\nexport const hasScalarReferences = (config: ResolvedConfig): boolean =>\n resolveReferences(config).some((ref) => ref.renderer === \"scalar\");\n\n/**\n * The reference kinds whose enabled, Blume-rendered playground opted into the\n * built-in CORS proxy with `proxy: true`. A proxy URL string points at an\n * external service, and `false` sends requests directly — neither routes\n * through the endpoint. The generator's per-spec allowlist diagnostics key on\n * this, so it shares one definition with {@link needsPlaygroundProxy}.\n */\nexport const builtinProxyKinds = (config: ResolvedConfig): ReferenceKind[] => {\n const kinds: ReferenceKind[] = [];\n if (\n config.openapi.enabled &&\n config.openapi.renderer === \"blume\" &&\n config.openapi.playground.enabled &&\n config.openapi.playground.proxy === true\n ) {\n kinds.push(\"openapi\");\n }\n if (\n config.graphql.enabled &&\n config.graphql.playground.enabled &&\n config.graphql.playground.proxy === true\n ) {\n kinds.push(\"graphql\");\n }\n return kinds;\n};\n\n/**\n * Whether the built-in playground CORS proxy endpoint (`/_api-proxy`) must be\n * generated: some enabled Blume-rendered block's playground opted into it with\n * `proxy: true`. Shared by the server feature gate and the generator so the\n * two can never disagree.\n */\nexport const needsPlaygroundProxy = (config: ResolvedConfig): boolean =>\n builtinProxyKinds(config).length > 0;\n",
|
|
11
|
-
"/** Frontmatter defense in depth: only a real string can carry a handle. */\nconst isString = <Value>(value: Value): value is Value & string =>\n typeof value === \"string\";\n\n/**\n * Normalize an X account to the leading `@` that `twitter:site`/`twitter:creator`\n * require, so `acme`, `@acme`, and ` @acme ` all land on `@acme`. Empty or\n * blank input yields undefined, which renders no tag at all.\n *\n * The layouts call this on values that never passed through the config schema:\n * Astro's collections carry no schema here, so a page's `seo.x.creator` reaches\n * them as raw frontmatter, and the schema's own transform never runs on it.\n * (Blume's page pipeline does reject a non-string `creator` before the page is\n * built, so the string guard is defense in depth rather than the expected\n * path.)\n */\nexport const normalizeXHandle = <Value>(value: Value): string | undefined => {\n if (!isString(value)) {\n return;\n }\n const handle = value.trim().replace(/^@+/u, \"\");\n return handle ? `@${handle}` : undefined;\n};\n",
|
|
12
|
-
"/**\n * Fonts exposed through `theme.fonts`.\n *\n * Each role accepts a curated Google Font slug, a remote-provider family (any\n * Google/Fontsource/Bunny/Fontshare family by name), or local font files. All\n * forms resolve to entries for Astro's built-in Fonts API, which self-hosts\n * and optimizes them; this module only resolves config values into the data\n * that drives it.\n */\n\nexport type FontCategory = \"sans\" | \"serif\" | \"mono\";\n\n/** The three configurable roles in `theme.fonts`. */\nexport type FontSlot = \"display\" | \"body\" | \"mono\";\n\n/** Zero-config Astro font providers usable from `theme.fonts`. */\nexport type RemoteFontProvider =\n | \"google\"\n | \"fontsource\"\n | \"bunny\"\n | \"fontshare\";\n\n/** A remote-provider family: any family name the provider knows. */\nexport interface RemoteFontConfig {\n /** Family name as the provider lists it, e.g. `\"Noto Sans JP\"`. */\n name: string;\n /** Which provider serves the family. Defaults to `\"google\"`. */\n provider?: RemoteFontProvider;\n /** Weights (or variable ranges like `\"100..900\"`) to load. Defaults to `[400, 500, 600, 700]`. */\n weights?: (number | string)[];\n /**\n * Character subsets to load (`\"latin\"`, `\"vietnamese\"`, `\"cyrillic\"`, …).\n * Defaults to `latin` plus whatever the site's configured locales need.\n */\n subsets?: string[];\n /** Fallback stack category. Defaults to `\"mono\"` for the mono role, `\"sans\"` otherwise. */\n fallback?: FontCategory;\n}\n\n/** One `@font-face` declaration for a local font. */\nexport interface LocalFontVariant {\n /** Font file path, relative to the project root. */\n src: string;\n /** Face weight; inferred from the file when omitted. */\n weight?: number | string;\n /** Face style; inferred from the file when omitted. */\n style?: \"normal\" | \"italic\" | \"oblique\";\n}\n\n/** A self-hosted family loaded from files in the project. */\nexport interface LocalFontConfig {\n /** Family name used in CSS and the OG card. */\n name: string;\n /** The faces to declare (at least one). */\n variants: LocalFontVariant[];\n /** Fallback stack category. Defaults to `\"mono\"` for the mono role, `\"sans\"` otherwise. */\n fallback?: FontCategory;\n}\n\n/** A role's font: curated slug, remote family, or local files. */\nexport type FontValue = string | RemoteFontConfig | LocalFontConfig;\n\ninterface FontDef {\n category: FontCategory;\n family: string;\n /**\n * Discrete weights, or one `\"min..max\"` range for a family Google Fonts\n * serves as a variable font: the range loads the same variable file the\n * discrete weights did, declared as one `@font-face` per style instead of\n * one per weight (16 rules down to 4 for Inter on every page). The three\n * static families in the table keep discrete weights.\n */\n weights: (number | string)[];\n}\n\n/** Resolved theme fonts (a validated value per role, all optional). */\nexport type FontsConfig = Partial<Record<FontSlot, FontValue>> | undefined;\n\n/** A single Astro `fonts:` entry (sans the literal `fontProviders.*()` call). */\nexport type FontEntry =\n | {\n kind: \"remote\";\n provider: RemoteFontProvider;\n cssVariable: string;\n fallbacks: string[];\n name: string;\n subsets: string[];\n weights: (number | string)[];\n }\n | {\n kind: \"local\";\n cssVariable: string;\n fallbacks: string[];\n name: string;\n variants: LocalFontVariant[];\n };\n\nconst FALLBACKS = {\n mono: [\"ui-monospace\", \"SF Mono\", \"Menlo\", \"monospace\"],\n sans: [\"ui-sans-serif\", \"system-ui\", \"sans-serif\"],\n serif: [\"ui-serif\", \"Georgia\", \"serif\"],\n} satisfies Record<FontCategory, string[]>;\n\n/** Slug -> Google family + weights + fallback category. Keep keys alphabetical. */\nexport const GOOGLE_FONTS = {\n \"dm-sans\": { category: \"sans\", family: \"DM Sans\", weights: [\"400..700\"] },\n figtree: {\n category: \"sans\",\n family: \"Figtree\",\n weights: [\"400..700\"],\n },\n \"fira-code\": {\n category: \"mono\",\n family: \"Fira Code\",\n weights: [\"400..700\"],\n },\n geist: { category: \"sans\", family: \"Geist\", weights: [\"400..700\"] },\n \"geist-mono\": {\n category: \"mono\",\n family: \"Geist Mono\",\n weights: [\"400..600\"],\n },\n \"ibm-plex-mono\": {\n category: \"mono\",\n family: \"IBM Plex Mono\",\n weights: [400, 500, 600],\n },\n \"ibm-plex-sans\": {\n category: \"sans\",\n family: \"IBM Plex Sans\",\n weights: [\"400..700\"],\n },\n \"ibm-plex-serif\": {\n category: \"serif\",\n family: \"IBM Plex Serif\",\n weights: [400, 500, 600],\n },\n inter: { category: \"sans\", family: \"Inter\", weights: [\"400..700\"] },\n \"inter-tight\": {\n category: \"sans\",\n family: \"Inter Tight\",\n weights: [\"400..700\"],\n },\n \"jetbrains-mono\": {\n category: \"mono\",\n family: \"JetBrains Mono\",\n weights: [\"400..700\"],\n },\n lora: { category: \"serif\", family: \"Lora\", weights: [\"400..700\"] },\n manrope: {\n category: \"sans\",\n family: \"Manrope\",\n weights: [\"400..700\"],\n },\n merriweather: {\n category: \"serif\",\n family: \"Merriweather\",\n weights: [\"400..700\"],\n },\n \"open-sans\": {\n category: \"sans\",\n family: \"Open Sans\",\n weights: [\"400..700\"],\n },\n \"playfair-display\": {\n category: \"serif\",\n family: \"Playfair Display\",\n weights: [\"400..700\"],\n },\n \"plus-jakarta-sans\": {\n category: \"sans\",\n family: \"Plus Jakarta Sans\",\n weights: [\"400..700\"],\n },\n roboto: { category: \"sans\", family: \"Roboto\", weights: [\"400..700\"] },\n \"roboto-mono\": {\n category: \"mono\",\n family: \"Roboto Mono\",\n weights: [\"400..700\"],\n },\n \"source-code-pro\": {\n category: \"mono\",\n family: \"Source Code Pro\",\n weights: [\"400..600\"],\n },\n \"source-sans-3\": {\n category: \"sans\",\n family: \"Source Sans 3\",\n weights: [\"400..700\"],\n },\n \"source-serif-4\": {\n category: \"serif\",\n family: \"Source Serif 4\",\n weights: [\"400..700\"],\n },\n \"space-grotesk\": {\n category: \"sans\",\n family: \"Space Grotesk\",\n weights: [\"400..700\"],\n },\n \"space-mono\": { category: \"mono\", family: \"Space Mono\", weights: [400, 700] },\n \"work-sans\": {\n category: \"sans\",\n family: \"Work Sans\",\n weights: [\"400..600\"],\n },\n} satisfies Record<string, FontDef>;\n\nexport type FontSlug = keyof typeof GOOGLE_FONTS;\n\n/** All supported slugs, for schema validation and error messages. */\nexport const FONT_SLUGS = Object.keys(GOOGLE_FONTS);\n\n/** Type guard: is `value` a supported font slug? */\nexport const isFontSlug = (value: string): value is FontSlug =>\n Object.hasOwn(GOOGLE_FONTS, value);\n\n/** Weights loaded for a remote family when the config does not pin them. */\nconst DEFAULT_REMOTE_WEIGHTS: (number | string)[] = [400, 500, 600, 700];\n\n/**\n * The subsets a language needs beyond `latin`, keyed by BCP 47 language\n * subtag. Names are Google Fonts subsets (Bunny and Fontsource use the same\n * ones). Languages whose alphabet fits Latin-1 — English, French, German,\n * Spanish, … — need only `latin` and are absent. Keep keys alphabetical.\n */\nconst LOCALE_SUBSETS = {\n az: [\"latin-ext\"],\n ba: [\"cyrillic\", \"cyrillic-ext\"],\n be: [\"cyrillic\"],\n bg: [\"cyrillic\"],\n bs: [\"latin-ext\"],\n cs: [\"latin-ext\"],\n cv: [\"cyrillic\", \"cyrillic-ext\"],\n cy: [\"latin-ext\"],\n el: [\"greek\"],\n eo: [\"latin-ext\"],\n et: [\"latin-ext\"],\n ha: [\"latin-ext\"],\n hr: [\"latin-ext\"],\n hu: [\"latin-ext\"],\n ig: [\"latin-ext\"],\n kk: [\"cyrillic\", \"cyrillic-ext\"],\n ku: [\"latin-ext\"],\n ky: [\"cyrillic\", \"cyrillic-ext\"],\n lt: [\"latin-ext\"],\n lv: [\"latin-ext\"],\n mk: [\"cyrillic\"],\n mn: [\"cyrillic\", \"cyrillic-ext\"],\n mt: [\"latin-ext\"],\n pl: [\"latin-ext\"],\n ro: [\"latin-ext\"],\n ru: [\"cyrillic\"],\n sk: [\"latin-ext\"],\n sl: [\"latin-ext\"],\n sr: [\"cyrillic\", \"latin-ext\"],\n tg: [\"cyrillic\", \"cyrillic-ext\"],\n tk: [\"latin-ext\"],\n tr: [\"latin-ext\"],\n tt: [\"cyrillic\", \"cyrillic-ext\"],\n uk: [\"cyrillic\"],\n uz: [\"cyrillic\", \"latin-ext\"],\n vi: [\"vietnamese\"],\n yo: [\"latin-ext\"],\n} satisfies Record<string, string[]>;\n\n/** Type guard: does `language` have an entry in the subset table? */\nconst isSubsetLanguage = (\n language: string\n): language is keyof typeof LOCALE_SUBSETS =>\n Object.hasOwn(LOCALE_SUBSETS, language);\n\n/**\n * Subsets a script subtag (`sr-Latn`, `az-Cyrl`) asks for on its own, so a\n * locale written in a script its language doesn't default to still loads it.\n */\nconst SCRIPT_SUBSETS = {\n cyrl: [\"cyrillic\"],\n latn: [\"latin-ext\"],\n} satisfies Record<string, string[]>;\n\n/** Type guard: does `script` have an entry in the script table? */\nconst isSubsetScript = (\n script: string\n): script is keyof typeof SCRIPT_SUBSETS =>\n Object.hasOwn(SCRIPT_SUBSETS, script);\n\n/** Google's listing order; keeps generated configs stable across runs. */\nconst SUBSET_ORDER = [\n \"latin\",\n \"latin-ext\",\n \"vietnamese\",\n \"cyrillic\",\n \"cyrillic-ext\",\n \"greek\",\n \"greek-ext\",\n];\n\n/** The shape of a config's `i18n` block the font builders read. */\nexport interface FontLocaleSource {\n locales: { code: string }[];\n}\n\n/** The locale codes an optional `i18n` block declares (none when absent). */\nexport const fontLocaleCodes = (i18n: FontLocaleSource | undefined): string[] =>\n i18n?.locales.map((locale) => locale.code) ?? [];\n\n/**\n * The subsets the site's locales need: `latin` always, plus each locale's\n * script. A site with no `i18n` block (or only Latin-1 languages) gets just\n * `latin` — Astro's own default — so its CSS and preloads don't change.\n */\nexport const localeFontSubsets = (locales: string[]): string[] => {\n const wanted = new Set([\"latin\"]);\n for (const locale of locales) {\n const [language = \"\", ...subtags] = locale.toLowerCase().split(\"-\");\n if (isSubsetLanguage(language)) {\n for (const subset of LOCALE_SUBSETS[language]) {\n wanted.add(subset);\n }\n }\n for (const subtag of subtags) {\n if (isSubsetScript(subtag)) {\n for (const subset of SCRIPT_SUBSETS[subtag]) {\n wanted.add(subset);\n }\n }\n }\n }\n return SUBSET_ORDER.filter((subset) => wanted.has(subset));\n};\n\n/**\n * Providers whose faces carry subset metadata, so `<Font preload>` can be\n * filtered by subset. Fontshare serves whole files with no subset split; a\n * subset filter there would match nothing and drop every preload.\n */\nconst SUBSET_PROVIDERS = new Set<RemoteFontProvider>([\n \"google\",\n \"bunny\",\n \"fontsource\",\n]);\n\n/** Kebab-case a family name into a slug (`\"Noto Sans JP\"` -> `\"noto-sans-jp\"`). */\nexport const slugifyFontName = (name: string): string =>\n name\n .toLowerCase()\n .replaceAll(/[^a-z0-9]+/gu, \"-\")\n // The collapse above leaves only single dashes, so no quantifiers needed\n // (an unanchored `-+$` backtracks quadratically on long dash runs).\n .replaceAll(/^-|-$/gu, \"\");\n\n/** The CSS variable Astro populates for a given font (shared across roles). */\nconst fontVar = (slug: string): string => `--blume-ff-${slug}`;\n\nconst SLOTS: FontSlot[] = [\"display\", \"body\", \"mono\"];\n\n/** The fallback category a role uses when a custom font does not pick one. */\nconst slotCategory = (slot: FontSlot): FontCategory =>\n slot === \"mono\" ? \"mono\" : \"sans\";\n\n/** Whether a slot value is the slug-string form (vs a custom font object). */\nconst isSlugValue = (value: FontValue): value is string =>\n typeof value === \"string\";\n\n/**\n * A slot value normalized into an entry, or null for an unknown slug string.\n * `subsets` is the locale-derived default a remote family loads when the\n * config does not pin its own.\n */\nconst resolveFontValue = (\n slot: FontSlot,\n value: FontValue,\n subsets: string[]\n): FontEntry | null => {\n if (isSlugValue(value)) {\n if (!isFontSlug(value)) {\n return null;\n }\n const def = GOOGLE_FONTS[value];\n return {\n cssVariable: fontVar(value),\n fallbacks: FALLBACKS[def.category],\n kind: \"remote\",\n name: def.family,\n provider: \"google\",\n subsets,\n weights: def.weights,\n };\n }\n const slug = slugifyFontName(value.name);\n const fallbacks = FALLBACKS[value.fallback ?? slotCategory(slot)];\n if (\"variants\" in value) {\n return {\n cssVariable: fontVar(slug),\n fallbacks,\n kind: \"local\",\n name: value.name,\n variants: value.variants,\n };\n }\n return {\n cssVariable: fontVar(slug),\n fallbacks,\n kind: \"remote\",\n name: value.name,\n provider: value.provider ?? \"google\",\n subsets: value.subsets ?? subsets,\n weights: value.weights ?? DEFAULT_REMOTE_WEIGHTS,\n };\n};\n\n/**\n * Merge two entries that resolved to the same CSS variable. The same remote\n * family configured twice unions its weights (so a custom `{ name: \"Inter\" }`\n * coexists with the curated `inter` default in another role); identical local\n * definitions collapse. Anything else is a config conflict worth failing on.\n */\nconst mergeFontEntries = (current: FontEntry, next: FontEntry): FontEntry => {\n if (\n current.kind === \"remote\" &&\n next.kind === \"remote\" &&\n current.provider === next.provider &&\n current.name === next.name\n ) {\n return {\n ...current,\n subsets: [...new Set([...current.subsets, ...next.subsets])],\n weights: [...new Set([...current.weights, ...next.weights])],\n };\n }\n if (\n current.kind === \"local\" &&\n next.kind === \"local\" &&\n current.name === next.name &&\n JSON.stringify(current.variants) === JSON.stringify(next.variants)\n ) {\n return current;\n }\n throw new Error(\n `theme.fonts: \"${next.name}\" conflicts with \"${current.name}\" — both resolve to the CSS variable \"${current.cssVariable}\" with different definitions. Rename one family or align their definitions.`\n );\n};\n\n/**\n * The unique Astro `fonts:` entries for the configured roles (deduped).\n * `locales` are the site's configured locale codes; they pick the subsets a\n * remote family loads unless its config pins `subsets` itself.\n */\nexport const buildFontEntries = (\n fonts: FontsConfig,\n locales: string[] = []\n): FontEntry[] => {\n if (!fonts) {\n return [];\n }\n const subsets = localeFontSubsets(locales);\n const entries = new Map<string, FontEntry>();\n for (const slot of SLOTS) {\n const value = fonts[slot];\n if (value === undefined) {\n continue;\n }\n const entry = resolveFontValue(slot, value, subsets);\n if (!entry) {\n continue;\n }\n const current = entries.get(entry.cssVariable);\n entries.set(\n entry.cssVariable,\n current ? mergeFontEntries(current, entry) : entry\n );\n }\n return [...entries.values()];\n};\n\n/** The slug backing a slot's CSS variable, or null for an unknown slug string. */\nconst slotSlug = (value: FontValue): string | null => {\n if (isSlugValue(value)) {\n return isFontSlug(value) ? value : null;\n }\n return slugifyFontName(value.name);\n};\n\n/**\n * The config-token CSS that points each role's `--blume-font-<role>-src` at the\n * Astro-populated family variable. Concatenated into the generated entry's\n * config tokens; empty when no fonts are set so defaults stay the system stacks.\n */\nexport const buildFontsCss = (fonts: FontsConfig): string => {\n if (!fonts) {\n return \"\";\n }\n const lines = SLOTS.flatMap((slot) => {\n const value = fonts[slot];\n if (value === undefined) {\n return [];\n }\n const slug = slotSlug(value);\n return slug ? [` --blume-font-${slot}-src: var(${fontVar(slug)});`] : [];\n });\n return lines.length > 0\n ? `/* Generated by Blume from theme.fonts. */\\n:root {\\n${lines.join(\"\\n\")}\\n}\\n`\n : \"\";\n};\n\n/**\n * Weights worth preloading per role — the faces above-the-fold text actually\n * renders in: body copy and UI chrome at 400/500, headings at 500/600, code at\n * 400. Every other face still loads on demand through its `@font-face` rule\n * (and `font-display: swap` never blocks text on it), so preloading the long\n * tail only competes with the critical CSS for bandwidth and pushes LCP out.\n */\nconst PRELOAD_WEIGHTS = {\n body: [400, 500],\n display: [500, 600],\n mono: [400],\n} satisfies Record<FontSlot, number[]>;\n\n/**\n * One `<Font>` render in the head: its CSS variable + the weights (and, for\n * providers that split faces by subset, the subsets) to preload. Local and\n * Fontshare faces carry no subset, so those entries leave `preloadSubsets`\n * unset and preload by weight alone.\n */\nexport interface FontHead {\n cssVariable: string;\n preloadSubsets?: string[];\n preloadWeights: number[];\n}\n\n/** The weights an entry's faces declare (`undefined` = inferred from files). */\nconst entryWeights = (entry: FontEntry): (number | string | undefined)[] =>\n entry.kind === \"remote\"\n ? entry.weights\n : entry.variants.map((variant) => variant.weight);\n\n/**\n * The role's preferred preload weights, narrowed to faces the family loads.\n * Variable ranges (`\"100..900\"`) and weight-inferred local files can serve any\n * weight, so they keep the preferred list; a family whose numeric weights miss\n * the preferred ones entirely preloads all of its faces instead — those are\n * what its text renders in.\n */\nconst preloadWeightsFor = (slot: FontSlot, entry: FontEntry): number[] => {\n const preferred = PRELOAD_WEIGHTS[slot];\n const weights = entryWeights(entry);\n const numeric = weights.filter(\n (weight): weight is number => typeof weight === \"number\"\n );\n const hits = preferred.filter((weight) => numeric.includes(weight));\n if (hits.length > 0) {\n return hits;\n }\n return numeric.length === weights.length ? numeric : preferred;\n};\n\n/**\n * The fonts to feed Astro's `<Font>` component in the document head, deduped\n * by CSS variable with preload weights unioned across the roles that share a\n * family (so `display` and `body` both set to Inter preload 400/500/600 once).\n */\nexport const configuredFonts = (\n fonts: FontsConfig,\n locales: string[] = []\n): FontHead[] => {\n if (!fonts) {\n return [];\n }\n const defaultSubsets = localeFontSubsets(locales);\n const heads = new Map<\n string,\n { subsets: Set<string> | null; weights: Set<number> }\n >();\n for (const slot of SLOTS) {\n const value = fonts[slot];\n if (value === undefined) {\n continue;\n }\n const entry = resolveFontValue(slot, value, defaultSubsets);\n if (!entry) {\n continue;\n }\n const head = heads.get(entry.cssVariable) ?? {\n subsets: null,\n weights: new Set<number>(),\n };\n for (const weight of preloadWeightsFor(slot, entry)) {\n head.weights.add(weight);\n }\n if (entry.kind === \"remote\" && SUBSET_PROVIDERS.has(entry.provider)) {\n head.subsets ??= new Set();\n for (const subset of entry.subsets) {\n head.subsets.add(subset);\n }\n }\n heads.set(entry.cssVariable, head);\n }\n return [...heads].map(([cssVariable, head]) => {\n const font: FontHead = {\n cssVariable,\n preloadWeights: [...head.weights].toSorted((a, b) => a - b),\n };\n if (head.subsets) {\n font.preloadSubsets = [...head.subsets];\n }\n return font;\n });\n};\n",
|
|
13
|
-
"/**\n * Repository URL derivation for `config.github`.\n *\n * Every repo-derived link — the header mark, per-page edit links, the agent\n * manifest's `repository` — is built from `host`, which defaults to github.com\n * but accepts a GitHub Enterprise origin so self-hosted and data-resident\n * installations get working links instead of ones pointing at the public site.\n *\n * The REST base is derived from the host unless `api` is set explicitly, since\n * the two Enterprise flavors expose it differently: Enterprise Cloud with data\n * residency serves it from an `api.` subdomain of the same host, Enterprise\n * Server from `/api/v3` on the host itself.\n *\n * `host` arrives as a bare origin and `api` as an origin plus path, both with\n * no trailing slash — the config schema normalizes them — so nothing here\n * re-trims user input.\n */\n\nimport type { ResolvedConfig } from \"./schema.ts\";\n\n/** The resolved `github` block, which the config leaves optional. */\nexport type GithubTarget = NonNullable<ResolvedConfig[\"github\"]>;\n\n/** The public instance every `host` defaults to. */\nexport const PUBLIC_HOST_URL = \"https://github.com\";\n/** The public instance's REST base. */\nexport const PUBLIC_API_URL = \"https://api.github.com\";\nconst PUBLIC_HOSTNAME = \"github.com\";\n/** Enterprise Cloud with data residency: `<tenant>.ghe.com`. */\nconst DATA_RESIDENCY_SUFFIX = \".ghe.com\";\n\n/** `owner/repo` — the bare slug, with no origin attached. */\nconst repoSlug = (github: Pick<GithubTarget, \"owner\" | \"repo\">): string =>\n `${github.owner}/${github.repo}`;\n\n/** The repository's web URL, e.g. `https://github.com/acme/docs`. */\nexport const repoUrl = (\n github: Pick<GithubTarget, \"host\" | \"owner\" | \"repo\">\n): string => `${github.host}/${repoSlug(github)}`;\n\n/** The base every edit link extends with a repo-relative path. */\nexport const editBaseUrl = (\n github: Pick<GithubTarget, \"branch\" | \"host\" | \"owner\" | \"repo\">\n): string => `${repoUrl(github)}/edit/${github.branch}`;\n\n/**\n * The REST API base for `host`. An explicit `api` always wins; otherwise\n * github.com (and any subdomain of it, `www.` say) maps to api.github.com, a\n * data-residency tenant to its `api.` subdomain, and anything else is treated\n * as Enterprise Server (`/api/v3`).\n */\nexport const apiUrl = (github: Pick<GithubTarget, \"api\" | \"host\">): string => {\n if (github.api) {\n return github.api;\n }\n const url = new URL(github.host);\n const { hostname } = url;\n if (\n hostname === PUBLIC_HOSTNAME ||\n hostname.endsWith(`.${PUBLIC_HOSTNAME}`)\n ) {\n return PUBLIC_API_URL;\n }\n if (hostname.endsWith(DATA_RESIDENCY_SUFFIX)) {\n // Rebuilt through the URL so a non-default port survives alongside the\n // subdomain rather than being dropped from the API base alone.\n url.hostname = `api.${hostname}`;\n return url.origin;\n }\n return `${github.host}/api/v3`;\n};\n",
|
|
14
|
-
"import { z } from \"zod\";\n\nimport { UI_PACKS } from \"./ui-packs/index.ts\";\n\n/**\n * Translatable UI chrome strings.\n *\n * The schema is the single source of truth: each field's `.default()` is the\n * English baseline, so `EN_UI = uiStringsSchema.parse({})`. Shipped packs and\n * user overrides merge on top (see {@link resolveUIStrings}). Grouped by surface\n * to keep the runtime payload and component props readable.\n */\nconst uiStringsObject = z.object({\n actions: z\n .object({\n addToCursor: z.string().default(\"Add to Cursor\"),\n addToVscode: z.string().default(\"Add to VS Code\"),\n askAI: z.string().default(\"Ask AI about this page\"),\n connectMcp: z.string().default(\"Connect to MCP\"),\n copied: z.string().default(\"Copied!\"),\n copyClaudeCode: z.string().default(\"Copy Claude Code command\"),\n copyCode: z.string().default(\"Copy code\"),\n copyCodex: z.string().default(\"Copy Codex command\"),\n copyFailed: z.string().default(\"Copy failed\"),\n copyMarkdown: z.string().default(\"Copy as Markdown\"),\n copyServerUrl: z.string().default(\"Copy server URL\"),\n edit: z.string().default(\"Edit on GitHub\"),\n export: z.string().default(\"Export\"),\n exportEpub: z.string().default(\"Export to EPUB\"),\n exportPdf: z.string().default(\"Export to PDF\"),\n generating: z.string().default(\"Generating…\"),\n // `{name}` is replaced with the provider's brand name at render time.\n openIn: z.string().default(\"Open in {name}\"),\n openInChat: z.string().default(\"Open in chat\"),\n // The prompt handed to the chat provider; `{url}` is replaced with the\n // page's raw-Markdown URL at load time.\n openInChatPrompt: z\n .string()\n .default(\"Read {url} so I can ask you questions about this page.\"),\n scrollToTop: z.string().default(\"Scroll to top\"),\n })\n .prefault({}),\n ask: z\n .object({\n ai: z.string().default(\"AI\"),\n clear: z.string().default(\"Clear conversation\"),\n close: z.string().default(\"Close\"),\n copy: z.string().default(\"Copy conversation\"),\n empty: z.string().default(\"Ask a question about the docs.\"),\n error: z.string().default(\"Sorry, something went wrong.\"),\n label: z.string().default(\"Ask a question\"),\n placeholder: z.string().default(\"Ask a question…\"),\n send: z.string().default(\"Send\"),\n tip: z.string().default(\"Tip: You can open and close chat with\"),\n title: z.string().default(\"Ask AI\"),\n you: z.string().default(\"You\"),\n })\n .prefault({}),\n banner: z\n .object({\n dismiss: z.string().default(\"Dismiss announcement\"),\n })\n .prefault({}),\n changelog: z\n .object({\n description: z\n .string()\n .default(\n \"Product updates, new features, and fixes from every release.\"\n ),\n // `{version}` is replaced with the major line (\"2.x\") at render time.\n showReleases: z.string().default(\"Show {version} releases\"),\n title: z.string().default(\"Changelog\"),\n })\n .prefault({}),\n content: z\n .object({\n diagramError: z.string().default(\"Could not render this diagram.\"),\n })\n .prefault({}),\n feedback: z\n .object({\n no: z.string().default(\"No\"),\n question: z.string().default(\"Was this page helpful?\"),\n thanks: z.string().default(\"Thanks for your feedback!\"),\n yes: z.string().default(\"Yes\"),\n })\n .prefault({}),\n languageSwitcher: z\n .object({\n label: z.string().default(\"Language\"),\n untranslated: z.string().default(\"Not translated\"),\n })\n .prefault({}),\n nav: z\n .object({\n back: z.string().default(\"Back\"),\n breadcrumb: z.string().default(\"Breadcrumb\"),\n closeNavigation: z.string().default(\"Close navigation\"),\n deprecated: z.string().default(\"deprecated\"),\n featured: z.string().default(\"Featured\"),\n githubRepository: z.string().default(\"GitHub repository\"),\n navigation: z.string().default(\"Navigation\"),\n primary: z.string().default(\"Primary\"),\n sections: z.string().default(\"Sections\"),\n toggleNavigation: z.string().default(\"Toggle navigation\"),\n toggleTheme: z.string().default(\"Toggle color theme\"),\n })\n .prefault({}),\n notFound: z\n .object({\n /** Label of the OpenAPI description link on the Markdown/JSON 404. */\n api: z.string().default(\"JSON API description (openapi.json)\"),\n description: z\n .string()\n .default(\"We couldn't find the page you're looking for.\"),\n home: z.string().default(\"Back to home\"),\n /** Label of the llms.txt link on the 404 page. */\n llms: z.string().default(\"Docs index for AI agents (llms.txt)\"),\n /** Label of the sitemap link on the 404 page. */\n sitemap: z.string().default(\"Sitemap\"),\n /** Heading over the recovery links (sections, sitemap, llms.txt). */\n suggestions: z.string().default(\"Where to look next\"),\n title: z.string().default(\"Page not found\"),\n })\n .prefault({}),\n page: z\n .object({\n lastUpdated: z.string().default(\"Last updated on\"),\n next: z.string().default(\"Next\"),\n pagination: z.string().default(\"Pagination\"),\n previous: z.string().default(\"Previous\"),\n skipToContent: z.string().default(\"Skip to content\"),\n })\n .prefault({}),\n search: z\n .object({\n all: z.string().default(\"All\"),\n allLanguages: z.string().default(\"All languages\"),\n allVersions: z.string().default(\"All versions\"),\n askAi: z.string().default(\"Ask AI\"),\n askAiHint: z.string().default(\"Get an instant answer from AI\"),\n button: z.string().default(\"Search\"),\n devOnly: z\n .string()\n .default(\"Search is available in the production build.\"),\n error: z.string().default(\"Something went wrong. Please try again.\"),\n label: z.string().default(\"Search docs\"),\n navigate: z.string().default(\"navigate\"),\n noResults: z.string().default(\"No results found.\"),\n open: z.string().default(\"open\"),\n placeholder: z.string().default(\"Search documentation…\"),\n popular: z.string().default(\"Popular\"),\n preview: z.string().default(\"preview\"),\n results: z.string().default(\"Results\"),\n })\n .prefault({}),\n toc: z\n .object({\n title: z.string().default(\"On this page\"),\n })\n .prefault({}),\n versions: z\n .object({\n latest: z.string().default(\"Go to latest\"),\n // `{version}` is replaced with the archived version's label at render time.\n notice: z\n .string()\n .default(\n \"You're viewing documentation for {version}. It may be out of date.\"\n ),\n switcher: z.string().default(\"Version\"),\n })\n .prefault({}),\n});\n\nexport const uiStringsSchema = uiStringsObject.prefault({});\n\n/** A fully-resolved dictionary; every key present. */\nexport type UIStrings = z.infer<typeof uiStringsObject>;\n\n/**\n * The English baseline, derived from the schema defaults. The groups use\n * `.prefault({})` (not `.default({})`) so an absent group is still parsed\n * through its inner type and every field default applies — under Zod 4's\n * `.default()` semantics a bare `parse({})` would collapse each group to a\n * literal `{}` and the runtime would silently render blank chrome.\n */\nexport const EN_UI: UIStrings = uiStringsObject.parse({});\n\n/**\n * A partial override: `{ group: { key: \"translation\" } }`. Validated loosely\n * (object of objects of strings) so packs and user config can supply only the\n * keys they translate. Unknown groups/keys merge harmlessly.\n */\nexport const uiStringsOverrideSchema = z.record(\n z.string(),\n z.record(z.string(), z.string())\n);\n\nexport type UIStringsOverride = z.infer<typeof uiStringsOverrideSchema>;\n\n/** Per-locale UI overrides supplied in `i18n.ui`. */\nexport const uiLocaleOverridesSchema = z.record(\n z.string(),\n uiStringsOverrideSchema\n);\n\n/** Merge an override's string leaves onto a base dictionary (two levels deep). */\nconst mergeUI = (base: UIStrings, override?: UIStringsOverride): UIStrings => {\n if (!override) {\n return base;\n }\n const out: UIStrings = structuredClone(base);\n for (const [group, values] of Object.entries(override)) {\n // SAFETY: UIStrings is exactly two levels of string leaves, and the\n // override schema mirrors its groups, so `group` indexes a string map.\n const target = (out as Record<string, Record<string, string>>)[group];\n if (target && values) {\n Object.assign(target, values);\n }\n }\n return out;\n};\n\n/**\n * Built-in translation packs, one module per locale under {@link ./ui-packs}.\n * English is the schema baseline (no pack); every other locale ships a starter\n * pack so adopters get translated chrome out of the box. Re-exported here so the\n * resolver and existing imports keep a single entry point.\n */\nexport { UI_PACKS } from \"./ui-packs/index.ts\";\n\n/** Case-insensitive index for region-variant lookup (`pt-br` -> `pt-BR`). */\nconst PACKS_BY_LOWER: Record<string, UIStringsOverride> = Object.fromEntries(\n Object.entries(UI_PACKS).map(([code, pack]) => [code.toLowerCase(), pack])\n);\n\n/**\n * Find the built-in pack for a locale code, tolerating case and region subtags:\n * an exact match wins, then a case-insensitive match (`pt-br` -> `pt-BR`), then\n * the base language (`fr-CA` -> `fr`). So any reasonable code gets sensible\n * chrome without the project having to match our exact casing.\n */\nconst packFor = (code: string): UIStringsOverride | undefined => {\n const lower = code.toLowerCase();\n return (\n UI_PACKS[code] ??\n PACKS_BY_LOWER[lower] ??\n PACKS_BY_LOWER[lower.split(/[-_]/u)[0] ?? lower]\n );\n};\n\n/**\n * Resolve the active dictionary for a locale. Layers, in order:\n * English baseline ← default-locale pack ← default-locale override ←\n * locale pack ← locale override. So a missing key falls back to the default\n * locale's translation, then to English.\n */\nexport const resolveUIStrings = (\n locale: string,\n options: {\n defaultLocale: string;\n overrides?: Record<string, UIStringsOverride>;\n }\n): UIStrings => {\n const { defaultLocale, overrides } = options;\n let dict = EN_UI;\n dict = mergeUI(dict, packFor(defaultLocale));\n dict = mergeUI(dict, overrides?.[defaultLocale]);\n if (locale !== defaultLocale) {\n dict = mergeUI(dict, packFor(locale));\n dict = mergeUI(dict, overrides?.[locale]);\n }\n return dict;\n};\n",
|
|
15
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Arabic (ar) UI strings. */\nexport const ar: UIStringsOverride = {\n actions: {\n addToCursor: \"إضافة إلى Cursor\",\n addToVscode: \"إضافة إلى VS Code\",\n askAI: \"اسأل الذكاء الاصطناعي عن هذه الصفحة\",\n connectMcp: \"الاتصال بـ MCP\",\n copied: \"تم النسخ!\",\n copyClaudeCode: \"نسخ أمر Claude Code\",\n copyCode: \"نسخ الكود\",\n copyCodex: \"نسخ أمر Codex\",\n copyFailed: \"فشل النسخ\",\n copyMarkdown: \"نسخ بصيغة Markdown\",\n copyServerUrl: \"نسخ عنوان URL للخادم\",\n edit: \"التعديل على GitHub\",\n export: \"تصدير\",\n exportEpub: \"التصدير إلى EPUB\",\n exportPdf: \"التصدير إلى PDF\",\n generating: \"جارٍ الإنشاء…\",\n openIn: \"فتح في {name}\",\n openInChat: \"فتح في المحادثة\",\n openInChatPrompt: \"اقرأ {url} حتى أتمكن من طرح أسئلة حول هذه الصفحة.\",\n scrollToTop: \"العودة إلى الأعلى\",\n },\n ask: {\n ai: \"الذكاء الاصطناعي\",\n clear: \"مسح المحادثة\",\n close: \"إغلاق\",\n copy: \"نسخ المحادثة\",\n empty: \"اطرح سؤالاً حول الوثائق.\",\n error: \"عذراً، حدث خطأ ما.\",\n label: \"اطرح سؤالاً\",\n placeholder: \"اطرح سؤالاً…\",\n send: \"إرسال\",\n tip: \"نصيحة: يمكنك فتح المحادثة وإغلاقها باستخدام\",\n title: \"اسأل الذكاء الاصطناعي\",\n you: \"أنت\",\n },\n banner: { dismiss: \"إغلاق الإعلان\" },\n changelog: {\n description: \"تحديثات المنتج وملاحظات الإصدارات.\",\n showReleases: \"عرض إصدارات {version}\",\n title: \"سجل التغييرات\",\n },\n content: { diagramError: \"تعذّر عرض هذا المخطط.\" },\n feedback: {\n no: \"لا\",\n question: \"هل كانت هذه الصفحة مفيدة؟\",\n thanks: \"شكراً على ملاحظاتك!\",\n yes: \"نعم\",\n },\n languageSwitcher: { label: \"اللغة\", untranslated: \"غير مترجم\" },\n nav: {\n back: \"رجوع\",\n breadcrumb: \"مسار التنقل\",\n closeNavigation: \"إغلاق التنقل\",\n deprecated: \"مهمل\",\n featured: \"مميز\",\n githubRepository: \"مستودع GitHub\",\n navigation: \"التنقل\",\n primary: \"رئيسي\",\n sections: \"الأقسام\",\n toggleNavigation: \"تبديل التنقل\",\n toggleTheme: \"تبديل سمة الألوان\",\n },\n notFound: {\n description: \"لم نتمكن من العثور على الصفحة التي تبحث عنها.\",\n home: \"العودة إلى الصفحة الرئيسية\",\n title: \"الصفحة غير موجودة\",\n },\n page: {\n lastUpdated: \"آخر تحديث في\",\n next: \"التالي\",\n pagination: \"ترقيم الصفحات\",\n previous: \"السابق\",\n skipToContent: \"الانتقال إلى المحتوى\",\n },\n search: {\n all: \"الكل\",\n allLanguages: \"جميع اللغات\",\n askAi: \"اسأل الذكاء الاصطناعي\",\n askAiHint: \"احصل على إجابة فورية من الذكاء الاصطناعي\",\n button: \"بحث\",\n devOnly: \"البحث متاح في إصدار الإنتاج.\",\n error: \"حدث خطأ ما. يرجى المحاولة مرة أخرى.\",\n label: \"البحث في الوثائق\",\n navigate: \"تنقل\",\n noResults: \"لم يتم العثور على نتائج.\",\n open: \"فتح\",\n placeholder: \"البحث في الوثائق…\",\n popular: \"شائع\",\n preview: \"معاينة\",\n results: \"النتائج\",\n },\n toc: { title: \"في هذه الصفحة\" },\n};\n",
|
|
16
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Bulgarian (bg) UI strings. */\nexport const bg: UIStringsOverride = {\n actions: {\n addToCursor: \"Добави в Cursor\",\n addToVscode: \"Добави във VS Code\",\n askAI: \"Попитай ИИ за тази страница\",\n connectMcp: \"Свържи се с MCP\",\n copied: \"Копирано!\",\n copyClaudeCode: \"Копирай командата на Claude Code\",\n copyCode: \"Копирай кода\",\n copyCodex: \"Копирай командата на Codex\",\n copyFailed: \"Копирането не бе успешно\",\n copyMarkdown: \"Копирай като Markdown\",\n copyServerUrl: \"Копирай URL на сървъра\",\n edit: \"Редактирай в GitHub\",\n export: \"Експортирай\",\n exportEpub: \"Експортирай в EPUB\",\n exportPdf: \"Експортирай в PDF\",\n generating: \"Генериране…\",\n openIn: \"Отвори в {name}\",\n openInChat: \"Отвори в чата\",\n openInChatPrompt:\n \"Прочетете {url}, за да мога да задавам въпроси за тази страница.\",\n scrollToTop: \"Нагоре\",\n },\n ask: {\n ai: \"ИИ\",\n clear: \"Изчисти разговора\",\n close: \"Затвори\",\n copy: \"Копирай разговора\",\n empty: \"Задайте въпрос за документацията.\",\n error: \"Съжаляваме, нещо се обърка.\",\n label: \"Задайте въпрос\",\n placeholder: \"Задайте въпрос…\",\n send: \"Изпрати\",\n tip: \"Съвет: Можете да отваряте и затваряте чата с\",\n title: \"Попитай ИИ\",\n you: \"Вие\",\n },\n banner: { dismiss: \"Затваряне на съобщението\" },\n changelog: {\n description: \"Актуализации на продукта и бележки към изданията.\",\n showReleases: \"Покажи изданията на {version}\",\n title: \"Дневник на промените\",\n },\n content: { diagramError: \"Тази диаграма не можа да бъде показана.\" },\n feedback: {\n no: \"Не\",\n question: \"Беше ли полезна тази страница?\",\n thanks: \"Благодарим за обратната връзка!\",\n yes: \"Да\",\n },\n languageSwitcher: { label: \"Език\", untranslated: \"Непреведено\" },\n nav: {\n back: \"Назад\",\n breadcrumb: \"Навигационна пътека\",\n closeNavigation: \"Затвори навигацията\",\n deprecated: \"остаряло\",\n featured: \"Препоръчано\",\n githubRepository: \"Хранилище в GitHub\",\n navigation: \"Навигация\",\n primary: \"Основно\",\n sections: \"Раздели\",\n toggleNavigation: \"Превключи навигацията\",\n toggleTheme: \"Превключи цветовата тема\",\n },\n notFound: {\n description: \"Не успяхме да намерим страницата, която търсите.\",\n home: \"Обратно към началната страница\",\n title: \"Страницата не е намерена\",\n },\n page: {\n lastUpdated: \"Последна актуализация\",\n next: \"Напред\",\n pagination: \"Пагинация\",\n previous: \"Назад\",\n skipToContent: \"Към съдържанието\",\n },\n search: {\n all: \"Всички\",\n allLanguages: \"Всички езици\",\n askAi: \"Попитай ИИ\",\n askAiHint: \"Получете незабавен отговор от ИИ\",\n button: \"Търсене\",\n devOnly: \"Търсенето е достъпно в производствената компилация.\",\n error: \"Нещо се обърка. Моля, опитайте отново.\",\n label: \"Търсене в документацията\",\n navigate: \"навигация\",\n noResults: \"Няма намерени резултати.\",\n open: \"отвори\",\n placeholder: \"Търсене в документацията…\",\n popular: \"Популярни\",\n preview: \"преглед\",\n results: \"Резултати\",\n },\n toc: { title: \"На тази страница\" },\n};\n",
|
|
17
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Bengali (bn) UI strings. */\nexport const bn: UIStringsOverride = {\n actions: {\n addToCursor: \"Cursor-এ যোগ করুন\",\n addToVscode: \"VS Code-এ যোগ করুন\",\n askAI: \"এই পৃষ্ঠা সম্পর্কে AI-কে জিজ্ঞাসা করুন\",\n connectMcp: \"MCP-তে সংযোগ করুন\",\n copied: \"অনুলিপি করা হয়েছে!\",\n copyClaudeCode: \"Claude Code কমান্ড অনুলিপি করুন\",\n copyCode: \"কোড অনুলিপি করুন\",\n copyCodex: \"Codex কমান্ড অনুলিপি করুন\",\n copyFailed: \"অনুলিপি ব্যর্থ হয়েছে\",\n copyMarkdown: \"Markdown হিসেবে অনুলিপি করুন\",\n copyServerUrl: \"সার্ভার URL অনুলিপি করুন\",\n edit: \"GitHub-এ সম্পাদনা করুন\",\n export: \"এক্সপোর্ট করুন\",\n exportEpub: \"EPUB-এ এক্সপোর্ট করুন\",\n exportPdf: \"PDF-এ এক্সপোর্ট করুন\",\n generating: \"তৈরি হচ্ছে…\",\n openIn: \"{name}-এ খুলুন\",\n openInChat: \"চ্যাটে খুলুন\",\n openInChatPrompt: \"{url} পড়ুন, যাতে আমি এই পৃষ্ঠা সম্পর্কে প্রশ্ন করতে পারি।\",\n scrollToTop: \"উপরে যান\",\n },\n ask: {\n ai: \"AI\",\n clear: \"কথোপকথন মুছুন\",\n close: \"বন্ধ করুন\",\n copy: \"কথোপকথন অনুলিপি করুন\",\n empty: \"ডকুমেন্টেশন সম্পর্কে একটি প্রশ্ন করুন।\",\n error: \"দুঃখিত, কিছু একটা ভুল হয়েছে।\",\n label: \"একটি প্রশ্ন করুন\",\n placeholder: \"একটি প্রশ্ন করুন…\",\n send: \"পাঠান\",\n tip: \"টিপ: চ্যাট খুলতে ও বন্ধ করতে চাপুন\",\n title: \"AI-কে জিজ্ঞাসা করুন\",\n you: \"আপনি\",\n },\n banner: { dismiss: \"ঘোষণা বন্ধ করুন\" },\n changelog: {\n description: \"পণ্য আপডেট এবং রিলিজ নোট।\",\n showReleases: \"{version} রিলিজ দেখান\",\n title: \"পরিবর্তন লগ\",\n },\n content: { diagramError: \"এই ডায়াগ্রামটি রেন্ডার করা যায়নি।\" },\n feedback: {\n no: \"না\",\n question: \"এই পৃষ্ঠাটি কি সহায়ক ছিল?\",\n thanks: \"আপনার মতামতের জন্য ধন্যবাদ!\",\n yes: \"হ্যাঁ\",\n },\n languageSwitcher: { label: \"ভাষা\", untranslated: \"অনূদিত নয়\" },\n nav: {\n back: \"ফিরে যান\",\n breadcrumb: \"ব্রেডক্রাম্ব\",\n closeNavigation: \"নেভিগেশন বন্ধ করুন\",\n deprecated: \"অপ্রচলিত\",\n featured: \"ফিচার্ড\",\n githubRepository: \"GitHub রিপোজিটরি\",\n navigation: \"নেভিগেশন\",\n primary: \"প্রধান\",\n sections: \"বিভাগসমূহ\",\n toggleNavigation: \"নেভিগেশন টগল করুন\",\n toggleTheme: \"রঙের থিম টগল করুন\",\n },\n notFound: {\n description: \"আপনি যে পৃষ্ঠাটি খুঁজছেন তা আমরা খুঁজে পাইনি।\",\n home: \"হোমে ফিরে যান\",\n title: \"পৃষ্ঠা পাওয়া যায়নি\",\n },\n page: {\n lastUpdated: \"সর্বশেষ আপডেট\",\n next: \"পরবর্তী\",\n pagination: \"পেজিনেশন\",\n previous: \"পূর্ববর্তী\",\n skipToContent: \"বিষয়বস্তুতে যান\",\n },\n search: {\n all: \"সব\",\n allLanguages: \"সব ভাষা\",\n askAi: \"AI-কে জিজ্ঞাসা করুন\",\n askAiHint: \"AI থেকে তাৎক্ষণিক উত্তর পান\",\n button: \"অনুসন্ধান\",\n devOnly: \"অনুসন্ধান প্রোডাকশন বিল্ডে উপলব্ধ।\",\n error: \"কিছু একটা ভুল হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।\",\n label: \"ডকুমেন্টেশন অনুসন্ধান করুন\",\n navigate: \"নেভিগেট\",\n noResults: \"কোনো ফলাফল পাওয়া যায়নি।\",\n open: \"খুলুন\",\n placeholder: \"ডকুমেন্টেশন অনুসন্ধান করুন…\",\n popular: \"জনপ্রিয়\",\n preview: \"প্রিভিউ\",\n results: \"ফলাফল\",\n },\n toc: { title: \"এই পৃষ্ঠায়\" },\n};\n",
|
|
18
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Catalan (ca) UI strings. */\nexport const ca: UIStringsOverride = {\n actions: {\n addToCursor: \"Afegeix a Cursor\",\n addToVscode: \"Afegeix a VS Code\",\n askAI: \"Pregunta a la IA sobre aquesta pàgina\",\n connectMcp: \"Connecta a MCP\",\n copied: \"Copiat!\",\n copyClaudeCode: \"Copia l'ordre de Claude Code\",\n copyCode: \"Copia el codi\",\n copyCodex: \"Copia l'ordre de Codex\",\n copyFailed: \"No s'ha pogut copiar\",\n copyMarkdown: \"Copia com a Markdown\",\n copyServerUrl: \"Copia l'URL del servidor\",\n edit: \"Edita a GitHub\",\n export: \"Exporta\",\n exportEpub: \"Exporta a EPUB\",\n exportPdf: \"Exporta a PDF\",\n generating: \"S'està generant…\",\n openIn: \"Obre a {name}\",\n openInChat: \"Obre al xat\",\n openInChatPrompt:\n \"Llegeix {url} perquè pugui fer-te preguntes sobre aquesta pàgina.\",\n scrollToTop: \"Torna a dalt\",\n },\n ask: {\n ai: \"IA\",\n clear: \"Esborra la conversa\",\n close: \"Tanca\",\n copy: \"Copia la conversa\",\n empty: \"Fes una pregunta sobre la documentació.\",\n error: \"Ho sentim, alguna cosa ha anat malament.\",\n label: \"Fes una pregunta\",\n placeholder: \"Fes una pregunta…\",\n send: \"Envia\",\n tip: \"Consell: pots obrir i tancar el xat amb\",\n title: \"Pregunta a la IA\",\n you: \"Tu\",\n },\n banner: { dismiss: \"Tanca l'anunci\" },\n changelog: {\n description: \"Actualitzacions del producte i notes de la versió.\",\n showReleases: \"Mostra les versions {version}\",\n title: \"Registre de canvis\",\n },\n content: {\n diagramError: \"No s'ha pogut mostrar aquest diagrama.\",\n },\n feedback: {\n no: \"No\",\n question: \"Aquesta pàgina t'ha estat útil?\",\n thanks: \"Gràcies pels teus comentaris!\",\n yes: \"Sí\",\n },\n languageSwitcher: { label: \"Idioma\", untranslated: \"Sense traduir\" },\n nav: {\n back: \"Enrere\",\n breadcrumb: \"Ruta de navegació\",\n closeNavigation: \"Tanca la navegació\",\n deprecated: \"obsolet\",\n featured: \"Destacat\",\n githubRepository: \"Repositori de GitHub\",\n navigation: \"Navegació\",\n primary: \"Principal\",\n sections: \"Seccions\",\n toggleNavigation: \"Mostra o amaga la navegació\",\n toggleTheme: \"Canvia el tema de color\",\n },\n notFound: {\n description: \"No hem pogut trobar la pàgina que cerques.\",\n home: \"Torna a l'inici\",\n title: \"Pàgina no trobada\",\n },\n page: {\n lastUpdated: \"Última actualització el\",\n next: \"Següent\",\n pagination: \"Paginació\",\n previous: \"Anterior\",\n skipToContent: \"Vés al contingut\",\n },\n search: {\n all: \"Tots\",\n allLanguages: \"Tots els idiomes\",\n askAi: \"Pregunta a la IA\",\n askAiHint: \"Obtén una resposta instantània de la IA\",\n button: \"Cerca\",\n devOnly: \"La cerca està disponible a la compilació de producció.\",\n error: \"Alguna cosa ha anat malament. Torna-ho a provar.\",\n label: \"Cerca a la documentació\",\n navigate: \"navega\",\n noResults: \"No s'ha trobat cap resultat.\",\n open: \"obre\",\n placeholder: \"Cerca a la documentació…\",\n popular: \"Populars\",\n preview: \"previsualitza\",\n results: \"Resultats\",\n },\n toc: { title: \"En aquesta pàgina\" },\n};\n",
|
|
19
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Czech (cs) UI strings. */\nexport const cs: UIStringsOverride = {\n actions: {\n addToCursor: \"Přidat do Cursoru\",\n addToVscode: \"Přidat do VS Code\",\n askAI: \"Zeptat se AI na tuto stránku\",\n connectMcp: \"Připojit k MCP\",\n copied: \"Zkopírováno!\",\n copyClaudeCode: \"Kopírovat příkaz Claude Code\",\n copyCode: \"Kopírovat kód\",\n copyCodex: \"Kopírovat příkaz Codex\",\n copyFailed: \"Kopírování se nezdařilo\",\n copyMarkdown: \"Kopírovat jako Markdown\",\n copyServerUrl: \"Kopírovat URL serveru\",\n edit: \"Upravit na GitHubu\",\n export: \"Exportovat\",\n exportEpub: \"Exportovat do EPUB\",\n exportPdf: \"Exportovat do PDF\",\n generating: \"Generování…\",\n openIn: \"Otevřít v {name}\",\n openInChat: \"Otevřít v chatu\",\n openInChatPrompt: \"Přečtěte si {url}, ať se mohu ptát na tuto stránku.\",\n scrollToTop: \"Zpět nahoru\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Vymazat konverzaci\",\n close: \"Zavřít\",\n copy: \"Kopírovat konverzaci\",\n empty: \"Zeptejte se na dokumentaci.\",\n error: \"Omlouváme se, něco se pokazilo.\",\n label: \"Položit otázku\",\n placeholder: \"Položit otázku…\",\n send: \"Odeslat\",\n tip: \"Tip: Chat můžete otevřít a zavřít pomocí\",\n title: \"Zeptat se AI\",\n you: \"Vy\",\n },\n banner: { dismiss: \"Zavřít oznámení\" },\n changelog: {\n description: \"Novinky produktu a poznámky k vydání.\",\n showReleases: \"Zobrazit vydání {version}\",\n title: \"Seznam změn\",\n },\n content: { diagramError: \"Tento diagram se nepodařilo vykreslit.\" },\n feedback: {\n no: \"Ne\",\n question: \"Byla tato stránka užitečná?\",\n thanks: \"Děkujeme za zpětnou vazbu!\",\n yes: \"Ano\",\n },\n languageSwitcher: { label: \"Jazyk\", untranslated: \"Nepřeloženo\" },\n nav: {\n back: \"Zpět\",\n breadcrumb: \"Drobečková navigace\",\n closeNavigation: \"Zavřít navigaci\",\n deprecated: \"zastaralé\",\n featured: \"Doporučené\",\n githubRepository: \"Repozitář na GitHubu\",\n navigation: \"Navigace\",\n primary: \"Hlavní\",\n sections: \"Sekce\",\n toggleNavigation: \"Přepnout navigaci\",\n toggleTheme: \"Přepnout barevný motiv\",\n },\n notFound: {\n description: \"Stránku, kterou hledáte, se nepodařilo najít.\",\n home: \"Zpět na úvodní stránku\",\n title: \"Stránka nenalezena\",\n },\n page: {\n lastUpdated: \"Naposledy aktualizováno\",\n next: \"Další\",\n pagination: \"Stránkování\",\n previous: \"Předchozí\",\n skipToContent: \"Přejít k obsahu\",\n },\n search: {\n all: \"Vše\",\n allLanguages: \"Všechny jazyky\",\n askAi: \"Zeptat se AI\",\n askAiHint: \"Získejte okamžitou odpověď od AI\",\n button: \"Hledat\",\n devOnly: \"Vyhledávání je dostupné v produkčním buildu.\",\n error: \"Něco se pokazilo. Zkuste to prosím znovu.\",\n label: \"Prohledat dokumentaci\",\n navigate: \"navigace\",\n noResults: \"Nebyly nalezeny žádné výsledky.\",\n open: \"otevřít\",\n placeholder: \"Prohledat dokumentaci…\",\n popular: \"Populární\",\n preview: \"náhled\",\n results: \"Výsledky\",\n },\n toc: { title: \"Na této stránce\" },\n};\n",
|
|
20
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Danish (da) UI strings. */\nexport const da: UIStringsOverride = {\n actions: {\n addToCursor: \"Føj til Cursor\",\n addToVscode: \"Føj til VS Code\",\n askAI: \"Spørg AI om denne side\",\n connectMcp: \"Opret forbindelse til MCP\",\n copied: \"Kopieret!\",\n copyClaudeCode: \"Kopiér Claude Code-kommando\",\n copyCode: \"Kopiér kode\",\n copyCodex: \"Kopiér Codex-kommando\",\n copyFailed: \"Kopiering mislykkedes\",\n copyMarkdown: \"Kopiér som Markdown\",\n copyServerUrl: \"Kopiér server-URL\",\n edit: \"Rediger på GitHub\",\n export: \"Eksportér\",\n exportEpub: \"Eksportér til EPUB\",\n exportPdf: \"Eksportér til PDF\",\n generating: \"Genererer…\",\n openIn: \"Åbn i {name}\",\n openInChat: \"Åbn i chat\",\n openInChatPrompt: \"Læs {url}, så jeg kan stille spørgsmål om denne side.\",\n scrollToTop: \"Tilbage til toppen\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Ryd samtalen\",\n close: \"Luk\",\n copy: \"Kopiér samtalen\",\n empty: \"Stil et spørgsmål om dokumentationen.\",\n error: \"Beklager, noget gik galt.\",\n label: \"Stil et spørgsmål\",\n placeholder: \"Stil et spørgsmål…\",\n send: \"Send\",\n tip: \"Tip: Du kan åbne og lukke chatten med\",\n title: \"Spørg AI\",\n you: \"Du\",\n },\n banner: { dismiss: \"Luk meddelelsen\" },\n changelog: {\n description: \"Produktopdateringer og udgivelsesnoter.\",\n showReleases: \"Vis udgivelser for {version}\",\n title: \"Ændringslog\",\n },\n content: { diagramError: \"Dette diagram kunne ikke vises.\" },\n feedback: {\n no: \"Nej\",\n question: \"Var denne side nyttig?\",\n thanks: \"Tak for din feedback!\",\n yes: \"Ja\",\n },\n languageSwitcher: { label: \"Sprog\", untranslated: \"Ikke oversat\" },\n nav: {\n back: \"Tilbage\",\n breadcrumb: \"Brødkrummesti\",\n closeNavigation: \"Luk navigationen\",\n deprecated: \"forældet\",\n featured: \"Udvalgt\",\n githubRepository: \"GitHub-repositorium\",\n navigation: \"Navigation\",\n primary: \"Primær\",\n sections: \"Sektioner\",\n toggleNavigation: \"Vis eller skjul navigationen\",\n toggleTheme: \"Skift farvetema\",\n },\n notFound: {\n description: \"Vi kunne ikke finde den side, du leder efter.\",\n home: \"Tilbage til forsiden\",\n title: \"Siden blev ikke fundet\",\n },\n page: {\n lastUpdated: \"Senest opdateret den\",\n next: \"Næste\",\n pagination: \"Paginering\",\n previous: \"Forrige\",\n skipToContent: \"Spring til indhold\",\n },\n search: {\n all: \"Alle\",\n allLanguages: \"Alle sprog\",\n askAi: \"Spørg AI\",\n askAiHint: \"Få et øjeblikkeligt svar fra AI\",\n button: \"Søg\",\n devOnly: \"Søgning er tilgængelig i produktionsbygningen.\",\n error: \"Noget gik galt. Prøv igen.\",\n label: \"Søg i dokumentationen\",\n navigate: \"navigér\",\n noResults: \"Ingen resultater fundet.\",\n open: \"åbn\",\n placeholder: \"Søg i dokumentationen…\",\n popular: \"Populært\",\n preview: \"forhåndsvis\",\n results: \"Resultater\",\n },\n toc: { title: \"På denne side\" },\n};\n",
|
|
21
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** German (de) UI strings. */\nexport const de: UIStringsOverride = {\n actions: {\n addToCursor: \"Zu Cursor hinzufügen\",\n addToVscode: \"Zu VS Code hinzufügen\",\n askAI: \"KI zu dieser Seite fragen\",\n connectMcp: \"Mit MCP verbinden\",\n copied: \"Kopiert!\",\n copyClaudeCode: \"Claude-Code-Befehl kopieren\",\n copyCode: \"Code kopieren\",\n copyCodex: \"Codex-Befehl kopieren\",\n copyFailed: \"Kopieren fehlgeschlagen\",\n copyMarkdown: \"Als Markdown kopieren\",\n copyServerUrl: \"Server-URL kopieren\",\n edit: \"Auf GitHub bearbeiten\",\n export: \"Exportieren\",\n exportEpub: \"Als EPUB exportieren\",\n exportPdf: \"Als PDF exportieren\",\n generating: \"Wird generiert…\",\n openIn: \"In {name} öffnen\",\n openInChat: \"Im Chat öffnen\",\n openInChatPrompt:\n \"Lies {url}, damit ich dir Fragen zu dieser Seite stellen kann.\",\n scrollToTop: \"Nach oben scrollen\",\n },\n ask: {\n ai: \"KI\",\n clear: \"Unterhaltung löschen\",\n close: \"Schließen\",\n copy: \"Unterhaltung kopieren\",\n empty: \"Stelle eine Frage zur Dokumentation.\",\n error: \"Entschuldigung, etwas ist schiefgelaufen.\",\n label: \"Eine Frage stellen\",\n placeholder: \"Eine Frage stellen…\",\n send: \"Senden\",\n tip: \"Tipp: Du kannst den Chat öffnen und schließen mit\",\n title: \"KI fragen\",\n you: \"Du\",\n },\n banner: { dismiss: \"Ankündigung schließen\" },\n changelog: {\n description: \"Produkt-Updates und Versionshinweise.\",\n showReleases: \"Releases für {version} anzeigen\",\n title: \"Änderungsprotokoll\",\n },\n content: { diagramError: \"Dieses Diagramm konnte nicht dargestellt werden.\" },\n feedback: {\n no: \"Nein\",\n question: \"War diese Seite hilfreich?\",\n thanks: \"Danke für dein Feedback!\",\n yes: \"Ja\",\n },\n languageSwitcher: { label: \"Sprache\", untranslated: \"Nicht übersetzt\" },\n nav: {\n back: \"Zurück\",\n breadcrumb: \"Brotkrümelnavigation\",\n closeNavigation: \"Navigation schließen\",\n deprecated: \"veraltet\",\n featured: \"Empfohlen\",\n githubRepository: \"GitHub-Repository\",\n navigation: \"Navigation\",\n primary: \"Primär\",\n sections: \"Abschnitte\",\n toggleNavigation: \"Navigation umschalten\",\n toggleTheme: \"Farbschema umschalten\",\n },\n notFound: {\n description: \"Wir konnten die gesuchte Seite nicht finden.\",\n home: \"Zurück zur Startseite\",\n title: \"Seite nicht gefunden\",\n },\n page: {\n lastUpdated: \"Zuletzt aktualisiert am\",\n next: \"Weiter\",\n pagination: \"Seitennummerierung\",\n previous: \"Zurück\",\n skipToContent: \"Zum Inhalt springen\",\n },\n search: {\n all: \"Alle\",\n allLanguages: \"Alle Sprachen\",\n askAi: \"KI fragen\",\n askAiHint: \"Erhalte sofort eine Antwort von der KI\",\n button: \"Suchen\",\n devOnly: \"Die Suche ist im Produktions-Build verfügbar.\",\n error: \"Etwas ist schiefgelaufen. Bitte versuche es erneut.\",\n label: \"Dokumentation durchsuchen\",\n navigate: \"navigieren\",\n noResults: \"Keine Ergebnisse gefunden.\",\n open: \"öffnen\",\n placeholder: \"Dokumentation durchsuchen…\",\n popular: \"Beliebt\",\n preview: \"vorschau\",\n results: \"Ergebnisse\",\n },\n toc: { title: \"Auf dieser Seite\" },\n};\n",
|
|
22
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Greek (el) UI strings. */\nexport const el: UIStringsOverride = {\n actions: {\n addToCursor: \"Προσθήκη στο Cursor\",\n addToVscode: \"Προσθήκη στο VS Code\",\n askAI: \"Ρωτήστε την AI για αυτή τη σελίδα\",\n connectMcp: \"Σύνδεση με MCP\",\n copied: \"Αντιγράφηκε!\",\n copyClaudeCode: \"Αντιγραφή εντολής Claude Code\",\n copyCode: \"Αντιγραφή κώδικα\",\n copyCodex: \"Αντιγραφή εντολής Codex\",\n copyFailed: \"Η αντιγραφή απέτυχε\",\n copyMarkdown: \"Αντιγραφή ως Markdown\",\n copyServerUrl: \"Αντιγραφή URL διακομιστή\",\n edit: \"Επεξεργασία στο GitHub\",\n export: \"Εξαγωγή\",\n exportEpub: \"Εξαγωγή σε EPUB\",\n exportPdf: \"Εξαγωγή σε PDF\",\n generating: \"Δημιουργία…\",\n openIn: \"Άνοιγμα στο {name}\",\n openInChat: \"Άνοιγμα στη συνομιλία\",\n openInChatPrompt:\n \"Διαβάστε το {url} για να μπορώ να κάνω ερωτήσεις για αυτή τη σελίδα.\",\n scrollToTop: \"Επιστροφή στην κορυφή\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Εκκαθάριση συνομιλίας\",\n close: \"Κλείσιμο\",\n copy: \"Αντιγραφή συνομιλίας\",\n empty: \"Κάντε μια ερώτηση σχετικά με την τεκμηρίωση.\",\n error: \"Λυπούμαστε, κάτι πήγε στραβά.\",\n label: \"Κάντε μια ερώτηση\",\n placeholder: \"Κάντε μια ερώτηση…\",\n send: \"Αποστολή\",\n tip: \"Συμβουλή: Μπορείτε να ανοίγετε και να κλείνετε τη συνομιλία με\",\n title: \"Ρωτήστε την AI\",\n you: \"Εσείς\",\n },\n banner: { dismiss: \"Κλείσιμο ανακοίνωσης\" },\n changelog: {\n description: \"Ενημερώσεις προϊόντος και σημειώσεις έκδοσης.\",\n showReleases: \"Εμφάνιση εκδόσεων {version}\",\n title: \"Ιστορικό αλλαγών\",\n },\n content: {\n diagramError: \"Δεν ήταν δυνατή η απόδοση αυτού του διαγράμματος.\",\n },\n feedback: {\n no: \"Όχι\",\n question: \"Σας φάνηκε χρήσιμη αυτή η σελίδα;\",\n thanks: \"Ευχαριστούμε για τα σχόλιά σας!\",\n yes: \"Ναι\",\n },\n languageSwitcher: { label: \"Γλώσσα\", untranslated: \"Δεν έχει μεταφραστεί\" },\n nav: {\n back: \"Πίσω\",\n breadcrumb: \"Διαδρομή πλοήγησης\",\n closeNavigation: \"Κλείσιμο πλοήγησης\",\n deprecated: \"παρωχημένο\",\n featured: \"Προτεινόμενα\",\n githubRepository: \"Αποθετήριο GitHub\",\n navigation: \"Πλοήγηση\",\n primary: \"Κύρια\",\n sections: \"Ενότητες\",\n toggleNavigation: \"Εναλλαγή πλοήγησης\",\n toggleTheme: \"Εναλλαγή χρωματικού θέματος\",\n },\n notFound: {\n description: \"Δεν μπορέσαμε να βρούμε τη σελίδα που ψάχνετε.\",\n home: \"Επιστροφή στην αρχική\",\n title: \"Η σελίδα δεν βρέθηκε\",\n },\n page: {\n lastUpdated: \"Τελευταία ενημέρωση\",\n next: \"Επόμενο\",\n pagination: \"Σελιδοποίηση\",\n previous: \"Προηγούμενο\",\n skipToContent: \"Μετάβαση στο περιεχόμενο\",\n },\n search: {\n all: \"Όλα\",\n allLanguages: \"Όλες οι γλώσσες\",\n askAi: \"Ρωτήστε την AI\",\n askAiHint: \"Λάβετε άμεση απάντηση από την AI\",\n button: \"Αναζήτηση\",\n devOnly: \"Η αναζήτηση είναι διαθέσιμη στην έκδοση παραγωγής.\",\n error: \"Κάτι πήγε στραβά. Δοκιμάστε ξανά.\",\n label: \"Αναζήτηση στην τεκμηρίωση\",\n navigate: \"πλοήγηση\",\n noResults: \"Δεν βρέθηκαν αποτελέσματα.\",\n open: \"άνοιγμα\",\n placeholder: \"Αναζήτηση στην τεκμηρίωση…\",\n popular: \"Δημοφιλή\",\n preview: \"προεπισκόπηση\",\n results: \"Αποτελέσματα\",\n },\n toc: { title: \"Σε αυτή τη σελίδα\" },\n};\n",
|
|
23
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Spanish (es) UI strings. */\nexport const es: UIStringsOverride = {\n actions: {\n addToCursor: \"Añadir a Cursor\",\n addToVscode: \"Añadir a VS Code\",\n askAI: \"Preguntar a la IA sobre esta página\",\n connectMcp: \"Conectar a MCP\",\n copied: \"¡Copiado!\",\n copyClaudeCode: \"Copiar comando de Claude Code\",\n copyCode: \"Copiar código\",\n copyCodex: \"Copiar comando de Codex\",\n copyFailed: \"Error al copiar\",\n copyMarkdown: \"Copiar como Markdown\",\n copyServerUrl: \"Copiar URL del servidor\",\n edit: \"Editar en GitHub\",\n export: \"Exportar\",\n exportEpub: \"Exportar a EPUB\",\n exportPdf: \"Exportar a PDF\",\n generating: \"Generando…\",\n openIn: \"Abrir en {name}\",\n openInChat: \"Abrir en el chat\",\n openInChatPrompt:\n \"Lee {url} para que pueda hacerte preguntas sobre esta página.\",\n scrollToTop: \"Volver arriba\",\n },\n ask: {\n ai: \"IA\",\n clear: \"Borrar la conversación\",\n close: \"Cerrar\",\n copy: \"Copiar la conversación\",\n empty: \"Haz una pregunta sobre la documentación.\",\n error: \"Lo sentimos, algo salió mal.\",\n label: \"Haz una pregunta\",\n placeholder: \"Haz una pregunta…\",\n send: \"Enviar\",\n tip: \"Consejo: puedes abrir y cerrar el chat con\",\n title: \"Preguntar a la IA\",\n you: \"Tú\",\n },\n banner: { dismiss: \"Cerrar el anuncio\" },\n changelog: {\n description: \"Novedades del producto y notas de la versión.\",\n showReleases: \"Mostrar versiones {version}\",\n title: \"Registro de cambios\",\n },\n content: {\n diagramError: \"No se pudo mostrar este diagrama.\",\n },\n feedback: {\n no: \"No\",\n question: \"¿Te ha resultado útil esta página?\",\n thanks: \"¡Gracias por tus comentarios!\",\n yes: \"Sí\",\n },\n languageSwitcher: { label: \"Idioma\", untranslated: \"Sin traducir\" },\n nav: {\n back: \"Atrás\",\n breadcrumb: \"Ruta de navegación\",\n closeNavigation: \"Cerrar la navegación\",\n deprecated: \"obsoleto\",\n featured: \"Destacado\",\n githubRepository: \"Repositorio de GitHub\",\n navigation: \"Navegación\",\n primary: \"Principal\",\n sections: \"Secciones\",\n toggleNavigation: \"Mostrar u ocultar la navegación\",\n toggleTheme: \"Cambiar el tema de color\",\n },\n notFound: {\n description: \"No hemos podido encontrar la página que buscas.\",\n home: \"Volver al inicio\",\n title: \"Página no encontrada\",\n },\n page: {\n lastUpdated: \"Última actualización el\",\n next: \"Siguiente\",\n pagination: \"Paginación\",\n previous: \"Anterior\",\n skipToContent: \"Saltar al contenido\",\n },\n search: {\n all: \"Todos\",\n allLanguages: \"Todos los idiomas\",\n askAi: \"Preguntar a la IA\",\n askAiHint: \"Obtén una respuesta instantánea de la IA\",\n button: \"Buscar\",\n devOnly: \"La búsqueda está disponible en la compilación de producción.\",\n error: \"Algo salió mal. Inténtalo de nuevo.\",\n label: \"Buscar en la documentación\",\n navigate: \"navegar\",\n noResults: \"No se encontraron resultados.\",\n open: \"abrir\",\n placeholder: \"Buscar en la documentación…\",\n popular: \"Populares\",\n preview: \"vista previa\",\n results: \"Resultados\",\n },\n toc: { title: \"En esta página\" },\n};\n",
|
|
24
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Persian (fa) UI strings. */\nexport const fa: UIStringsOverride = {\n actions: {\n addToCursor: \"افزودن به Cursor\",\n addToVscode: \"افزودن به VS Code\",\n askAI: \"از هوش مصنوعی درباره این صفحه بپرسید\",\n connectMcp: \"اتصال به MCP\",\n copied: \"کپی شد!\",\n copyClaudeCode: \"کپی دستور Claude Code\",\n copyCode: \"کپی کد\",\n copyCodex: \"کپی دستور Codex\",\n copyFailed: \"کپی ناموفق بود\",\n copyMarkdown: \"کپی بهصورت Markdown\",\n copyServerUrl: \"کپی نشانی سرور\",\n edit: \"ویرایش در GitHub\",\n export: \"برونبری\",\n exportEpub: \"برونبری به EPUB\",\n exportPdf: \"برونبری به PDF\",\n generating: \"در حال تولید…\",\n openIn: \"باز کردن در {name}\",\n openInChat: \"باز کردن در گفتگو\",\n openInChatPrompt: \"{url} را بخوانید تا بتوانم درباره این صفحه سؤال بپرسم.\",\n scrollToTop: \"بازگشت به بالا\",\n },\n ask: {\n ai: \"هوش مصنوعی\",\n clear: \"پاک کردن گفتگو\",\n close: \"بستن\",\n copy: \"کپی گفتگو\",\n empty: \"سؤالی درباره مستندات بپرسید.\",\n error: \"متأسفیم، مشکلی پیش آمد.\",\n label: \"یک سؤال بپرسید\",\n placeholder: \"یک سؤال بپرسید…\",\n send: \"ارسال\",\n tip: \"نکته: باز و بسته کردن گفتگو با\",\n title: \"از هوش مصنوعی بپرسید\",\n you: \"شما\",\n },\n banner: { dismiss: \"بستن اطلاعیه\" },\n changelog: {\n description: \"بهروزرسانیهای محصول و یادداشتهای انتشار.\",\n showReleases: \"نمایش انتشارهای {version}\",\n title: \"گزارش تغییرات\",\n },\n content: { diagramError: \"نمایش این نمودار ممکن نشد.\" },\n feedback: {\n no: \"خیر\",\n question: \"آیا این صفحه مفید بود؟\",\n thanks: \"از بازخورد شما سپاسگزاریم!\",\n yes: \"بله\",\n },\n languageSwitcher: { label: \"زبان\", untranslated: \"ترجمهنشده\" },\n nav: {\n back: \"بازگشت\",\n breadcrumb: \"مسیر ناوبری\",\n closeNavigation: \"بستن ناوبری\",\n deprecated: \"منسوخ\",\n featured: \"ویژه\",\n githubRepository: \"مخزن GitHub\",\n navigation: \"ناوبری\",\n primary: \"اصلی\",\n sections: \"بخشها\",\n toggleNavigation: \"تغییر وضعیت ناوبری\",\n toggleTheme: \"تغییر پوسته رنگی\",\n },\n notFound: {\n description: \"صفحهای که به دنبال آن هستید پیدا نشد.\",\n home: \"بازگشت به صفحه اصلی\",\n title: \"صفحه پیدا نشد\",\n },\n page: {\n lastUpdated: \"آخرین بهروزرسانی\",\n next: \"بعدی\",\n pagination: \"صفحهبندی\",\n previous: \"قبلی\",\n skipToContent: \"پرش به محتوا\",\n },\n search: {\n all: \"همه\",\n allLanguages: \"همه زبانها\",\n askAi: \"از هوش مصنوعی بپرسید\",\n askAiHint: \"پاسخی فوری از هوش مصنوعی دریافت کنید\",\n button: \"جستجو\",\n devOnly: \"جستجو در نسخه تولید در دسترس است.\",\n error: \"مشکلی پیش آمد. لطفاً دوباره تلاش کنید.\",\n label: \"جستجو در مستندات\",\n navigate: \"پیمایش\",\n noResults: \"نتیجهای یافت نشد.\",\n open: \"باز کردن\",\n placeholder: \"جستجو در مستندات…\",\n popular: \"محبوب\",\n preview: \"پیشنمایش\",\n results: \"نتایج\",\n },\n toc: { title: \"در این صفحه\" },\n};\n",
|
|
25
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Finnish (fi) UI strings. */\nexport const fi: UIStringsOverride = {\n actions: {\n addToCursor: \"Lisää Cursoriin\",\n addToVscode: \"Lisää VS Codeen\",\n askAI: \"Kysy tekoälyltä tästä sivusta\",\n connectMcp: \"Yhdistä MCP:hen\",\n copied: \"Kopioitu!\",\n copyClaudeCode: \"Kopioi Claude Code -komento\",\n copyCode: \"Kopioi koodi\",\n copyCodex: \"Kopioi Codex-komento\",\n copyFailed: \"Kopiointi epäonnistui\",\n copyMarkdown: \"Kopioi Markdownina\",\n copyServerUrl: \"Kopioi palvelimen URL\",\n edit: \"Muokkaa GitHubissa\",\n export: \"Vie\",\n exportEpub: \"Vie EPUB-muotoon\",\n exportPdf: \"Vie PDF-muotoon\",\n generating: \"Luodaan…\",\n openIn: \"Avaa sovelluksessa {name}\",\n openInChat: \"Avaa keskustelussa\",\n openInChatPrompt: \"Lue {url}, jotta voin kysyä kysymyksiä tästä sivusta.\",\n scrollToTop: \"Takaisin ylös\",\n },\n ask: {\n ai: \"Tekoäly\",\n clear: \"Tyhjennä keskustelu\",\n close: \"Sulje\",\n copy: \"Kopioi keskustelu\",\n empty: \"Kysy kysymys dokumentaatiosta.\",\n error: \"Pahoittelut, jokin meni pieleen.\",\n label: \"Kysy kysymys\",\n placeholder: \"Kysy kysymys…\",\n send: \"Lähetä\",\n tip: \"Vinkki: Voit avata ja sulkea keskustelun näppäimillä\",\n title: \"Kysy tekoälyltä\",\n you: \"Sinä\",\n },\n banner: { dismiss: \"Sulje ilmoitus\" },\n changelog: {\n description: \"Tuotepäivitykset ja julkaisutiedot.\",\n showReleases: \"Näytä version {version} julkaisut\",\n title: \"Muutosloki\",\n },\n content: { diagramError: \"Tätä kaaviota ei voitu näyttää.\" },\n feedback: {\n no: \"Ei\",\n question: \"Oliko tästä sivusta apua?\",\n thanks: \"Kiitos palautteestasi!\",\n yes: \"Kyllä\",\n },\n languageSwitcher: { label: \"Kieli\", untranslated: \"Ei käännetty\" },\n nav: {\n back: \"Takaisin\",\n breadcrumb: \"Murupolku\",\n closeNavigation: \"Sulje navigaatio\",\n deprecated: \"vanhentunut\",\n featured: \"Suositellut\",\n githubRepository: \"GitHub-repositorio\",\n navigation: \"Navigaatio\",\n primary: \"Ensisijainen\",\n sections: \"Osiot\",\n toggleNavigation: \"Näytä tai piilota navigaatio\",\n toggleTheme: \"Vaihda väriteemaa\",\n },\n notFound: {\n description: \"Etsimääsi sivua ei löytynyt.\",\n home: \"Takaisin etusivulle\",\n title: \"Sivua ei löytynyt\",\n },\n page: {\n lastUpdated: \"Viimeksi päivitetty\",\n next: \"Seuraava\",\n pagination: \"Sivutus\",\n previous: \"Edellinen\",\n skipToContent: \"Siirry sisältöön\",\n },\n search: {\n all: \"Kaikki\",\n allLanguages: \"Kaikki kielet\",\n askAi: \"Kysy tekoälyltä\",\n askAiHint: \"Saat välittömän vastauksen tekoälyltä\",\n button: \"Hae\",\n devOnly: \"Haku on käytettävissä tuotantokäännöksessä.\",\n error: \"Jokin meni pieleen. Yritä uudelleen.\",\n label: \"Hae dokumentaatiosta\",\n navigate: \"siirry\",\n noResults: \"Ei tuloksia.\",\n open: \"avaa\",\n placeholder: \"Hae dokumentaatiosta…\",\n popular: \"Suositut\",\n preview: \"esikatselu\",\n results: \"Tulokset\",\n },\n toc: { title: \"Tällä sivulla\" },\n};\n",
|
|
26
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** French (fr) UI strings. */\nexport const fr: UIStringsOverride = {\n actions: {\n addToCursor: \"Ajouter à Cursor\",\n addToVscode: \"Ajouter à VS Code\",\n askAI: \"Demander à l'IA à propos de cette page\",\n connectMcp: \"Se connecter à MCP\",\n copied: \"Copié !\",\n copyClaudeCode: \"Copier la commande Claude Code\",\n copyCode: \"Copier le code\",\n copyCodex: \"Copier la commande Codex\",\n copyFailed: \"Échec de la copie\",\n copyMarkdown: \"Copier en Markdown\",\n copyServerUrl: \"Copier l'URL du serveur\",\n edit: \"Modifier sur GitHub\",\n export: \"Exporter\",\n exportEpub: \"Exporter en EPUB\",\n exportPdf: \"Exporter en PDF\",\n generating: \"Génération…\",\n openIn: \"Ouvrir dans {name}\",\n openInChat: \"Ouvrir dans le chat\",\n openInChatPrompt:\n \"Lisez {url} pour que je puisse vous poser des questions sur cette page.\",\n scrollToTop: \"Revenir en haut\",\n },\n ask: {\n ai: \"IA\",\n clear: \"Effacer la conversation\",\n close: \"Fermer\",\n copy: \"Copier la conversation\",\n empty: \"Posez une question sur la documentation.\",\n error: \"Désolé, une erreur s'est produite.\",\n label: \"Poser une question\",\n placeholder: \"Posez une question…\",\n send: \"Envoyer\",\n tip: \"Astuce : vous pouvez ouvrir et fermer le chat avec\",\n title: \"Demander à l'IA\",\n you: \"Vous\",\n },\n banner: { dismiss: \"Fermer l'annonce\" },\n changelog: {\n description: \"Nouveautés du produit et notes de version.\",\n showReleases: \"Afficher les versions {version}\",\n title: \"Journal des modifications\",\n },\n content: {\n diagramError: \"Impossible d'afficher ce diagramme.\",\n },\n feedback: {\n no: \"Non\",\n question: \"Cette page vous a-t-elle été utile ?\",\n thanks: \"Merci pour votre retour !\",\n yes: \"Oui\",\n },\n languageSwitcher: { label: \"Langue\", untranslated: \"Non traduit\" },\n nav: {\n back: \"Retour\",\n breadcrumb: \"Fil d'Ariane\",\n closeNavigation: \"Fermer la navigation\",\n deprecated: \"obsolète\",\n featured: \"En vedette\",\n githubRepository: \"Dépôt GitHub\",\n navigation: \"Navigation\",\n primary: \"Principal\",\n sections: \"Sections\",\n toggleNavigation: \"Afficher ou masquer la navigation\",\n toggleTheme: \"Changer de thème de couleur\",\n },\n notFound: {\n description: \"Nous n'avons pas trouvé la page que vous recherchez.\",\n home: \"Retour à l'accueil\",\n title: \"Page introuvable\",\n },\n page: {\n lastUpdated: \"Dernière mise à jour le\",\n next: \"Suivant\",\n pagination: \"Pagination\",\n previous: \"Précédent\",\n skipToContent: \"Aller au contenu\",\n },\n search: {\n all: \"Tous\",\n allLanguages: \"Toutes les langues\",\n askAi: \"Demander à l'IA\",\n askAiHint: \"Obtenez une réponse instantanée de l'IA\",\n button: \"Rechercher\",\n devOnly: \"La recherche est disponible dans la version de production.\",\n error: \"Une erreur s'est produite. Veuillez réessayer.\",\n label: \"Rechercher dans la doc\",\n navigate: \"naviguer\",\n noResults: \"Aucun résultat.\",\n open: \"ouvrir\",\n placeholder: \"Rechercher dans la documentation…\",\n popular: \"Populaires\",\n preview: \"aperçu\",\n results: \"Résultats\",\n },\n toc: { title: \"Sur cette page\" },\n};\n",
|
|
27
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Hebrew (he) UI strings. */\nexport const he: UIStringsOverride = {\n actions: {\n addToCursor: \"הוסף ל-Cursor\",\n addToVscode: \"הוסף ל-VS Code\",\n askAI: \"שאל את ה-AI על העמוד הזה\",\n connectMcp: \"התחבר ל-MCP\",\n copied: \"הועתק!\",\n copyClaudeCode: \"העתק פקודת Claude Code\",\n copyCode: \"העתק קוד\",\n copyCodex: \"העתק פקודת Codex\",\n copyFailed: \"ההעתקה נכשלה\",\n copyMarkdown: \"העתק כ-Markdown\",\n copyServerUrl: \"העתק כתובת URL של השרת\",\n edit: \"ערוך ב-GitHub\",\n export: \"ייצוא\",\n exportEpub: \"ייצוא ל-EPUB\",\n exportPdf: \"ייצוא ל-PDF\",\n generating: \"מייצר…\",\n openIn: \"פתח ב-{name}\",\n openInChat: \"פתח בצ'אט\",\n openInChatPrompt: \"קרא את {url} כדי שאוכל לשאול שאלות על העמוד הזה.\",\n scrollToTop: \"חזרה למעלה\",\n },\n ask: {\n ai: \"AI\",\n clear: \"נקה שיחה\",\n close: \"סגור\",\n copy: \"העתק שיחה\",\n empty: \"שאל שאלה על התיעוד.\",\n error: \"מצטערים, משהו השתבש.\",\n label: \"שאל שאלה\",\n placeholder: \"שאל שאלה…\",\n send: \"שלח\",\n tip: \"טיפ: אפשר לפתוח ולסגור את הצ'אט באמצעות\",\n title: \"שאל את ה-AI\",\n you: \"אתה\",\n },\n banner: { dismiss: \"סגירת ההודעה\" },\n changelog: {\n description: \"עדכוני מוצר והערות גרסה.\",\n showReleases: \"הצג גרסאות {version}\",\n title: \"יומן שינויים\",\n },\n content: { diagramError: \"לא ניתן להציג את התרשים הזה.\" },\n feedback: {\n no: \"לא\",\n question: \"האם העמוד הזה היה מועיל?\",\n thanks: \"תודה על המשוב שלך!\",\n yes: \"כן\",\n },\n languageSwitcher: { label: \"שפה\", untranslated: \"לא מתורגם\" },\n nav: {\n back: \"חזרה\",\n breadcrumb: \"פירורי לחם\",\n closeNavigation: \"סגור ניווט\",\n deprecated: \"הוצא משימוש\",\n featured: \"מומלץ\",\n githubRepository: \"מאגר GitHub\",\n navigation: \"ניווט\",\n primary: \"ראשי\",\n sections: \"מקטעים\",\n toggleNavigation: \"החלף מצב ניווט\",\n toggleTheme: \"החלף ערכת צבעים\",\n },\n notFound: {\n description: \"לא הצלחנו למצוא את העמוד שחיפשת.\",\n home: \"חזרה לעמוד הבית\",\n title: \"העמוד לא נמצא\",\n },\n page: {\n lastUpdated: \"עודכן לאחרונה\",\n next: \"הבא\",\n pagination: \"עימוד\",\n previous: \"הקודם\",\n skipToContent: \"דלג לתוכן\",\n },\n search: {\n all: \"הכל\",\n allLanguages: \"כל השפות\",\n askAi: \"שאל את ה-AI\",\n askAiHint: \"קבל תשובה מיידית מה-AI\",\n button: \"חיפוש\",\n devOnly: \"החיפוש זמין בבנייה לייצור.\",\n error: \"משהו השתבש. נסה שוב.\",\n label: \"חפש בתיעוד\",\n navigate: \"ניווט\",\n noResults: \"לא נמצאו תוצאות.\",\n open: \"פתיחה\",\n placeholder: \"חפש בתיעוד…\",\n popular: \"פופולרי\",\n preview: \"תצוגה מקדימה\",\n results: \"תוצאות\",\n },\n toc: { title: \"בעמוד זה\" },\n};\n",
|
|
28
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Hindi (hi) UI strings. */\nexport const hi: UIStringsOverride = {\n actions: {\n addToCursor: \"Cursor में जोड़ें\",\n addToVscode: \"VS Code में जोड़ें\",\n askAI: \"इस पेज के बारे में AI से पूछें\",\n connectMcp: \"MCP से कनेक्ट करें\",\n copied: \"कॉपी किया गया!\",\n copyClaudeCode: \"Claude Code कमांड कॉपी करें\",\n copyCode: \"कोड कॉपी करें\",\n copyCodex: \"Codex कमांड कॉपी करें\",\n copyFailed: \"कॉपी विफल रहा\",\n copyMarkdown: \"Markdown के रूप में कॉपी करें\",\n copyServerUrl: \"सर्वर URL कॉपी करें\",\n edit: \"GitHub पर संपादित करें\",\n export: \"एक्सपोर्ट करें\",\n exportEpub: \"EPUB में एक्सपोर्ट करें\",\n exportPdf: \"PDF में एक्सपोर्ट करें\",\n generating: \"जनरेट हो रहा है…\",\n openIn: \"{name} में खोलें\",\n openInChat: \"चैट में खोलें\",\n openInChatPrompt: \"{url} पढ़ें ताकि मैं इस पेज के बारे में प्रश्न पूछ सकूँ।\",\n scrollToTop: \"ऊपर जाएँ\",\n },\n ask: {\n ai: \"AI\",\n clear: \"बातचीत साफ़ करें\",\n close: \"बंद करें\",\n copy: \"बातचीत कॉपी करें\",\n empty: \"दस्तावेज़ के बारे में एक प्रश्न पूछें।\",\n error: \"क्षमा करें, कुछ गलत हो गया।\",\n label: \"एक प्रश्न पूछें\",\n placeholder: \"एक प्रश्न पूछें…\",\n send: \"भेजें\",\n tip: \"सुझाव: चैट खोलने और बंद करने के लिए दबाएँ\",\n title: \"AI से पूछें\",\n you: \"आप\",\n },\n banner: { dismiss: \"घोषणा बंद करें\" },\n changelog: {\n description: \"उत्पाद अपडेट और रिलीज़ नोट्स।\",\n showReleases: \"{version} रिलीज़ दिखाएँ\",\n title: \"परिवर्तन लॉग\",\n },\n content: { diagramError: \"यह डायग्राम रेंडर नहीं हो सका।\" },\n feedback: {\n no: \"नहीं\",\n question: \"क्या यह पेज सहायक था?\",\n thanks: \"आपकी प्रतिक्रिया के लिए धन्यवाद!\",\n yes: \"हाँ\",\n },\n languageSwitcher: { label: \"भाषा\", untranslated: \"अनुवादित नहीं\" },\n nav: {\n back: \"वापस\",\n breadcrumb: \"ब्रेडक्रम\",\n closeNavigation: \"नेविगेशन बंद करें\",\n deprecated: \"अप्रचलित\",\n featured: \"फ़ीचर्ड\",\n githubRepository: \"GitHub रिपॉज़िटरी\",\n navigation: \"नेविगेशन\",\n primary: \"प्राथमिक\",\n sections: \"अनुभाग\",\n toggleNavigation: \"नेविगेशन टॉगल करें\",\n toggleTheme: \"रंग थीम टॉगल करें\",\n },\n notFound: {\n description: \"आप जिस पेज को खोज रहे हैं वह हमें नहीं मिला।\",\n home: \"होम पर वापस जाएँ\",\n title: \"पेज नहीं मिला\",\n },\n page: {\n lastUpdated: \"अंतिम अपडेट\",\n next: \"अगला\",\n pagination: \"पृष्ठांकन\",\n previous: \"पिछला\",\n skipToContent: \"सामग्री पर जाएँ\",\n },\n search: {\n all: \"सभी\",\n allLanguages: \"सभी भाषाएँ\",\n askAi: \"AI से पूछें\",\n askAiHint: \"AI से तुरंत जवाब पाएँ\",\n button: \"खोजें\",\n devOnly: \"खोज प्रोडक्शन बिल्ड में उपलब्ध है।\",\n error: \"कुछ गलत हो गया। कृपया फिर से कोशिश करें।\",\n label: \"दस्तावेज़ खोजें\",\n navigate: \"नेविगेट\",\n noResults: \"कोई परिणाम नहीं मिला।\",\n open: \"खोलें\",\n placeholder: \"दस्तावेज़ खोजें…\",\n popular: \"लोकप्रिय\",\n preview: \"प्रीव्यू\",\n results: \"परिणाम\",\n },\n toc: { title: \"इस पेज पर\" },\n};\n",
|
|
29
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Croatian (hr) UI strings. */\nexport const hr: UIStringsOverride = {\n actions: {\n addToCursor: \"Dodaj u Cursor\",\n addToVscode: \"Dodaj u VS Code\",\n askAI: \"Pitaj AI o ovoj stranici\",\n connectMcp: \"Poveži se s MCP-om\",\n copied: \"Kopirano!\",\n copyClaudeCode: \"Kopiraj naredbu Claude Code\",\n copyCode: \"Kopiraj kôd\",\n copyCodex: \"Kopiraj naredbu Codex\",\n copyFailed: \"Kopiranje nije uspjelo\",\n copyMarkdown: \"Kopiraj kao Markdown\",\n copyServerUrl: \"Kopiraj URL poslužitelja\",\n edit: \"Uredi na GitHubu\",\n export: \"Izvezi\",\n exportEpub: \"Izvezi u EPUB\",\n exportPdf: \"Izvezi u PDF\",\n generating: \"Generiranje…\",\n openIn: \"Otvori u {name}\",\n openInChat: \"Otvori u chatu\",\n openInChatPrompt:\n \"Pročitajte {url} — postavljat ću pitanja o ovoj stranici.\",\n scrollToTop: \"Natrag na vrh\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Očisti razgovor\",\n close: \"Zatvori\",\n copy: \"Kopiraj razgovor\",\n empty: \"Postavite pitanje o dokumentaciji.\",\n error: \"Žao nam je, nešto je pošlo po zlu.\",\n label: \"Postavi pitanje\",\n placeholder: \"Postavite pitanje…\",\n send: \"Pošalji\",\n tip: \"Savjet: Chat možete otvoriti i zatvoriti pomoću\",\n title: \"Pitaj AI\",\n you: \"Vi\",\n },\n banner: { dismiss: \"Zatvori obavijest\" },\n changelog: {\n description: \"Ažuriranja proizvoda i napomene o izdanjima.\",\n showReleases: \"Prikaži izdanja {version}\",\n title: \"Popis promjena\",\n },\n content: { diagramError: \"Ovaj dijagram nije moguće prikazati.\" },\n feedback: {\n no: \"Ne\",\n question: \"Je li vam ova stranica bila korisna?\",\n thanks: \"Hvala na povratnoj informaciji!\",\n yes: \"Da\",\n },\n languageSwitcher: { label: \"Jezik\", untranslated: \"Nije prevedeno\" },\n nav: {\n back: \"Natrag\",\n breadcrumb: \"Navigacijski put\",\n closeNavigation: \"Zatvori navigaciju\",\n deprecated: \"zastarjelo\",\n featured: \"Istaknuto\",\n githubRepository: \"GitHub repozitorij\",\n navigation: \"Navigacija\",\n primary: \"Glavna\",\n sections: \"Odjeljci\",\n toggleNavigation: \"Otvori ili zatvori navigaciju\",\n toggleTheme: \"Promijeni temu boja\",\n },\n notFound: {\n description: \"Nismo mogli pronaći stranicu koju tražite.\",\n home: \"Natrag na početnu\",\n title: \"Stranica nije pronađena\",\n },\n page: {\n lastUpdated: \"Posljednje ažuriranje\",\n next: \"Sljedeće\",\n pagination: \"Straničenje\",\n previous: \"Prethodno\",\n skipToContent: \"Prijeđi na sadržaj\",\n },\n search: {\n all: \"Sve\",\n allLanguages: \"Svi jezici\",\n askAi: \"Pitaj AI\",\n askAiHint: \"Dobijte trenutačni odgovor od AI-ja\",\n button: \"Pretraži\",\n devOnly: \"Pretraživanje je dostupno u produkcijskoj verziji.\",\n error: \"Nešto je pošlo po zlu. Pokušajte ponovno.\",\n label: \"Pretraži dokumentaciju\",\n navigate: \"navigacija\",\n noResults: \"Nema rezultata.\",\n open: \"otvori\",\n placeholder: \"Pretraži dokumentaciju…\",\n popular: \"Popularno\",\n preview: \"pregled\",\n results: \"Rezultati\",\n },\n toc: { title: \"Na ovoj stranici\" },\n};\n",
|
|
30
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Hungarian (hu) UI strings. */\nexport const hu: UIStringsOverride = {\n actions: {\n addToCursor: \"Hozzáadás a Cursorhoz\",\n addToVscode: \"Hozzáadás a VS Code-hoz\",\n askAI: \"Kérdezd az AI-t erről az oldalról\",\n connectMcp: \"Kapcsolódás az MCP-hez\",\n copied: \"Másolva!\",\n copyClaudeCode: \"Claude Code parancs másolása\",\n copyCode: \"Kód másolása\",\n copyCodex: \"Codex parancs másolása\",\n copyFailed: \"A másolás nem sikerült\",\n copyMarkdown: \"Másolás Markdownként\",\n copyServerUrl: \"Szerver URL másolása\",\n edit: \"Szerkesztés a GitHubon\",\n export: \"Exportálás\",\n exportEpub: \"Exportálás EPUB-ba\",\n exportPdf: \"Exportálás PDF-be\",\n generating: \"Generálás…\",\n openIn: \"Megnyitás itt: {name}\",\n openInChat: \"Megnyitás a csevegésben\",\n openInChatPrompt:\n \"Olvasd el a következőt: {url}, hogy kérdéseket tehessek fel erről az oldalról.\",\n scrollToTop: \"Vissza a tetejére\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Beszélgetés törlése\",\n close: \"Bezárás\",\n copy: \"Beszélgetés másolása\",\n empty: \"Tegyél fel kérdést a dokumentációval kapcsolatban.\",\n error: \"Sajnáljuk, valami hiba történt.\",\n label: \"Tegyél fel egy kérdést\",\n placeholder: \"Tegyél fel egy kérdést…\",\n send: \"Küldés\",\n tip: \"Tipp: A csevegést ezzel nyithatod meg és zárhatod be:\",\n title: \"Kérdezd az AI-t\",\n you: \"Te\",\n },\n banner: { dismiss: \"Közlemény bezárása\" },\n changelog: {\n description: \"Termékfrissítések és kiadási megjegyzések.\",\n showReleases: \"{version} kiadások megjelenítése\",\n title: \"Változásnapló\",\n },\n content: { diagramError: \"Ezt a diagramot nem sikerült megjeleníteni.\" },\n feedback: {\n no: \"Nem\",\n question: \"Hasznos volt ez az oldal?\",\n thanks: \"Köszönjük a visszajelzésed!\",\n yes: \"Igen\",\n },\n languageSwitcher: { label: \"Nyelv\", untranslated: \"Nincs lefordítva\" },\n nav: {\n back: \"Vissza\",\n breadcrumb: \"Morzsamenü\",\n closeNavigation: \"Navigáció bezárása\",\n deprecated: \"elavult\",\n featured: \"Kiemelt\",\n githubRepository: \"GitHub-tároló\",\n navigation: \"Navigáció\",\n primary: \"Elsődleges\",\n sections: \"Szakaszok\",\n toggleNavigation: \"Navigáció ki-/bekapcsolása\",\n toggleTheme: \"Színtéma váltása\",\n },\n notFound: {\n description: \"Nem találtuk a keresett oldalt.\",\n home: \"Vissza a kezdőlapra\",\n title: \"Az oldal nem található\",\n },\n page: {\n lastUpdated: \"Utoljára frissítve\",\n next: \"Következő\",\n pagination: \"Lapozás\",\n previous: \"Előző\",\n skipToContent: \"Ugrás a tartalomra\",\n },\n search: {\n all: \"Összes\",\n allLanguages: \"Összes nyelv\",\n askAi: \"Kérdezd az AI-t\",\n askAiHint: \"Kapj azonnali választ az AI-tól\",\n button: \"Keresés\",\n devOnly: \"A keresés az éles buildben érhető el.\",\n error: \"Hiba történt. Próbáld újra.\",\n label: \"Keresés a dokumentációban\",\n navigate: \"navigálás\",\n noResults: \"Nincs találat.\",\n open: \"megnyitás\",\n placeholder: \"Keresés a dokumentációban…\",\n popular: \"Népszerű\",\n preview: \"előnézet\",\n results: \"Találatok\",\n },\n toc: { title: \"Ezen az oldalon\" },\n};\n",
|
|
31
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Indonesian (id) UI strings. */\nexport const id: UIStringsOverride = {\n actions: {\n addToCursor: \"Tambahkan ke Cursor\",\n addToVscode: \"Tambahkan ke VS Code\",\n askAI: \"Tanya AI tentang halaman ini\",\n connectMcp: \"Hubungkan ke MCP\",\n copied: \"Disalin!\",\n copyClaudeCode: \"Salin perintah Claude Code\",\n copyCode: \"Salin kode\",\n copyCodex: \"Salin perintah Codex\",\n copyFailed: \"Gagal menyalin\",\n copyMarkdown: \"Salin sebagai Markdown\",\n copyServerUrl: \"Salin URL server\",\n edit: \"Edit di GitHub\",\n export: \"Ekspor\",\n exportEpub: \"Ekspor ke EPUB\",\n exportPdf: \"Ekspor ke PDF\",\n generating: \"Menghasilkan…\",\n openIn: \"Buka di {name}\",\n openInChat: \"Buka di obrolan\",\n openInChatPrompt:\n \"Baca {url} agar saya bisa mengajukan pertanyaan tentang halaman ini.\",\n scrollToTop: \"Kembali ke atas\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Hapus percakapan\",\n close: \"Tutup\",\n copy: \"Salin percakapan\",\n empty: \"Ajukan pertanyaan tentang dokumentasi.\",\n error: \"Maaf, terjadi kesalahan.\",\n label: \"Ajukan pertanyaan\",\n placeholder: \"Ajukan pertanyaan…\",\n send: \"Kirim\",\n tip: \"Tips: Anda dapat membuka dan menutup obrolan dengan\",\n title: \"Tanya AI\",\n you: \"Anda\",\n },\n banner: { dismiss: \"Tutup pengumuman\" },\n changelog: {\n description: \"Pembaruan produk dan catatan rilis.\",\n showReleases: \"Tampilkan rilis {version}\",\n title: \"Log perubahan\",\n },\n content: { diagramError: \"Tidak dapat menampilkan diagram ini.\" },\n feedback: {\n no: \"Tidak\",\n question: \"Apakah halaman ini membantu?\",\n thanks: \"Terima kasih atas masukan Anda!\",\n yes: \"Ya\",\n },\n languageSwitcher: { label: \"Bahasa\", untranslated: \"Belum diterjemahkan\" },\n nav: {\n back: \"Kembali\",\n breadcrumb: \"Remah roti\",\n closeNavigation: \"Tutup navigasi\",\n deprecated: \"usang\",\n featured: \"Unggulan\",\n githubRepository: \"Repositori GitHub\",\n navigation: \"Navigasi\",\n primary: \"Utama\",\n sections: \"Bagian\",\n toggleNavigation: \"Buka/tutup navigasi\",\n toggleTheme: \"Ganti tema warna\",\n },\n notFound: {\n description: \"Kami tidak dapat menemukan halaman yang Anda cari.\",\n home: \"Kembali ke beranda\",\n title: \"Halaman tidak ditemukan\",\n },\n page: {\n lastUpdated: \"Terakhir diperbarui\",\n next: \"Berikutnya\",\n pagination: \"Penomoran halaman\",\n previous: \"Sebelumnya\",\n skipToContent: \"Lewati ke konten\",\n },\n search: {\n all: \"Semua\",\n allLanguages: \"Semua bahasa\",\n askAi: \"Tanya AI\",\n askAiHint: \"Dapatkan jawaban instan dari AI\",\n button: \"Cari\",\n devOnly: \"Pencarian tersedia di build produksi.\",\n error: \"Terjadi kesalahan. Silakan coba lagi.\",\n label: \"Cari dokumentasi\",\n navigate: \"navigasi\",\n noResults: \"Tidak ada hasil ditemukan.\",\n open: \"buka\",\n placeholder: \"Cari dokumentasi…\",\n popular: \"Populer\",\n preview: \"pratinjau\",\n results: \"Hasil\",\n },\n toc: { title: \"Di halaman ini\" },\n};\n",
|
|
32
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Italian (it) UI strings. */\nexport const it: UIStringsOverride = {\n actions: {\n addToCursor: \"Aggiungi a Cursor\",\n addToVscode: \"Aggiungi a VS Code\",\n askAI: \"Chiedi all'IA di questa pagina\",\n connectMcp: \"Connetti a MCP\",\n copied: \"Copiato!\",\n copyClaudeCode: \"Copia comando di Claude Code\",\n copyCode: \"Copia codice\",\n copyCodex: \"Copia comando di Codex\",\n copyFailed: \"Copia non riuscita\",\n copyMarkdown: \"Copia come Markdown\",\n copyServerUrl: \"Copia URL del server\",\n edit: \"Modifica su GitHub\",\n export: \"Esporta\",\n exportEpub: \"Esporta in EPUB\",\n exportPdf: \"Esporta in PDF\",\n generating: \"Generazione in corso…\",\n openIn: \"Apri in {name}\",\n openInChat: \"Apri nella chat\",\n openInChatPrompt: \"Leggi {url} così posso farti domande su questa pagina.\",\n scrollToTop: \"Torna su\",\n },\n ask: {\n ai: \"IA\",\n clear: \"Cancella la conversazione\",\n close: \"Chiudi\",\n copy: \"Copia la conversazione\",\n empty: \"Fai una domanda sulla documentazione.\",\n error: \"Spiacenti, qualcosa è andato storto.\",\n label: \"Fai una domanda\",\n placeholder: \"Fai una domanda…\",\n send: \"Invia\",\n tip: \"Suggerimento: puoi aprire e chiudere la chat con\",\n title: \"Chiedi all'IA\",\n you: \"Tu\",\n },\n banner: { dismiss: \"Chiudi l'annuncio\" },\n changelog: {\n description: \"Aggiornamenti del prodotto e note di rilascio.\",\n showReleases: \"Mostra le versioni {version}\",\n title: \"Registro delle modifiche\",\n },\n content: {\n diagramError: \"Impossibile visualizzare questo diagramma.\",\n },\n feedback: {\n no: \"No\",\n question: \"Questa pagina ti è stata utile?\",\n thanks: \"Grazie per il tuo feedback!\",\n yes: \"Sì\",\n },\n languageSwitcher: { label: \"Lingua\", untranslated: \"Non tradotto\" },\n nav: {\n back: \"Indietro\",\n breadcrumb: \"Percorso di navigazione\",\n closeNavigation: \"Chiudi la navigazione\",\n deprecated: \"deprecato\",\n featured: \"In evidenza\",\n githubRepository: \"Repository GitHub\",\n navigation: \"Navigazione\",\n primary: \"Principale\",\n sections: \"Sezioni\",\n toggleNavigation: \"Mostra o nascondi la navigazione\",\n toggleTheme: \"Cambia il tema colore\",\n },\n notFound: {\n description: \"Non siamo riusciti a trovare la pagina che cerchi.\",\n home: \"Torna alla home\",\n title: \"Pagina non trovata\",\n },\n page: {\n lastUpdated: \"Ultimo aggiornamento il\",\n next: \"Successivo\",\n pagination: \"Paginazione\",\n previous: \"Precedente\",\n skipToContent: \"Vai al contenuto\",\n },\n search: {\n all: \"Tutti\",\n allLanguages: \"Tutte le lingue\",\n askAi: \"Chiedi all'IA\",\n askAiHint: \"Ottieni una risposta immediata dall'IA\",\n button: \"Cerca\",\n devOnly: \"La ricerca è disponibile nella build di produzione.\",\n error: \"Qualcosa è andato storto. Riprova.\",\n label: \"Cerca nella documentazione\",\n navigate: \"naviga\",\n noResults: \"Nessun risultato trovato.\",\n open: \"apri\",\n placeholder: \"Cerca nella documentazione…\",\n popular: \"Popolari\",\n preview: \"anteprima\",\n results: \"Risultati\",\n },\n toc: { title: \"In questa pagina\" },\n};\n",
|
|
33
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Japanese (ja) UI strings. */\nexport const ja: UIStringsOverride = {\n actions: {\n addToCursor: \"Cursor に追加\",\n addToVscode: \"VS Code に追加\",\n askAI: \"このページについて AI に質問\",\n connectMcp: \"MCP に接続\",\n copied: \"コピーしました!\",\n copyClaudeCode: \"Claude Code コマンドをコピー\",\n copyCode: \"コードをコピー\",\n copyCodex: \"Codex コマンドをコピー\",\n copyFailed: \"コピーに失敗しました\",\n copyMarkdown: \"Markdown としてコピー\",\n copyServerUrl: \"サーバー URL をコピー\",\n edit: \"GitHub で編集\",\n export: \"エクスポート\",\n exportEpub: \"EPUB にエクスポート\",\n exportPdf: \"PDF にエクスポート\",\n generating: \"生成中…\",\n openIn: \"{name} で開く\",\n openInChat: \"チャットで開く\",\n openInChatPrompt:\n \"{url} を読んで、このページについての質問に答えられるようにしてください。\",\n scrollToTop: \"トップに戻る\",\n },\n ask: {\n ai: \"AI\",\n clear: \"会話をクリア\",\n close: \"閉じる\",\n copy: \"会話をコピー\",\n empty: \"ドキュメントについて質問してください。\",\n error: \"申し訳ありません。問題が発生しました。\",\n label: \"質問する\",\n placeholder: \"質問を入力…\",\n send: \"送信\",\n tip: \"ヒント: 次のキーでチャットを開閉できます\",\n title: \"AI に質問\",\n you: \"あなた\",\n },\n banner: { dismiss: \"お知らせを閉じる\" },\n changelog: {\n description: \"製品のアップデートとリリースノート。\",\n showReleases: \"{version} のリリースを表示\",\n title: \"変更履歴\",\n },\n content: {\n diagramError: \"この図を表示できませんでした。\",\n },\n feedback: {\n no: \"いいえ\",\n question: \"このページは役に立ちましたか?\",\n thanks: \"フィードバックありがとうございます!\",\n yes: \"はい\",\n },\n languageSwitcher: { label: \"言語\", untranslated: \"未翻訳\" },\n nav: {\n back: \"戻る\",\n breadcrumb: \"パンくずリスト\",\n closeNavigation: \"ナビゲーションを閉じる\",\n deprecated: \"非推奨\",\n featured: \"注目\",\n githubRepository: \"GitHub リポジトリ\",\n navigation: \"ナビゲーション\",\n primary: \"メイン\",\n sections: \"セクション\",\n toggleNavigation: \"ナビゲーションを切り替え\",\n toggleTheme: \"カラーテーマを切り替え\",\n },\n notFound: {\n description: \"お探しのページが見つかりませんでした。\",\n home: \"ホームに戻る\",\n title: \"ページが見つかりません\",\n },\n page: {\n lastUpdated: \"最終更新\",\n next: \"次へ\",\n pagination: \"ページネーション\",\n previous: \"前へ\",\n skipToContent: \"コンテンツにスキップ\",\n },\n search: {\n all: \"すべて\",\n allLanguages: \"すべての言語\",\n askAi: \"AI に質問\",\n askAiHint: \"AI からすぐに回答を得る\",\n button: \"検索\",\n devOnly: \"検索は本番ビルドで利用できます。\",\n error: \"問題が発生しました。もう一度お試しください。\",\n label: \"ドキュメントを検索\",\n navigate: \"移動\",\n noResults: \"結果が見つかりませんでした。\",\n open: \"開く\",\n placeholder: \"ドキュメントを検索…\",\n popular: \"人気\",\n preview: \"プレビュー\",\n results: \"結果\",\n },\n toc: { title: \"このページの内容\" },\n};\n",
|
|
34
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Korean (ko) UI strings. */\nexport const ko: UIStringsOverride = {\n actions: {\n addToCursor: \"Cursor에 추가\",\n addToVscode: \"VS Code에 추가\",\n askAI: \"이 페이지에 대해 AI에게 질문\",\n connectMcp: \"MCP에 연결\",\n copied: \"복사됨!\",\n copyClaudeCode: \"Claude Code 명령 복사\",\n copyCode: \"코드 복사\",\n copyCodex: \"Codex 명령 복사\",\n copyFailed: \"복사 실패\",\n copyMarkdown: \"Markdown으로 복사\",\n copyServerUrl: \"서버 URL 복사\",\n edit: \"GitHub에서 편집\",\n export: \"내보내기\",\n exportEpub: \"EPUB으로 내보내기\",\n exportPdf: \"PDF로 내보내기\",\n generating: \"생성 중…\",\n openIn: \"{name}에서 열기\",\n openInChat: \"채팅에서 열기\",\n openInChatPrompt:\n \"{url} 페이지를 읽어 주세요. 이 페이지에 대해 질문하겠습니다.\",\n scrollToTop: \"맨 위로\",\n },\n ask: {\n ai: \"AI\",\n clear: \"대화 지우기\",\n close: \"닫기\",\n copy: \"대화 복사\",\n empty: \"문서에 대해 질문하세요.\",\n error: \"죄송합니다. 문제가 발생했습니다.\",\n label: \"질문하기\",\n placeholder: \"질문하기…\",\n send: \"보내기\",\n tip: \"팁: 다음 키로 채팅을 열고 닫을 수 있습니다\",\n title: \"AI에게 질문\",\n you: \"나\",\n },\n banner: { dismiss: \"공지 닫기\" },\n changelog: {\n description: \"제품 업데이트 및 릴리스 노트.\",\n showReleases: \"{version} 릴리스 보기\",\n title: \"변경 로그\",\n },\n content: {\n diagramError: \"이 다이어그램을 표시할 수 없습니다.\",\n },\n feedback: {\n no: \"아니요\",\n question: \"이 페이지가 도움이 되었나요?\",\n thanks: \"의견 주셔서 감사합니다!\",\n yes: \"예\",\n },\n languageSwitcher: { label: \"언어\", untranslated: \"번역되지 않음\" },\n nav: {\n back: \"뒤로\",\n breadcrumb: \"탐색 경로\",\n closeNavigation: \"탐색 닫기\",\n deprecated: \"지원 중단\",\n featured: \"추천\",\n githubRepository: \"GitHub 저장소\",\n navigation: \"탐색\",\n primary: \"기본\",\n sections: \"섹션\",\n toggleNavigation: \"탐색 전환\",\n toggleTheme: \"색상 테마 전환\",\n },\n notFound: {\n description: \"찾으시는 페이지를 찾을 수 없습니다.\",\n home: \"홈으로 돌아가기\",\n title: \"페이지를 찾을 수 없습니다\",\n },\n page: {\n lastUpdated: \"마지막 업데이트\",\n next: \"다음\",\n pagination: \"페이지네이션\",\n previous: \"이전\",\n skipToContent: \"본문으로 건너뛰기\",\n },\n search: {\n all: \"전체\",\n allLanguages: \"모든 언어\",\n askAi: \"AI에게 질문\",\n askAiHint: \"AI에게 즉시 답변 받기\",\n button: \"검색\",\n devOnly: \"검색은 프로덕션 빌드에서 사용할 수 있습니다.\",\n error: \"문제가 발생했습니다. 다시 시도해 주세요.\",\n label: \"문서 검색\",\n navigate: \"이동\",\n noResults: \"결과를 찾을 수 없습니다.\",\n open: \"열기\",\n placeholder: \"문서 검색…\",\n popular: \"인기\",\n preview: \"미리보기\",\n results: \"결과\",\n },\n toc: { title: \"이 페이지에서\" },\n};\n",
|
|
35
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Dutch (nl) UI strings. */\nexport const nl: UIStringsOverride = {\n actions: {\n addToCursor: \"Toevoegen aan Cursor\",\n addToVscode: \"Toevoegen aan VS Code\",\n askAI: \"AI vragen over deze pagina\",\n connectMcp: \"Verbinden met MCP\",\n copied: \"Gekopieerd!\",\n copyClaudeCode: \"Claude Code-opdracht kopiëren\",\n copyCode: \"Code kopiëren\",\n copyCodex: \"Codex-opdracht kopiëren\",\n copyFailed: \"Kopiëren mislukt\",\n copyMarkdown: \"Kopiëren als Markdown\",\n copyServerUrl: \"Server-URL kopiëren\",\n edit: \"Bewerken op GitHub\",\n export: \"Exporteren\",\n exportEpub: \"Exporteren naar EPUB\",\n exportPdf: \"Exporteren naar PDF\",\n generating: \"Genereren…\",\n openIn: \"Openen in {name}\",\n openInChat: \"Openen in chat\",\n openInChatPrompt:\n \"Lees {url}, zodat ik je vragen kan stellen over deze pagina.\",\n scrollToTop: \"Naar boven scrollen\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Gesprek wissen\",\n close: \"Sluiten\",\n copy: \"Gesprek kopiëren\",\n empty: \"Stel een vraag over de documentatie.\",\n error: \"Sorry, er is iets misgegaan.\",\n label: \"Stel een vraag\",\n placeholder: \"Stel een vraag…\",\n send: \"Verzenden\",\n tip: \"Tip: Je kunt de chat openen en sluiten met\",\n title: \"AI vragen\",\n you: \"Jij\",\n },\n banner: { dismiss: \"Aankondiging sluiten\" },\n changelog: {\n description: \"Productupdates en releaseopmerkingen.\",\n showReleases: \"Releases voor {version} tonen\",\n title: \"Wijzigingslogboek\",\n },\n content: { diagramError: \"Dit diagram kon niet worden weergegeven.\" },\n feedback: {\n no: \"Nee\",\n question: \"Was deze pagina nuttig?\",\n thanks: \"Bedankt voor je feedback!\",\n yes: \"Ja\",\n },\n languageSwitcher: { label: \"Taal\", untranslated: \"Niet vertaald\" },\n nav: {\n back: \"Terug\",\n breadcrumb: \"Kruimelpad\",\n closeNavigation: \"Navigatie sluiten\",\n deprecated: \"verouderd\",\n featured: \"Uitgelicht\",\n githubRepository: \"GitHub-repository\",\n navigation: \"Navigatie\",\n primary: \"Primair\",\n sections: \"Secties\",\n toggleNavigation: \"Navigatie tonen of verbergen\",\n toggleTheme: \"Kleurthema wisselen\",\n },\n notFound: {\n description: \"We konden de pagina die je zoekt niet vinden.\",\n home: \"Terug naar de startpagina\",\n title: \"Pagina niet gevonden\",\n },\n page: {\n lastUpdated: \"Laatst bijgewerkt op\",\n next: \"Volgende\",\n pagination: \"Paginering\",\n previous: \"Vorige\",\n skipToContent: \"Naar inhoud springen\",\n },\n search: {\n all: \"Alle\",\n allLanguages: \"Alle talen\",\n askAi: \"AI vragen\",\n askAiHint: \"Krijg direct antwoord van AI\",\n button: \"Zoeken\",\n devOnly: \"Zoeken is beschikbaar in de productiebuild.\",\n error: \"Er is iets misgegaan. Probeer het opnieuw.\",\n label: \"Documentatie doorzoeken\",\n navigate: \"navigeren\",\n noResults: \"Geen resultaten gevonden.\",\n open: \"openen\",\n placeholder: \"Documentatie doorzoeken…\",\n popular: \"Populair\",\n preview: \"voorbeeld\",\n results: \"Resultaten\",\n },\n toc: { title: \"Op deze pagina\" },\n};\n",
|
|
36
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Norwegian Bokmål (no) UI strings. */\nexport const no: UIStringsOverride = {\n actions: {\n addToCursor: \"Legg til i Cursor\",\n addToVscode: \"Legg til i VS Code\",\n askAI: \"Spør AI om denne siden\",\n connectMcp: \"Koble til MCP\",\n copied: \"Kopiert!\",\n copyClaudeCode: \"Kopier Claude Code-kommando\",\n copyCode: \"Kopier kode\",\n copyCodex: \"Kopier Codex-kommando\",\n copyFailed: \"Kopiering mislyktes\",\n copyMarkdown: \"Kopier som Markdown\",\n copyServerUrl: \"Kopier server-URL\",\n edit: \"Rediger på GitHub\",\n export: \"Eksporter\",\n exportEpub: \"Eksporter til EPUB\",\n exportPdf: \"Eksporter til PDF\",\n generating: \"Genererer…\",\n openIn: \"Åpne i {name}\",\n openInChat: \"Åpne i chat\",\n openInChatPrompt:\n \"Les {url}, slik at jeg kan stille spørsmål om denne siden.\",\n scrollToTop: \"Til toppen\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Tøm samtalen\",\n close: \"Lukk\",\n copy: \"Kopier samtalen\",\n empty: \"Still et spørsmål om dokumentasjonen.\",\n error: \"Beklager, noe gikk galt.\",\n label: \"Still et spørsmål\",\n placeholder: \"Still et spørsmål…\",\n send: \"Send\",\n tip: \"Tips: Du kan åpne og lukke chatten med\",\n title: \"Spør AI\",\n you: \"Du\",\n },\n banner: { dismiss: \"Lukk kunngjøringen\" },\n changelog: {\n description: \"Produktoppdateringer og utgivelsesnotater.\",\n showReleases: \"Vis utgivelser for {version}\",\n title: \"Endringslogg\",\n },\n content: { diagramError: \"Kunne ikke vise dette diagrammet.\" },\n feedback: {\n no: \"Nei\",\n question: \"Var denne siden nyttig?\",\n thanks: \"Takk for tilbakemeldingen!\",\n yes: \"Ja\",\n },\n languageSwitcher: { label: \"Språk\", untranslated: \"Ikke oversatt\" },\n nav: {\n back: \"Tilbake\",\n breadcrumb: \"Brødsmulesti\",\n closeNavigation: \"Lukk navigasjonen\",\n deprecated: \"foreldet\",\n featured: \"Utvalgt\",\n githubRepository: \"GitHub-repositorium\",\n navigation: \"Navigasjon\",\n primary: \"Primær\",\n sections: \"Seksjoner\",\n toggleNavigation: \"Vis eller skjul navigasjonen\",\n toggleTheme: \"Bytt fargetema\",\n },\n notFound: {\n description: \"Vi fant ikke siden du leter etter.\",\n home: \"Tilbake til forsiden\",\n title: \"Siden ble ikke funnet\",\n },\n page: {\n lastUpdated: \"Sist oppdatert\",\n next: \"Neste\",\n pagination: \"Paginering\",\n previous: \"Forrige\",\n skipToContent: \"Hopp til innhold\",\n },\n search: {\n all: \"Alle\",\n allLanguages: \"Alle språk\",\n askAi: \"Spør AI\",\n askAiHint: \"Få et umiddelbart svar fra AI\",\n button: \"Søk\",\n devOnly: \"Søk er tilgjengelig i produksjonsbygget.\",\n error: \"Noe gikk galt. Prøv igjen.\",\n label: \"Søk i dokumentasjonen\",\n navigate: \"naviger\",\n noResults: \"Ingen resultater funnet.\",\n open: \"åpne\",\n placeholder: \"Søk i dokumentasjonen…\",\n popular: \"Populært\",\n preview: \"forhåndsvis\",\n results: \"Resultater\",\n },\n toc: { title: \"På denne siden\" },\n};\n",
|
|
37
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Polish (pl) UI strings. */\nexport const pl: UIStringsOverride = {\n actions: {\n addToCursor: \"Dodaj do Cursor\",\n addToVscode: \"Dodaj do VS Code\",\n askAI: \"Zapytaj AI o tę stronę\",\n connectMcp: \"Połącz z MCP\",\n copied: \"Skopiowano!\",\n copyClaudeCode: \"Kopiuj polecenie Claude Code\",\n copyCode: \"Kopiuj kod\",\n copyCodex: \"Kopiuj polecenie Codex\",\n copyFailed: \"Kopiowanie nie powiodło się\",\n copyMarkdown: \"Kopiuj jako Markdown\",\n copyServerUrl: \"Kopiuj adres URL serwera\",\n edit: \"Edytuj na GitHubie\",\n export: \"Eksportuj\",\n exportEpub: \"Eksportuj do EPUB\",\n exportPdf: \"Eksportuj do PDF\",\n generating: \"Generowanie…\",\n openIn: \"Otwórz w {name}\",\n openInChat: \"Otwórz w czacie\",\n openInChatPrompt:\n \"Przeczytaj {url}, aby móc odpowiadać na pytania dotyczące tej strony.\",\n scrollToTop: \"Wróć na górę\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Wyczyść rozmowę\",\n close: \"Zamknij\",\n copy: \"Kopiuj rozmowę\",\n empty: \"Zadaj pytanie dotyczące dokumentacji.\",\n error: \"Przepraszamy, coś poszło nie tak.\",\n label: \"Zadaj pytanie\",\n placeholder: \"Zadaj pytanie…\",\n send: \"Wyślij\",\n tip: \"Wskazówka: czat możesz otwierać i zamykać za pomocą\",\n title: \"Zapytaj AI\",\n you: \"Ty\",\n },\n banner: { dismiss: \"Zamknij ogłoszenie\" },\n changelog: {\n description: \"Aktualizacje produktu i informacje o wydaniach.\",\n showReleases: \"Pokaż wydania {version}\",\n title: \"Dziennik zmian\",\n },\n content: { diagramError: \"Nie udało się wyświetlić tego diagramu.\" },\n feedback: {\n no: \"Nie\",\n question: \"Czy ta strona była pomocna?\",\n thanks: \"Dziękujemy za opinię!\",\n yes: \"Tak\",\n },\n languageSwitcher: { label: \"Język\", untranslated: \"Nieprzetłumaczone\" },\n nav: {\n back: \"Wstecz\",\n breadcrumb: \"Ścieżka nawigacyjna\",\n closeNavigation: \"Zamknij nawigację\",\n deprecated: \"przestarzałe\",\n featured: \"Polecane\",\n githubRepository: \"Repozytorium GitHub\",\n navigation: \"Nawigacja\",\n primary: \"Główne\",\n sections: \"Sekcje\",\n toggleNavigation: \"Przełącz nawigację\",\n toggleTheme: \"Przełącz motyw kolorystyczny\",\n },\n notFound: {\n description: \"Nie znaleźliśmy strony, której szukasz.\",\n home: \"Wróć na stronę główną\",\n title: \"Nie znaleziono strony\",\n },\n page: {\n lastUpdated: \"Ostatnia aktualizacja\",\n next: \"Następny\",\n pagination: \"Paginacja\",\n previous: \"Poprzedni\",\n skipToContent: \"Przejdź do treści\",\n },\n search: {\n all: \"Wszystkie\",\n allLanguages: \"Wszystkie języki\",\n askAi: \"Zapytaj AI\",\n askAiHint: \"Uzyskaj natychmiastową odpowiedź od AI\",\n button: \"Szukaj\",\n devOnly: \"Wyszukiwanie jest dostępne w kompilacji produkcyjnej.\",\n error: \"Coś poszło nie tak. Spróbuj ponownie.\",\n label: \"Przeszukaj dokumentację\",\n navigate: \"nawigacja\",\n noResults: \"Nie znaleziono wyników.\",\n open: \"otwórz\",\n placeholder: \"Przeszukaj dokumentację…\",\n popular: \"Popularne\",\n preview: \"podgląd\",\n results: \"Wyniki\",\n },\n toc: { title: \"Na tej stronie\" },\n};\n",
|
|
38
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Portuguese — Brazil (pt-BR) UI strings. */\nexport const ptBR: UIStringsOverride = {\n actions: {\n addToCursor: \"Adicionar ao Cursor\",\n addToVscode: \"Adicionar ao VS Code\",\n askAI: \"Perguntar à IA sobre esta página\",\n connectMcp: \"Conectar ao MCP\",\n copied: \"Copiado!\",\n copyClaudeCode: \"Copiar comando do Claude Code\",\n copyCode: \"Copiar código\",\n copyCodex: \"Copiar comando do Codex\",\n copyFailed: \"Falha ao copiar\",\n copyMarkdown: \"Copiar como Markdown\",\n copyServerUrl: \"Copiar URL do servidor\",\n edit: \"Editar no GitHub\",\n export: \"Exportar\",\n exportEpub: \"Exportar para EPUB\",\n exportPdf: \"Exportar para PDF\",\n generating: \"Gerando…\",\n openIn: \"Abrir em {name}\",\n openInChat: \"Abrir no chat\",\n openInChatPrompt:\n \"Leia {url} para que eu possa fazer perguntas sobre esta página.\",\n scrollToTop: \"Voltar ao topo\",\n },\n ask: {\n ai: \"IA\",\n clear: \"Limpar a conversa\",\n close: \"Fechar\",\n copy: \"Copiar a conversa\",\n empty: \"Faça uma pergunta sobre a documentação.\",\n error: \"Desculpe, algo deu errado.\",\n label: \"Faça uma pergunta\",\n placeholder: \"Faça uma pergunta…\",\n send: \"Enviar\",\n tip: \"Dica: você pode abrir e fechar o chat com\",\n title: \"Perguntar à IA\",\n you: \"Você\",\n },\n banner: { dismiss: \"Fechar o anúncio\" },\n changelog: {\n description: \"Atualizações do produto e notas de lançamento.\",\n showReleases: \"Mostrar versões {version}\",\n title: \"Registro de alterações\",\n },\n content: {\n diagramError: \"Não foi possível renderizar este diagrama.\",\n },\n feedback: {\n no: \"Não\",\n question: \"Esta página foi útil?\",\n thanks: \"Obrigado pelo seu feedback!\",\n yes: \"Sim\",\n },\n languageSwitcher: { label: \"Idioma\", untranslated: \"Não traduzido\" },\n nav: {\n back: \"Voltar\",\n breadcrumb: \"Trilha de navegação\",\n closeNavigation: \"Fechar a navegação\",\n deprecated: \"obsoleto\",\n featured: \"Em destaque\",\n githubRepository: \"Repositório do GitHub\",\n navigation: \"Navegação\",\n primary: \"Principal\",\n sections: \"Seções\",\n toggleNavigation: \"Mostrar ou ocultar a navegação\",\n toggleTheme: \"Alternar o tema de cores\",\n },\n notFound: {\n description: \"Não encontramos a página que você está procurando.\",\n home: \"Voltar para a página inicial\",\n title: \"Página não encontrada\",\n },\n page: {\n lastUpdated: \"Última atualização em\",\n next: \"Próximo\",\n pagination: \"Paginação\",\n previous: \"Anterior\",\n skipToContent: \"Pular para o conteúdo\",\n },\n search: {\n all: \"Todos\",\n allLanguages: \"Todos os idiomas\",\n askAi: \"Perguntar à IA\",\n askAiHint: \"Obtenha uma resposta instantânea da IA\",\n button: \"Pesquisar\",\n devOnly: \"A busca está disponível na build de produção.\",\n error: \"Algo deu errado. Tente novamente.\",\n label: \"Pesquisar na documentação\",\n navigate: \"navegar\",\n noResults: \"Nenhum resultado encontrado.\",\n open: \"abrir\",\n placeholder: \"Pesquisar na documentação…\",\n popular: \"Populares\",\n preview: \"pré-visualizar\",\n results: \"Resultados\",\n },\n toc: { title: \"Nesta página\" },\n};\n",
|
|
39
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Portuguese (pt) UI strings. */\nexport const pt: UIStringsOverride = {\n actions: {\n addToCursor: \"Adicionar ao Cursor\",\n addToVscode: \"Adicionar ao VS Code\",\n askAI: \"Perguntar à IA sobre esta página\",\n connectMcp: \"Ligar ao MCP\",\n copied: \"Copiado!\",\n copyClaudeCode: \"Copiar comando do Claude Code\",\n copyCode: \"Copiar código\",\n copyCodex: \"Copiar comando do Codex\",\n copyFailed: \"Falha ao copiar\",\n copyMarkdown: \"Copiar como Markdown\",\n copyServerUrl: \"Copiar URL do servidor\",\n edit: \"Editar no GitHub\",\n export: \"Exportar\",\n exportEpub: \"Exportar para EPUB\",\n exportPdf: \"Exportar para PDF\",\n generating: \"A gerar…\",\n openIn: \"Abrir em {name}\",\n openInChat: \"Abrir no chat\",\n openInChatPrompt:\n \"Leia {url} para que eu possa fazer perguntas sobre esta página.\",\n scrollToTop: \"Voltar ao topo\",\n },\n ask: {\n ai: \"IA\",\n clear: \"Limpar a conversa\",\n close: \"Fechar\",\n copy: \"Copiar a conversa\",\n empty: \"Faça uma pergunta sobre a documentação.\",\n error: \"Lamentamos, algo correu mal.\",\n label: \"Faça uma pergunta\",\n placeholder: \"Faça uma pergunta…\",\n send: \"Enviar\",\n tip: \"Dica: pode abrir e fechar o chat com\",\n title: \"Perguntar à IA\",\n you: \"Você\",\n },\n banner: { dismiss: \"Fechar o anúncio\" },\n changelog: {\n description: \"Atualizações do produto e notas de lançamento.\",\n showReleases: \"Mostrar versões {version}\",\n title: \"Registo de alterações\",\n },\n content: {\n diagramError: \"Não foi possível apresentar este diagrama.\",\n },\n feedback: {\n no: \"Não\",\n question: \"Esta página foi útil?\",\n thanks: \"Obrigado pelo seu feedback!\",\n yes: \"Sim\",\n },\n languageSwitcher: { label: \"Idioma\", untranslated: \"Não traduzido\" },\n nav: {\n back: \"Voltar\",\n breadcrumb: \"Caminho de navegação\",\n closeNavigation: \"Fechar a navegação\",\n deprecated: \"obsoleto\",\n featured: \"Em destaque\",\n githubRepository: \"Repositório do GitHub\",\n navigation: \"Navegação\",\n primary: \"Principal\",\n sections: \"Secções\",\n toggleNavigation: \"Mostrar ou ocultar a navegação\",\n toggleTheme: \"Alternar o tema de cores\",\n },\n notFound: {\n description: \"Não encontrámos a página que procura.\",\n home: \"Voltar à página inicial\",\n title: \"Página não encontrada\",\n },\n page: {\n lastUpdated: \"Última atualização a\",\n next: \"Seguinte\",\n pagination: \"Paginação\",\n previous: \"Anterior\",\n skipToContent: \"Saltar para o conteúdo\",\n },\n search: {\n all: \"Todos\",\n allLanguages: \"Todos os idiomas\",\n askAi: \"Perguntar à IA\",\n askAiHint: \"Obtenha uma resposta instantânea da IA\",\n button: \"Pesquisar\",\n devOnly: \"A pesquisa está disponível na compilação de produção.\",\n error: \"Algo correu mal. Tente novamente.\",\n label: \"Pesquisar na documentação\",\n navigate: \"navegar\",\n noResults: \"Nenhum resultado encontrado.\",\n open: \"abrir\",\n placeholder: \"Pesquisar na documentação…\",\n popular: \"Populares\",\n preview: \"pré-visualizar\",\n results: \"Resultados\",\n },\n toc: { title: \"Nesta página\" },\n};\n",
|
|
40
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Romanian (ro) UI strings. */\nexport const ro: UIStringsOverride = {\n actions: {\n addToCursor: \"Adaugă în Cursor\",\n addToVscode: \"Adaugă în VS Code\",\n askAI: \"Întreabă AI despre această pagină\",\n connectMcp: \"Conectează-te la MCP\",\n copied: \"Copiat!\",\n copyClaudeCode: \"Copiază comanda Claude Code\",\n copyCode: \"Copiază codul\",\n copyCodex: \"Copiază comanda Codex\",\n copyFailed: \"Copierea a eșuat\",\n copyMarkdown: \"Copiază ca Markdown\",\n copyServerUrl: \"Copiază URL-ul serverului\",\n edit: \"Editează pe GitHub\",\n export: \"Exportă\",\n exportEpub: \"Exportă ca EPUB\",\n exportPdf: \"Exportă ca PDF\",\n generating: \"Se generează…\",\n openIn: \"Deschide în {name}\",\n openInChat: \"Deschide în chat\",\n openInChatPrompt:\n \"Citește {url} ca să îți pot pune întrebări despre această pagină.\",\n scrollToTop: \"Sus de tot\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Șterge conversația\",\n close: \"Închide\",\n copy: \"Copiază conversația\",\n empty: \"Pune o întrebare despre documentație.\",\n error: \"Ne pare rău, ceva nu a mers bine.\",\n label: \"Pune o întrebare\",\n placeholder: \"Pune o întrebare…\",\n send: \"Trimite\",\n tip: \"Sfat: Poți deschide și închide chatul cu\",\n title: \"Întreabă AI\",\n you: \"Tu\",\n },\n banner: { dismiss: \"Închide anunțul\" },\n changelog: {\n description: \"Actualizări ale produsului și note de lansare.\",\n showReleases: \"Afișează lansările {version}\",\n title: \"Jurnal de modificări\",\n },\n content: { diagramError: \"Nu s-a putut reda această diagramă.\" },\n feedback: {\n no: \"Nu\",\n question: \"Ți-a fost utilă această pagină?\",\n thanks: \"Mulțumim pentru feedback!\",\n yes: \"Da\",\n },\n languageSwitcher: { label: \"Limbă\", untranslated: \"Netradus\" },\n nav: {\n back: \"Înapoi\",\n breadcrumb: \"Cale de navigare\",\n closeNavigation: \"Închide navigarea\",\n deprecated: \"învechit\",\n featured: \"Recomandate\",\n githubRepository: \"Depozit GitHub\",\n navigation: \"Navigare\",\n primary: \"Principal\",\n sections: \"Secțiuni\",\n toggleNavigation: \"Comută navigarea\",\n toggleTheme: \"Comută tema de culoare\",\n },\n notFound: {\n description: \"Nu am găsit pagina pe care o cauți.\",\n home: \"Înapoi la pagina principală\",\n title: \"Pagina nu a fost găsită\",\n },\n page: {\n lastUpdated: \"Ultima actualizare\",\n next: \"Următorul\",\n pagination: \"Paginare\",\n previous: \"Anteriorul\",\n skipToContent: \"Sari la conținut\",\n },\n search: {\n all: \"Toate\",\n allLanguages: \"Toate limbile\",\n askAi: \"Întreabă AI\",\n askAiHint: \"Primește un răspuns instantaneu de la AI\",\n button: \"Caută\",\n devOnly: \"Căutarea este disponibilă în versiunea de producție.\",\n error: \"Ceva nu a mers bine. Încearcă din nou.\",\n label: \"Caută în documentație\",\n navigate: \"navighează\",\n noResults: \"Niciun rezultat găsit.\",\n open: \"deschide\",\n placeholder: \"Caută în documentație…\",\n popular: \"Populare\",\n preview: \"previzualizează\",\n results: \"Rezultate\",\n },\n toc: { title: \"Pe această pagină\" },\n};\n",
|
|
41
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Russian (ru) UI strings. */\nexport const ru: UIStringsOverride = {\n actions: {\n addToCursor: \"Добавить в Cursor\",\n addToVscode: \"Добавить в VS Code\",\n askAI: \"Спросить ИИ об этой странице\",\n connectMcp: \"Подключиться к MCP\",\n copied: \"Скопировано!\",\n copyClaudeCode: \"Скопировать команду Claude Code\",\n copyCode: \"Скопировать код\",\n copyCodex: \"Скопировать команду Codex\",\n copyFailed: \"Не удалось скопировать\",\n copyMarkdown: \"Скопировать как Markdown\",\n copyServerUrl: \"Скопировать URL сервера\",\n edit: \"Редактировать на GitHub\",\n export: \"Экспорт\",\n exportEpub: \"Экспорт в EPUB\",\n exportPdf: \"Экспорт в PDF\",\n generating: \"Генерация…\",\n openIn: \"Открыть в {name}\",\n openInChat: \"Открыть в чате\",\n openInChatPrompt:\n \"Прочитайте {url} — я буду задавать вопросы об этой странице.\",\n scrollToTop: \"Наверх\",\n },\n ask: {\n ai: \"ИИ\",\n clear: \"Очистить беседу\",\n close: \"Закрыть\",\n copy: \"Скопировать беседу\",\n empty: \"Задайте вопрос по документации.\",\n error: \"Извините, что-то пошло не так.\",\n label: \"Задать вопрос\",\n placeholder: \"Задайте вопрос…\",\n send: \"Отправить\",\n tip: \"Совет: чат можно открыть и закрыть с помощью\",\n title: \"Спросить ИИ\",\n you: \"Вы\",\n },\n banner: { dismiss: \"Закрыть объявление\" },\n changelog: {\n description: \"Обновления продукта и примечания к выпускам.\",\n showReleases: \"Показать выпуски {version}\",\n title: \"Журнал изменений\",\n },\n content: { diagramError: \"Не удалось отобразить эту диаграмму.\" },\n feedback: {\n no: \"Нет\",\n question: \"Эта страница была полезной?\",\n thanks: \"Спасибо за ваш отзыв!\",\n yes: \"Да\",\n },\n languageSwitcher: { label: \"Язык\", untranslated: \"Не переведено\" },\n nav: {\n back: \"Назад\",\n breadcrumb: \"Навигационная цепочка\",\n closeNavigation: \"Закрыть навигацию\",\n deprecated: \"устарело\",\n featured: \"Рекомендуемое\",\n githubRepository: \"Репозиторий GitHub\",\n navigation: \"Навигация\",\n primary: \"Основное\",\n sections: \"Разделы\",\n toggleNavigation: \"Переключить навигацию\",\n toggleTheme: \"Переключить цветовую тему\",\n },\n notFound: {\n description: \"Не удалось найти страницу, которую вы ищете.\",\n home: \"Вернуться на главную\",\n title: \"Страница не найдена\",\n },\n page: {\n lastUpdated: \"Последнее обновление\",\n next: \"Далее\",\n pagination: \"Пагинация\",\n previous: \"Назад\",\n skipToContent: \"Перейти к содержимому\",\n },\n search: {\n all: \"Все\",\n allLanguages: \"Все языки\",\n askAi: \"Спросить ИИ\",\n askAiHint: \"Получите мгновенный ответ от ИИ\",\n button: \"Поиск\",\n devOnly: \"Поиск доступен в production-сборке.\",\n error: \"Что-то пошло не так. Попробуйте ещё раз.\",\n label: \"Поиск по документации\",\n navigate: \"навигация\",\n noResults: \"Ничего не найдено.\",\n open: \"открыть\",\n placeholder: \"Поиск по документации…\",\n popular: \"Популярное\",\n preview: \"предпросмотр\",\n results: \"Результаты\",\n },\n toc: { title: \"На этой странице\" },\n};\n",
|
|
42
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Slovak (sk) UI strings. */\nexport const sk: UIStringsOverride = {\n actions: {\n addToCursor: \"Pridať do Cursoru\",\n addToVscode: \"Pridať do VS Code\",\n askAI: \"Opýtať sa AI na túto stránku\",\n connectMcp: \"Pripojiť k MCP\",\n copied: \"Skopírované!\",\n copyClaudeCode: \"Kopírovať príkaz Claude Code\",\n copyCode: \"Kopírovať kód\",\n copyCodex: \"Kopírovať príkaz Codex\",\n copyFailed: \"Kopírovanie zlyhalo\",\n copyMarkdown: \"Kopírovať ako Markdown\",\n copyServerUrl: \"Kopírovať URL servera\",\n edit: \"Upraviť na GitHube\",\n export: \"Exportovať\",\n exportEpub: \"Exportovať do EPUB\",\n exportPdf: \"Exportovať do PDF\",\n generating: \"Generovanie…\",\n openIn: \"Otvoriť v {name}\",\n openInChat: \"Otvoriť v chate\",\n openInChatPrompt: \"Prečítajte si {url} — budem sa pýtať na túto stránku.\",\n scrollToTop: \"Späť nahor\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Vymazať konverzáciu\",\n close: \"Zavrieť\",\n copy: \"Kopírovať konverzáciu\",\n empty: \"Opýtajte sa na dokumentáciu.\",\n error: \"Ospravedlňujeme sa, niečo sa pokazilo.\",\n label: \"Položiť otázku\",\n placeholder: \"Položiť otázku…\",\n send: \"Odoslať\",\n tip: \"Tip: Chat môžete otvoriť a zavrieť pomocou\",\n title: \"Opýtať sa AI\",\n you: \"Vy\",\n },\n banner: { dismiss: \"Zavrieť oznámenie\" },\n changelog: {\n description: \"Novinky produktu a poznámky k vydaniu.\",\n showReleases: \"Zobraziť vydania {version}\",\n title: \"Zoznam zmien\",\n },\n content: { diagramError: \"Tento diagram sa nepodarilo vykresliť.\" },\n feedback: {\n no: \"Nie\",\n question: \"Bola táto stránka užitočná?\",\n thanks: \"Ďakujeme za vašu spätnú väzbu!\",\n yes: \"Áno\",\n },\n languageSwitcher: { label: \"Jazyk\", untranslated: \"Nepreložené\" },\n nav: {\n back: \"Späť\",\n breadcrumb: \"Omrvinková navigácia\",\n closeNavigation: \"Zavrieť navigáciu\",\n deprecated: \"zastarané\",\n featured: \"Odporúčané\",\n githubRepository: \"Repozitár na GitHube\",\n navigation: \"Navigácia\",\n primary: \"Hlavné\",\n sections: \"Sekcie\",\n toggleNavigation: \"Prepnúť navigáciu\",\n toggleTheme: \"Prepnúť farebný motív\",\n },\n notFound: {\n description: \"Stránku, ktorú hľadáte, sa nepodarilo nájsť.\",\n home: \"Späť na úvodnú stránku\",\n title: \"Stránka sa nenašla\",\n },\n page: {\n lastUpdated: \"Naposledy aktualizované\",\n next: \"Ďalej\",\n pagination: \"Stránkovanie\",\n previous: \"Predchádzajúce\",\n skipToContent: \"Prejsť na obsah\",\n },\n search: {\n all: \"Všetko\",\n allLanguages: \"Všetky jazyky\",\n askAi: \"Opýtať sa AI\",\n askAiHint: \"Získajte okamžitú odpoveď od AI\",\n button: \"Hľadať\",\n devOnly: \"Vyhľadávanie je dostupné v produkčnom builde.\",\n error: \"Niečo sa pokazilo. Skúste to znova.\",\n label: \"Prehľadať dokumentáciu\",\n navigate: \"navigácia\",\n noResults: \"Nenašli sa žiadne výsledky.\",\n open: \"otvoriť\",\n placeholder: \"Prehľadať dokumentáciu…\",\n popular: \"Populárne\",\n preview: \"náhľad\",\n results: \"Výsledky\",\n },\n toc: { title: \"Na tejto stránke\" },\n};\n",
|
|
43
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Serbian (sr) UI strings. */\nexport const sr: UIStringsOverride = {\n actions: {\n addToCursor: \"Додај у Cursor\",\n addToVscode: \"Додај у VS Code\",\n askAI: \"Питајте AI о овој страници\",\n connectMcp: \"Повежи се са MCP-ом\",\n copied: \"Копирано!\",\n copyClaudeCode: \"Копирај Claude Code команду\",\n copyCode: \"Копирај код\",\n copyCodex: \"Копирај Codex команду\",\n copyFailed: \"Копирање није успело\",\n copyMarkdown: \"Копирај као Markdown\",\n copyServerUrl: \"Копирај URL сервера\",\n edit: \"Уреди на GitHub-у\",\n export: \"Извези\",\n exportEpub: \"Извези у EPUB\",\n exportPdf: \"Извези у PDF\",\n generating: \"Генерисање…\",\n openIn: \"Отвори у {name}\",\n openInChat: \"Отвори у ћаскању\",\n openInChatPrompt: \"Прочитајте {url} — постављаћу питања о овој страници.\",\n scrollToTop: \"Назад на врх\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Обриши разговор\",\n close: \"Затвори\",\n copy: \"Копирај разговор\",\n empty: \"Поставите питање о документацији.\",\n error: \"Жао нам је, нешто је пошло наопако.\",\n label: \"Постави питање\",\n placeholder: \"Поставите питање…\",\n send: \"Пошаљи\",\n tip: \"Савет: Ћаскање можете отворити и затворити помоћу\",\n title: \"Питајте AI\",\n you: \"Ви\",\n },\n banner: { dismiss: \"Затвори обавештење\" },\n changelog: {\n description: \"Ажурирања производа и белешке о издањима.\",\n showReleases: \"Прикажи издања {version}\",\n title: \"Дневник измена\",\n },\n content: { diagramError: \"Није могуће приказати овај дијаграм.\" },\n feedback: {\n no: \"Не\",\n question: \"Да ли вам је ова страница помогла?\",\n thanks: \"Хвала на вашој повратној информацији!\",\n yes: \"Да\",\n },\n languageSwitcher: { label: \"Језик\", untranslated: \"Није преведено\" },\n nav: {\n back: \"Назад\",\n breadcrumb: \"Путања навигације\",\n closeNavigation: \"Затвори навигацију\",\n deprecated: \"застарело\",\n featured: \"Истакнуто\",\n githubRepository: \"GitHub репозиторијум\",\n navigation: \"Навигација\",\n primary: \"Главна\",\n sections: \"Одељци\",\n toggleNavigation: \"Отвори или затвори навигацију\",\n toggleTheme: \"Промени тему боја\",\n },\n notFound: {\n description: \"Нисмо могли да пронађемо страницу коју тражите.\",\n home: \"Назад на почетну\",\n title: \"Страница није пронађена\",\n },\n page: {\n lastUpdated: \"Последње ажурирање\",\n next: \"Следеће\",\n pagination: \"Пагинација\",\n previous: \"Претходно\",\n skipToContent: \"Пређи на садржај\",\n },\n search: {\n all: \"Све\",\n allLanguages: \"Сви језици\",\n askAi: \"Питајте AI\",\n askAiHint: \"Добијте тренутан одговор од AI-ја\",\n button: \"Претражи\",\n devOnly: \"Претрага је доступна у продукцијској верзији.\",\n error: \"Нешто је пошло наопако. Покушајте поново.\",\n label: \"Претражи документацију\",\n navigate: \"навигација\",\n noResults: \"Нема резултата.\",\n open: \"отвори\",\n placeholder: \"Претражи документацију…\",\n popular: \"Популарно\",\n preview: \"преглед\",\n results: \"Резултати\",\n },\n toc: { title: \"На овој страници\" },\n};\n",
|
|
44
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Swedish (sv) UI strings. */\nexport const sv: UIStringsOverride = {\n actions: {\n addToCursor: \"Lägg till i Cursor\",\n addToVscode: \"Lägg till i VS Code\",\n askAI: \"Fråga AI om den här sidan\",\n connectMcp: \"Anslut till MCP\",\n copied: \"Kopierat!\",\n copyClaudeCode: \"Kopiera Claude Code-kommando\",\n copyCode: \"Kopiera kod\",\n copyCodex: \"Kopiera Codex-kommando\",\n copyFailed: \"Kopiering misslyckades\",\n copyMarkdown: \"Kopiera som Markdown\",\n copyServerUrl: \"Kopiera server-URL\",\n edit: \"Redigera på GitHub\",\n export: \"Exportera\",\n exportEpub: \"Exportera till EPUB\",\n exportPdf: \"Exportera till PDF\",\n generating: \"Genererar…\",\n openIn: \"Öppna i {name}\",\n openInChat: \"Öppna i chatt\",\n openInChatPrompt:\n \"Läs {url} så att jag kan ställa frågor om den här sidan.\",\n scrollToTop: \"Till toppen\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Rensa konversationen\",\n close: \"Stäng\",\n copy: \"Kopiera konversationen\",\n empty: \"Ställ en fråga om dokumentationen.\",\n error: \"Tyvärr, något gick fel.\",\n label: \"Ställ en fråga\",\n placeholder: \"Ställ en fråga…\",\n send: \"Skicka\",\n tip: \"Tips: Du kan öppna och stänga chatten med\",\n title: \"Fråga AI\",\n you: \"Du\",\n },\n banner: { dismiss: \"Stäng meddelandet\" },\n changelog: {\n description: \"Produktuppdateringar och versionsinformation.\",\n showReleases: \"Visa utgåvor för {version}\",\n title: \"Ändringslogg\",\n },\n content: { diagramError: \"Det här diagrammet kunde inte visas.\" },\n feedback: {\n no: \"Nej\",\n question: \"Var den här sidan till hjälp?\",\n thanks: \"Tack för din feedback!\",\n yes: \"Ja\",\n },\n languageSwitcher: { label: \"Språk\", untranslated: \"Inte översatt\" },\n nav: {\n back: \"Tillbaka\",\n breadcrumb: \"Brödsmulor\",\n closeNavigation: \"Stäng navigeringen\",\n deprecated: \"utfasad\",\n featured: \"Utvalda\",\n githubRepository: \"GitHub-repository\",\n navigation: \"Navigering\",\n primary: \"Primär\",\n sections: \"Avsnitt\",\n toggleNavigation: \"Växla navigering\",\n toggleTheme: \"Växla färgtema\",\n },\n notFound: {\n description: \"Vi kunde inte hitta sidan du letar efter.\",\n home: \"Tillbaka till startsidan\",\n title: \"Sidan hittades inte\",\n },\n page: {\n lastUpdated: \"Senast uppdaterad\",\n next: \"Nästa\",\n pagination: \"Paginering\",\n previous: \"Föregående\",\n skipToContent: \"Hoppa till innehåll\",\n },\n search: {\n all: \"Alla\",\n allLanguages: \"Alla språk\",\n askAi: \"Fråga AI\",\n askAiHint: \"Få ett omedelbart svar från AI\",\n button: \"Sök\",\n devOnly: \"Sökning är tillgänglig i produktionsbygget.\",\n error: \"Något gick fel. Försök igen.\",\n label: \"Sök i dokumentationen\",\n navigate: \"navigera\",\n noResults: \"Inga resultat hittades.\",\n open: \"öppna\",\n placeholder: \"Sök i dokumentationen…\",\n popular: \"Populärt\",\n preview: \"förhandsvisa\",\n results: \"Resultat\",\n },\n toc: { title: \"På den här sidan\" },\n};\n",
|
|
45
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Thai (th) UI strings. */\nexport const th: UIStringsOverride = {\n actions: {\n addToCursor: \"เพิ่มไปยัง Cursor\",\n addToVscode: \"เพิ่มไปยัง VS Code\",\n askAI: \"ถาม AI เกี่ยวกับหน้านี้\",\n connectMcp: \"เชื่อมต่อกับ MCP\",\n copied: \"คัดลอกแล้ว!\",\n copyClaudeCode: \"คัดลอกคำสั่ง Claude Code\",\n copyCode: \"คัดลอกโค้ด\",\n copyCodex: \"คัดลอกคำสั่ง Codex\",\n copyFailed: \"คัดลอกไม่สำเร็จ\",\n copyMarkdown: \"คัดลอกเป็น Markdown\",\n copyServerUrl: \"คัดลอก URL ของเซิร์ฟเวอร์\",\n edit: \"แก้ไขบน GitHub\",\n export: \"ส่งออก\",\n exportEpub: \"ส่งออกเป็น EPUB\",\n exportPdf: \"ส่งออกเป็น PDF\",\n generating: \"กำลังสร้าง…\",\n openIn: \"เปิดใน {name}\",\n openInChat: \"เปิดในแชท\",\n openInChatPrompt: \"อ่าน {url} เพื่อให้ฉันถามคำถามเกี่ยวกับหน้านี้ได้\",\n scrollToTop: \"กลับไปด้านบน\",\n },\n ask: {\n ai: \"AI\",\n clear: \"ล้างการสนทนา\",\n close: \"ปิด\",\n copy: \"คัดลอกการสนทนา\",\n empty: \"ถามคำถามเกี่ยวกับเอกสาร\",\n error: \"ขออภัย เกิดข้อผิดพลาดบางอย่าง\",\n label: \"ถามคำถาม\",\n placeholder: \"ถามคำถาม…\",\n send: \"ส่ง\",\n tip: \"เคล็ดลับ: คุณสามารถเปิดและปิดแชทได้ด้วย\",\n title: \"ถาม AI\",\n you: \"คุณ\",\n },\n banner: { dismiss: \"ปิดประกาศ\" },\n changelog: {\n description: \"อัปเดตผลิตภัณฑ์และบันทึกประจำรุ่น\",\n showReleases: \"แสดงรุ่นของ {version}\",\n title: \"บันทึกการเปลี่ยนแปลง\",\n },\n content: {\n diagramError: \"ไม่สามารถแสดงไดอะแกรมนี้ได้\",\n },\n feedback: {\n no: \"ไม่\",\n question: \"หน้านี้มีประโยชน์หรือไม่?\",\n thanks: \"ขอบคุณสำหรับความคิดเห็นของคุณ!\",\n yes: \"ใช่\",\n },\n languageSwitcher: { label: \"ภาษา\", untranslated: \"ยังไม่ได้แปล\" },\n nav: {\n back: \"ย้อนกลับ\",\n breadcrumb: \"เส้นทางนำทาง\",\n closeNavigation: \"ปิดการนำทาง\",\n deprecated: \"เลิกใช้แล้ว\",\n featured: \"แนะนำ\",\n githubRepository: \"ที่เก็บ GitHub\",\n navigation: \"การนำทาง\",\n primary: \"หลัก\",\n sections: \"หมวด\",\n toggleNavigation: \"สลับการนำทาง\",\n toggleTheme: \"สลับธีมสี\",\n },\n notFound: {\n description: \"เราไม่พบหน้าที่คุณกำลังมองหา\",\n home: \"กลับไปหน้าแรก\",\n title: \"ไม่พบหน้า\",\n },\n page: {\n lastUpdated: \"อัปเดตล่าสุดเมื่อ\",\n next: \"ถัดไป\",\n pagination: \"การแบ่งหน้า\",\n previous: \"ก่อนหน้า\",\n skipToContent: \"ข้ามไปยังเนื้อหา\",\n },\n search: {\n all: \"ทั้งหมด\",\n allLanguages: \"ทุกภาษา\",\n askAi: \"ถาม AI\",\n askAiHint: \"รับคำตอบทันทีจาก AI\",\n button: \"ค้นหา\",\n devOnly: \"การค้นหาพร้อมใช้งานในบิลด์โปรดักชัน\",\n error: \"เกิดข้อผิดพลาดบางอย่าง โปรดลองอีกครั้ง\",\n label: \"ค้นหาเอกสาร\",\n navigate: \"นำทาง\",\n noResults: \"ไม่พบผลลัพธ์\",\n open: \"เปิด\",\n placeholder: \"ค้นหาเอกสาร…\",\n popular: \"ยอดนิยม\",\n preview: \"ดูตัวอย่าง\",\n results: \"ผลลัพธ์\",\n },\n toc: { title: \"ในหน้านี้\" },\n};\n",
|
|
46
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Turkish (tr) UI strings. */\nexport const tr: UIStringsOverride = {\n actions: {\n addToCursor: \"Cursor'a ekle\",\n addToVscode: \"VS Code'a ekle\",\n askAI: \"Bu sayfa hakkında yapay zekâya sor\",\n connectMcp: \"MCP'ye bağlan\",\n copied: \"Kopyalandı!\",\n copyClaudeCode: \"Claude Code komutunu kopyala\",\n copyCode: \"Kodu kopyala\",\n copyCodex: \"Codex komutunu kopyala\",\n copyFailed: \"Kopyalama başarısız oldu\",\n copyMarkdown: \"Markdown olarak kopyala\",\n copyServerUrl: \"Sunucu URL'sini kopyala\",\n edit: \"GitHub'da düzenle\",\n export: \"Dışa aktar\",\n exportEpub: \"EPUB olarak dışa aktar\",\n exportPdf: \"PDF olarak dışa aktar\",\n generating: \"Oluşturuluyor…\",\n openIn: \"{name} içinde aç\",\n openInChat: \"Sohbette aç\",\n openInChatPrompt:\n \"Bu sayfa hakkında sorular sorabilmem için {url} adresini okuyun.\",\n scrollToTop: \"Başa dön\",\n },\n ask: {\n ai: \"Yapay zekâ\",\n clear: \"Konuşmayı temizle\",\n close: \"Kapat\",\n copy: \"Konuşmayı kopyala\",\n empty: \"Belgeler hakkında bir soru sorun.\",\n error: \"Üzgünüz, bir şeyler ters gitti.\",\n label: \"Bir soru sorun\",\n placeholder: \"Bir soru sorun…\",\n send: \"Gönder\",\n tip: \"İpucu: Sohbeti şu tuşla açıp kapatabilirsiniz:\",\n title: \"Yapay zekâya sor\",\n you: \"Siz\",\n },\n banner: { dismiss: \"Duyuruyu kapat\" },\n changelog: {\n description: \"Ürün güncellemeleri ve sürüm notları.\",\n showReleases: \"{version} sürümlerini göster\",\n title: \"Değişiklik günlüğü\",\n },\n content: { diagramError: \"Bu diyagram görüntülenemedi.\" },\n feedback: {\n no: \"Hayır\",\n question: \"Bu sayfa yardımcı oldu mu?\",\n thanks: \"Geri bildiriminiz için teşekkürler!\",\n yes: \"Evet\",\n },\n languageSwitcher: { label: \"Dil\", untranslated: \"Çevrilmemiş\" },\n nav: {\n back: \"Geri\",\n breadcrumb: \"Gezinme yolu\",\n closeNavigation: \"Gezinmeyi kapat\",\n deprecated: \"kullanımdan kaldırıldı\",\n featured: \"Öne çıkan\",\n githubRepository: \"GitHub deposu\",\n navigation: \"Gezinme\",\n primary: \"Birincil\",\n sections: \"Bölümler\",\n toggleNavigation: \"Gezinmeyi aç/kapat\",\n toggleTheme: \"Renk temasını değiştir\",\n },\n notFound: {\n description: \"Aradığınız sayfayı bulamadık.\",\n home: \"Ana sayfaya dön\",\n title: \"Sayfa bulunamadı\",\n },\n page: {\n lastUpdated: \"Son güncelleme\",\n next: \"Sonraki\",\n pagination: \"Sayfalama\",\n previous: \"Önceki\",\n skipToContent: \"İçeriğe geç\",\n },\n search: {\n all: \"Tümü\",\n allLanguages: \"Tüm diller\",\n askAi: \"Yapay zekâya sor\",\n askAiHint: \"Yapay zekâdan anında yanıt alın\",\n button: \"Ara\",\n devOnly: \"Arama, üretim derlemesinde kullanılabilir.\",\n error: \"Bir şeyler ters gitti. Lütfen tekrar deneyin.\",\n label: \"Belgelerde ara\",\n navigate: \"gezin\",\n noResults: \"Sonuç bulunamadı.\",\n open: \"aç\",\n placeholder: \"Belgelerde ara…\",\n popular: \"Popüler\",\n preview: \"önizle\",\n results: \"Sonuçlar\",\n },\n toc: { title: \"Bu sayfada\" },\n};\n",
|
|
47
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Ukrainian (uk) UI strings. */\nexport const uk: UIStringsOverride = {\n actions: {\n addToCursor: \"Додати до Cursor\",\n addToVscode: \"Додати до VS Code\",\n askAI: \"Запитати ШІ про цю сторінку\",\n connectMcp: \"Підключитися до MCP\",\n copied: \"Скопійовано!\",\n copyClaudeCode: \"Скопіювати команду Claude Code\",\n copyCode: \"Скопіювати код\",\n copyCodex: \"Скопіювати команду Codex\",\n copyFailed: \"Не вдалося скопіювати\",\n copyMarkdown: \"Скопіювати як Markdown\",\n copyServerUrl: \"Скопіювати URL сервера\",\n edit: \"Редагувати на GitHub\",\n export: \"Експорт\",\n exportEpub: \"Експорт в EPUB\",\n exportPdf: \"Експорт у PDF\",\n generating: \"Генерація…\",\n openIn: \"Відкрити в {name}\",\n openInChat: \"Відкрити в чаті\",\n openInChatPrompt:\n \"Прочитайте {url} — я ставитиму запитання щодо цієї сторінки.\",\n scrollToTop: \"Нагору\",\n },\n ask: {\n ai: \"ШІ\",\n clear: \"Очистити бесіду\",\n close: \"Закрити\",\n copy: \"Скопіювати бесіду\",\n empty: \"Поставте запитання щодо документації.\",\n error: \"Вибачте, щось пішло не так.\",\n label: \"Поставити запитання\",\n placeholder: \"Поставте запитання…\",\n send: \"Надіслати\",\n tip: \"Порада: чат можна відкрити й закрити за допомогою\",\n title: \"Запитати ШІ\",\n you: \"Ви\",\n },\n banner: { dismiss: \"Закрити оголошення\" },\n changelog: {\n description: \"Оновлення продукту та примітки до випусків.\",\n showReleases: \"Показати випуски {version}\",\n title: \"Журнал змін\",\n },\n content: { diagramError: \"Не вдалося відобразити цю діаграму.\" },\n feedback: {\n no: \"Ні\",\n question: \"Чи була ця сторінка корисною?\",\n thanks: \"Дякуємо за ваш відгук!\",\n yes: \"Так\",\n },\n languageSwitcher: { label: \"Мова\", untranslated: \"Не перекладено\" },\n nav: {\n back: \"Назад\",\n breadcrumb: \"Навігаційний ланцюжок\",\n closeNavigation: \"Закрити навігацію\",\n deprecated: \"застаріле\",\n featured: \"Рекомендоване\",\n githubRepository: \"Репозиторій GitHub\",\n navigation: \"Навігація\",\n primary: \"Основне\",\n sections: \"Розділи\",\n toggleNavigation: \"Перемкнути навігацію\",\n toggleTheme: \"Перемкнути колірну тему\",\n },\n notFound: {\n description: \"Не вдалося знайти сторінку, яку ви шукаєте.\",\n home: \"Повернутися на головну\",\n title: \"Сторінку не знайдено\",\n },\n page: {\n lastUpdated: \"Останнє оновлення\",\n next: \"Далі\",\n pagination: \"Пагінація\",\n previous: \"Назад\",\n skipToContent: \"Перейти до вмісту\",\n },\n search: {\n all: \"Усі\",\n allLanguages: \"Усі мови\",\n askAi: \"Запитати ШІ\",\n askAiHint: \"Отримайте миттєву відповідь від ШІ\",\n button: \"Пошук\",\n devOnly: \"Пошук доступний у production-збірці.\",\n error: \"Щось пішло не так. Спробуйте ще раз.\",\n label: \"Пошук у документації\",\n navigate: \"навігація\",\n noResults: \"Нічого не знайдено.\",\n open: \"відкрити\",\n placeholder: \"Пошук у документації…\",\n popular: \"Популярне\",\n preview: \"перегляд\",\n results: \"Результати\",\n },\n toc: { title: \"На цій сторінці\" },\n};\n",
|
|
48
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Vietnamese (vi) UI strings. */\nexport const vi: UIStringsOverride = {\n actions: {\n addToCursor: \"Thêm vào Cursor\",\n addToVscode: \"Thêm vào VS Code\",\n askAI: \"Hỏi AI về trang này\",\n connectMcp: \"Kết nối với MCP\",\n copied: \"Đã sao chép!\",\n copyClaudeCode: \"Sao chép lệnh Claude Code\",\n copyCode: \"Sao chép mã\",\n copyCodex: \"Sao chép lệnh Codex\",\n copyFailed: \"Sao chép thất bại\",\n copyMarkdown: \"Sao chép dưới dạng Markdown\",\n copyServerUrl: \"Sao chép URL máy chủ\",\n edit: \"Chỉnh sửa trên GitHub\",\n export: \"Xuất\",\n exportEpub: \"Xuất ra EPUB\",\n exportPdf: \"Xuất ra PDF\",\n generating: \"Đang tạo…\",\n openIn: \"Mở trong {name}\",\n openInChat: \"Mở trong trò chuyện\",\n openInChatPrompt: \"Hãy đọc {url} để tôi có thể đặt câu hỏi về trang này.\",\n scrollToTop: \"Lên đầu trang\",\n },\n ask: {\n ai: \"AI\",\n clear: \"Xóa cuộc trò chuyện\",\n close: \"Đóng\",\n copy: \"Sao chép cuộc trò chuyện\",\n empty: \"Đặt câu hỏi về tài liệu.\",\n error: \"Xin lỗi, đã xảy ra sự cố.\",\n label: \"Đặt câu hỏi\",\n placeholder: \"Đặt câu hỏi…\",\n send: \"Gửi\",\n tip: \"Mẹo: Bạn có thể mở và đóng trò chuyện bằng\",\n title: \"Hỏi AI\",\n you: \"Bạn\",\n },\n banner: { dismiss: \"Đóng thông báo\" },\n changelog: {\n description: \"Cập nhật sản phẩm và ghi chú phát hành.\",\n showReleases: \"Hiện các bản phát hành {version}\",\n title: \"Nhật ký thay đổi\",\n },\n content: {\n diagramError: \"Không thể hiển thị sơ đồ này.\",\n },\n feedback: {\n no: \"Không\",\n question: \"Trang này có hữu ích không?\",\n thanks: \"Cảm ơn phản hồi của bạn!\",\n yes: \"Có\",\n },\n languageSwitcher: { label: \"Ngôn ngữ\", untranslated: \"Chưa dịch\" },\n nav: {\n back: \"Quay lại\",\n breadcrumb: \"Đường dẫn điều hướng\",\n closeNavigation: \"Đóng điều hướng\",\n deprecated: \"lỗi thời\",\n featured: \"Nổi bật\",\n githubRepository: \"Kho lưu trữ GitHub\",\n navigation: \"Điều hướng\",\n primary: \"Chính\",\n sections: \"Chuyên mục\",\n toggleNavigation: \"Chuyển đổi điều hướng\",\n toggleTheme: \"Chuyển đổi chủ đề màu\",\n },\n notFound: {\n description: \"Chúng tôi không tìm thấy trang bạn đang tìm.\",\n home: \"Về trang chủ\",\n title: \"Không tìm thấy trang\",\n },\n page: {\n lastUpdated: \"Cập nhật lần cuối\",\n next: \"Tiếp theo\",\n pagination: \"Phân trang\",\n previous: \"Trước\",\n skipToContent: \"Chuyển đến nội dung\",\n },\n search: {\n all: \"Tất cả\",\n allLanguages: \"Tất cả ngôn ngữ\",\n askAi: \"Hỏi AI\",\n askAiHint: \"Nhận câu trả lời tức thì từ AI\",\n button: \"Tìm kiếm\",\n devOnly: \"Tìm kiếm có sẵn trong bản dựng production.\",\n error: \"Đã xảy ra sự cố. Vui lòng thử lại.\",\n label: \"Tìm kiếm tài liệu\",\n navigate: \"di chuyển\",\n noResults: \"Không tìm thấy kết quả.\",\n open: \"mở\",\n placeholder: \"Tìm kiếm tài liệu…\",\n popular: \"Phổ biến\",\n preview: \"xem trước\",\n results: \"Kết quả\",\n },\n toc: { title: \"Trên trang này\" },\n};\n",
|
|
49
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Chinese — Traditional (zh-TW) UI strings. */\nexport const zhTW: UIStringsOverride = {\n actions: {\n addToCursor: \"新增至 Cursor\",\n addToVscode: \"新增至 VS Code\",\n askAI: \"向 AI 詢問此頁面\",\n connectMcp: \"連線至 MCP\",\n copied: \"已複製!\",\n copyClaudeCode: \"複製 Claude Code 指令\",\n copyCode: \"複製程式碼\",\n copyCodex: \"複製 Codex 指令\",\n copyFailed: \"複製失敗\",\n copyMarkdown: \"複製為 Markdown\",\n copyServerUrl: \"複製伺服器 URL\",\n edit: \"在 GitHub 上編輯\",\n export: \"匯出\",\n exportEpub: \"匯出為 EPUB\",\n exportPdf: \"匯出為 PDF\",\n generating: \"產生中…\",\n openIn: \"在 {name} 中開啟\",\n openInChat: \"在聊天中開啟\",\n openInChatPrompt: \"請閱讀 {url} 以便我針對此頁面提問。\",\n scrollToTop: \"回到頂部\",\n },\n ask: {\n ai: \"AI\",\n clear: \"清除對話\",\n close: \"關閉\",\n copy: \"複製對話\",\n empty: \"針對文件提出問題。\",\n error: \"抱歉,發生了一些問題。\",\n label: \"提出問題\",\n placeholder: \"提出問題…\",\n send: \"傳送\",\n tip: \"提示:可透過以下快捷鍵開啟和關閉聊天\",\n title: \"向 AI 提問\",\n you: \"你\",\n },\n banner: { dismiss: \"關閉公告\" },\n changelog: {\n description: \"產品更新與版本說明。\",\n showReleases: \"顯示 {version} 的發布\",\n title: \"更新日誌\",\n },\n content: {\n diagramError: \"無法顯示此圖表。\",\n },\n feedback: {\n no: \"沒有幫助\",\n question: \"這個頁面有幫助嗎?\",\n thanks: \"感謝你的意見回饋!\",\n yes: \"有幫助\",\n },\n languageSwitcher: { label: \"語言\", untranslated: \"未翻譯\" },\n nav: {\n back: \"返回\",\n breadcrumb: \"麵包屑導覽\",\n closeNavigation: \"關閉導覽\",\n deprecated: \"已棄用\",\n featured: \"精選\",\n githubRepository: \"GitHub 儲存庫\",\n navigation: \"導覽\",\n primary: \"主要\",\n sections: \"章節\",\n toggleNavigation: \"切換導覽\",\n toggleTheme: \"切換色彩主題\",\n },\n notFound: {\n description: \"我們找不到你要瀏覽的頁面。\",\n home: \"返回首頁\",\n title: \"找不到頁面\",\n },\n page: {\n lastUpdated: \"最後更新於\",\n next: \"下一頁\",\n pagination: \"分頁\",\n previous: \"上一頁\",\n skipToContent: \"跳至內容\",\n },\n search: {\n all: \"全部\",\n allLanguages: \"所有語言\",\n askAi: \"向 AI 提問\",\n askAiHint: \"從 AI 即時取得解答\",\n button: \"搜尋\",\n devOnly: \"搜尋在正式版組建中可用。\",\n error: \"發生了一些問題,請再試一次。\",\n label: \"搜尋文件\",\n navigate: \"導覽\",\n noResults: \"找不到結果。\",\n open: \"開啟\",\n placeholder: \"搜尋文件…\",\n popular: \"熱門\",\n preview: \"預覽\",\n results: \"結果\",\n },\n toc: { title: \"本頁內容\" },\n};\n",
|
|
50
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Chinese — Simplified (zh) UI strings. */\nexport const zh: UIStringsOverride = {\n actions: {\n addToCursor: \"添加到 Cursor\",\n addToVscode: \"添加到 VS Code\",\n askAI: \"向 AI 询问此页面\",\n connectMcp: \"连接到 MCP\",\n copied: \"已复制!\",\n copyClaudeCode: \"复制 Claude Code 命令\",\n copyCode: \"复制代码\",\n copyCodex: \"复制 Codex 命令\",\n copyFailed: \"复制失败\",\n copyMarkdown: \"复制为 Markdown\",\n copyServerUrl: \"复制服务器 URL\",\n edit: \"在 GitHub 上编辑\",\n export: \"导出\",\n exportEpub: \"导出为 EPUB\",\n exportPdf: \"导出为 PDF\",\n generating: \"生成中…\",\n openIn: \"在 {name} 中打开\",\n openInChat: \"在聊天中打开\",\n openInChatPrompt: \"请阅读 {url} 以便我就此页面提问。\",\n scrollToTop: \"回到顶部\",\n },\n ask: {\n ai: \"AI\",\n clear: \"清空对话\",\n close: \"关闭\",\n copy: \"复制对话\",\n empty: \"就文档提出问题。\",\n error: \"抱歉,出了点问题。\",\n label: \"提出问题\",\n placeholder: \"提出问题…\",\n send: \"发送\",\n tip: \"提示:可通过以下快捷键打开和关闭聊天\",\n title: \"向 AI 提问\",\n you: \"你\",\n },\n banner: { dismiss: \"关闭公告\" },\n changelog: {\n description: \"产品更新与版本说明。\",\n showReleases: \"显示 {version} 的发布\",\n title: \"更新日志\",\n },\n content: {\n diagramError: \"无法渲染此图表。\",\n },\n feedback: {\n no: \"没有帮助\",\n question: \"这个页面有帮助吗?\",\n thanks: \"感谢你的反馈!\",\n yes: \"有帮助\",\n },\n languageSwitcher: { label: \"语言\", untranslated: \"未翻译\" },\n nav: {\n back: \"返回\",\n breadcrumb: \"面包屑导航\",\n closeNavigation: \"关闭导航\",\n deprecated: \"已弃用\",\n featured: \"精选\",\n githubRepository: \"GitHub 仓库\",\n navigation: \"导航\",\n primary: \"主要\",\n sections: \"章节\",\n toggleNavigation: \"切换导航\",\n toggleTheme: \"切换颜色主题\",\n },\n notFound: {\n description: \"我们找不到你要访问的页面。\",\n home: \"返回首页\",\n title: \"页面未找到\",\n },\n page: {\n lastUpdated: \"最后更新于\",\n next: \"下一页\",\n pagination: \"分页\",\n previous: \"上一页\",\n skipToContent: \"跳到内容\",\n },\n search: {\n all: \"全部\",\n allLanguages: \"所有语言\",\n askAi: \"向 AI 提问\",\n askAiHint: \"从 AI 即时获取答案\",\n button: \"搜索\",\n devOnly: \"搜索在生产构建中可用。\",\n error: \"出了点问题,请重试。\",\n label: \"搜索文档\",\n navigate: \"导航\",\n noResults: \"未找到结果。\",\n open: \"打开\",\n placeholder: \"搜索文档…\",\n popular: \"热门\",\n preview: \"预览\",\n results: \"结果\",\n },\n toc: { title: \"本页内容\" },\n};\n",
|
|
51
|
-
"import type { UIStringsOverride } from \"../i18n-ui.ts\";\nimport { ar } from \"./ar.ts\";\nimport { bg } from \"./bg.ts\";\nimport { bn } from \"./bn.ts\";\nimport { ca } from \"./ca.ts\";\nimport { cs } from \"./cs.ts\";\nimport { da } from \"./da.ts\";\nimport { de } from \"./de.ts\";\nimport { el } from \"./el.ts\";\nimport { es } from \"./es.ts\";\nimport { fa } from \"./fa.ts\";\nimport { fi } from \"./fi.ts\";\nimport { fr } from \"./fr.ts\";\nimport { he } from \"./he.ts\";\nimport { hi } from \"./hi.ts\";\nimport { hr } from \"./hr.ts\";\nimport { hu } from \"./hu.ts\";\nimport { id } from \"./id.ts\";\nimport { it } from \"./it.ts\";\nimport { ja } from \"./ja.ts\";\nimport { ko } from \"./ko.ts\";\nimport { nl } from \"./nl.ts\";\nimport { no } from \"./no.ts\";\nimport { pl } from \"./pl.ts\";\nimport { ptBR } from \"./pt-br.ts\";\nimport { pt } from \"./pt.ts\";\nimport { ro } from \"./ro.ts\";\nimport { ru } from \"./ru.ts\";\nimport { sk } from \"./sk.ts\";\nimport { sr } from \"./sr.ts\";\nimport { sv } from \"./sv.ts\";\nimport { th } from \"./th.ts\";\nimport { tr } from \"./tr.ts\";\nimport { uk } from \"./uk.ts\";\nimport { vi } from \"./vi.ts\";\nimport { zhTW } from \"./zh-tw.ts\";\nimport { zh } from \"./zh.ts\";\n\n/**\n * Built-in translation packs, one module per locale (`./<code>.ts`). English is\n * the schema baseline, so it has no pack; every other locale ships a starter\n * pack so adopters get translated chrome out of the box. Brand names (Cursor,\n * VS Code, MCP, Claude Code, Markdown, GitHub) are kept verbatim. Packs are\n * community-maintained — open a PR to add a locale or sharpen a translation.\n *\n * Keyed by locale code; regional variants use the BCP 47 form (`pt-BR`,\n * `zh-TW`). A locale's pack is merged onto English by {@link resolveUIStrings},\n * so a pack only needs the keys it translates.\n */\n/**\n * Starter packs keyed by locale code. Open-keyed on purpose: resolvers look\n * packs up by whatever locale a project configures, not only the codes here.\n */\ninterface UiPackRegistry {\n [locale: string]: UIStringsOverride;\n}\n\nexport const UI_PACKS: UiPackRegistry = {\n ar,\n bg,\n bn,\n ca,\n cs,\n da,\n de,\n el,\n es,\n fa,\n fi,\n fr,\n he,\n hi,\n hr,\n hu,\n id,\n it,\n ja,\n ko,\n nl,\n no,\n pl,\n pt,\n \"pt-BR\": ptBR,\n ro,\n ru,\n sk,\n sr,\n sv,\n th,\n tr,\n uk,\n vi,\n zh,\n \"zh-TW\": zhTW,\n};\n",
|
|
52
|
-
"/**\n * Providers for the \"Open in chat\" page action, in display order. Shared by\n * the config schema (`ai.openInChat` subsets validate against this list) and\n * the PageActions menu (which renders the full list when the config is `true`).\n * Lives outside `schema.ts` so the component can import the list without\n * pulling the whole config schema into the layout module graph.\n */\nexport const openInChatProviders = [\n \"v0\",\n \"chatgpt\",\n \"claude\",\n \"t3\",\n \"scira\",\n \"cursor\",\n] as const;\n\nexport type OpenInChatProvider = (typeof openInChatProviders)[number];\n",
|
|
53
|
-
"/**\n * The Standard Schema interface (https://standardschema.dev), the minimal\n * `~standard` surface shared by Zod 3.24+, Zod 4, Valibot, ArkType, and\n * friends. Blume accepts user-supplied validation schemas (e.g.\n * `frontmatter.extend`) through this interface instead of Zod's own types:\n * `blume.config.ts` imports zod from the *consumer's* node_modules, which may\n * be a different major version than the zod Blume bundles, and calling Zod\n * methods (`.extend()`, `.safeParse()`) across instances is unsupported. The\n * `~standard.validate` contract is version- and library-agnostic.\n */\n\n/** One validation failure, with an optional path into the checked value. */\nexport interface StandardSchemaIssue {\n readonly message: string;\n readonly path?:\n | readonly (PropertyKey | { readonly key: PropertyKey })[]\n | undefined;\n}\n\n/** A passing validation: the (possibly transformed) output value. */\nexport interface StandardSchemaSuccess<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n}\n\n/** A failing validation: one or more issues. */\nexport interface StandardSchemaFailure {\n readonly issues: readonly StandardSchemaIssue[];\n}\n\nexport type StandardSchemaResult<Output> =\n | StandardSchemaSuccess<Output>\n | StandardSchemaFailure;\n\n/** A validation schema exposing the Standard Schema `~standard` contract. */\nexport interface StandardSchema<Input = unknown, Output = Input> {\n readonly \"~standard\": {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: Input\n ) => StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;\n readonly types?:\n | { readonly input: Input; readonly output: Output }\n | undefined;\n };\n}\n\n/**\n * Whether a config-supplied value implements the `~standard` contract. Generic\n * so it can decode any input at the config boundary (`z.custom` hands it the\n * raw config value) while narrowing whatever type the caller holds.\n */\nexport const isStandardSchema = <T>(value: T): value is T & StandardSchema =>\n typeof value === \"object\" &&\n value !== null &&\n // SAFETY: the assertion only widens the checked object for property probing;\n // the trailing typeof check is what verifies `~standard.validate` exists.\n typeof (value as { \"~standard\"?: { validate?: unknown } })[\"~standard\"]\n ?.validate === \"function\";\n"
|
|
54
|
-
],
|
|
55
|
-
"mappings": "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",
|
|
56
|
-
"debugId": "4AB9FE917CB6BCA564756E2164756E21",
|
|
57
|
-
"names": []
|
|
58
|
-
}
|