blume 2.0.3 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +142 -0
- package/README.md +1 -1
- package/dist/cli/{chunk-5f86nr5m.js → chunk-073rdvgb.js} +21 -48
- package/dist/cli/{chunk-5f86nr5m.js.map → chunk-073rdvgb.js.map} +4 -5
- package/dist/cli/{chunk-ga0pf4aj.js → chunk-0n9xkp3d.js} +12 -3
- package/dist/cli/{chunk-ga0pf4aj.js.map → chunk-0n9xkp3d.js.map} +3 -3
- package/dist/cli/chunk-150jk7km.js +52 -0
- package/dist/cli/chunk-150jk7km.js.map +10 -0
- package/dist/cli/{chunk-9t7a85s3.js → chunk-313vnn40.js} +30 -19
- package/dist/cli/chunk-313vnn40.js.map +10 -0
- package/dist/cli/{chunk-tkacnehg.js → chunk-3v3ffbrj.js} +2 -2
- package/dist/cli/{chunk-q58y5e6a.js → chunk-3x6x3pph.js} +46 -24
- package/dist/cli/chunk-3x6x3pph.js.map +10 -0
- package/dist/cli/{chunk-1d7ve1dm.js → chunk-42t4jxdx.js} +37 -5
- package/dist/cli/chunk-42t4jxdx.js.map +12 -0
- package/dist/cli/{chunk-8ktnccpt.js → chunk-54ztw1nj.js} +21 -2
- package/dist/cli/chunk-54ztw1nj.js.map +10 -0
- package/dist/cli/{chunk-hm3vjy5s.js → chunk-5vjtgs6e.js} +28 -10
- package/dist/cli/{chunk-hm3vjy5s.js.map → chunk-5vjtgs6e.js.map} +4 -4
- package/dist/cli/chunk-66w9j7p6.js +322 -0
- package/dist/cli/chunk-66w9j7p6.js.map +14 -0
- package/dist/cli/{chunk-2hsdwb9n.js → chunk-7ppf1rva.js} +34 -18
- package/dist/cli/chunk-7ppf1rva.js.map +10 -0
- package/dist/cli/{chunk-r9rcc4w7.js → chunk-8y2kmjv8.js} +7 -7
- package/dist/cli/{chunk-r20tn01b.js → chunk-c1y538kd.js} +8 -2
- package/dist/cli/{chunk-r20tn01b.js.map → chunk-c1y538kd.js.map} +3 -3
- package/dist/cli/{chunk-2eytanqx.js → chunk-c887fj0s.js} +2 -2
- package/dist/cli/{chunk-p3v96n38.js → chunk-cfyg47zg.js} +16 -6
- package/dist/cli/chunk-cfyg47zg.js.map +10 -0
- package/dist/cli/chunk-cm89scdv.js +443 -0
- package/dist/cli/chunk-cm89scdv.js.map +11 -0
- package/dist/cli/{chunk-akbpwfxc.js → chunk-dzwehpy7.js} +2 -2
- package/dist/cli/{chunk-wrr3j9w9.js → chunk-e6atmn4h.js} +299 -72
- package/dist/cli/chunk-e6atmn4h.js.map +36 -0
- package/dist/cli/{chunk-tzmab476.js → chunk-e8xw9qkh.js} +8 -6
- package/dist/cli/{chunk-tzmab476.js.map → chunk-e8xw9qkh.js.map} +3 -3
- package/dist/cli/{chunk-6dsbexzp.js → chunk-e9q7a2ak.js} +17 -15
- package/dist/cli/{chunk-6dsbexzp.js.map → chunk-e9q7a2ak.js.map} +2 -2
- package/dist/cli/{chunk-pv29h0wf.js → chunk-ehweg4fr.js} +5155 -1249
- package/dist/cli/chunk-ehweg4fr.js.map +218 -0
- package/dist/cli/{chunk-c8chx29p.js → chunk-ep6nd0rn.js} +390 -318
- package/dist/cli/chunk-ep6nd0rn.js.map +36 -0
- package/dist/cli/{chunk-p73c0m7w.js → chunk-fdrkhpjy.js} +18 -15
- package/dist/cli/{chunk-p73c0m7w.js.map → chunk-fdrkhpjy.js.map} +3 -3
- package/dist/cli/{chunk-2z928egk.js → chunk-ft9vfys6.js} +5 -5
- package/dist/cli/{chunk-5m5nmvyq.js → chunk-gb420vvz.js} +316 -79
- package/dist/cli/chunk-gb420vvz.js.map +17 -0
- package/dist/cli/{chunk-vg9r4eb9.js → chunk-hebn0tpx.js} +86 -13
- package/dist/cli/chunk-hebn0tpx.js.map +14 -0
- package/dist/cli/{chunk-35d4wj9f.js → chunk-htrwgabr.js} +41 -23
- package/dist/cli/chunk-htrwgabr.js.map +15 -0
- package/dist/cli/{chunk-g4hq16wv.js → chunk-hx3xqnk9.js} +16 -14
- package/dist/cli/{chunk-g4hq16wv.js.map → chunk-hx3xqnk9.js.map} +2 -2
- package/dist/cli/chunk-j134vrp2.js +65 -0
- package/dist/cli/chunk-j134vrp2.js.map +10 -0
- package/dist/cli/{chunk-a58773jm.js → chunk-kma9f6sf.js} +2 -2
- package/dist/cli/chunk-kwrg63tm.js +31 -0
- package/dist/cli/chunk-kwrg63tm.js.map +10 -0
- package/dist/cli/{chunk-ey84smr6.js → chunk-mrcccgnh.js} +6 -6
- package/dist/cli/{chunk-ey84smr6.js.map → chunk-mrcccgnh.js.map} +1 -1
- package/dist/cli/{chunk-yfyb25rh.js → chunk-n0v7m8ry.js} +24 -8
- package/dist/cli/chunk-n0v7m8ry.js.map +14 -0
- package/dist/cli/{chunk-j85vccga.js → chunk-ncj7w596.js} +576 -367
- package/dist/cli/chunk-ncj7w596.js.map +35 -0
- package/dist/cli/{chunk-5xvm6tfj.js → chunk-nq1d20w2.js} +17 -15
- package/dist/cli/{chunk-5xvm6tfj.js.map → chunk-nq1d20w2.js.map} +2 -2
- package/dist/cli/{chunk-pehfxfta.js → chunk-nrns10mj.js} +6 -98
- package/dist/cli/chunk-nrns10mj.js.map +10 -0
- package/dist/cli/{chunk-crgn1q09.js → chunk-sds923fa.js} +4 -4
- package/dist/cli/chunk-t2m5j4pr.js +104 -0
- package/dist/cli/chunk-t2m5j4pr.js.map +11 -0
- package/dist/cli/{chunk-acanzt5p.js → chunk-tdqhyxfz.js} +6 -6
- package/dist/cli/chunk-tphac74f.js +126 -0
- package/dist/cli/chunk-tphac74f.js.map +11 -0
- package/dist/cli/chunk-w1r4vase.js +18 -0
- package/dist/cli/chunk-w1r4vase.js.map +10 -0
- package/dist/cli/{chunk-3em5wd2y.js → chunk-zccbjcj0.js} +4 -3
- package/dist/cli/{chunk-3em5wd2y.js.map → chunk-zccbjcj0.js.map} +2 -2
- package/dist/cli/index.js +31 -20
- package/dist/cli/index.js.map +5 -5
- package/dist/types/ai/agent-surface.d.ts +8 -7
- package/dist/types/ai/ai-catalog.d.ts +7 -0
- package/dist/types/ai/ask-context.d.ts +26 -0
- package/dist/types/ai/ask.d.ts +271 -58
- package/dist/types/ai/component-markdown.d.ts +2 -0
- package/dist/types/ai/index.d.ts +2 -2
- package/dist/types/ai/openapi-components.d.ts +4 -1
- package/dist/types/ai/site-skill.d.ts +26 -0
- package/dist/types/ai/skills.d.ts +16 -0
- package/dist/types/astro/integration.d.ts +9 -0
- package/dist/types/astro/markdown-negotiation.d.ts +3 -0
- package/dist/types/astro/pages.d.ts +10 -0
- package/dist/types/captcha/hcaptcha.d.ts +27 -0
- package/dist/types/captcha/index.d.ts +28 -0
- package/dist/types/captcha/schema.d.ts +29 -0
- package/dist/types/captcha/turnstile.d.ts +28 -0
- package/dist/types/cli/init/scaffold.d.ts +1 -1
- package/dist/types/components/content/api-field.d.ts +62 -0
- package/dist/types/components/content/api-page.d.ts +100 -0
- package/dist/types/components/layout/nav-utils.d.ts +26 -0
- package/dist/types/components/openapi/code-samples.d.ts +29 -0
- package/dist/types/components/openapi/helpers.d.ts +158 -0
- package/dist/types/components/openapi/security.d.ts +95 -0
- package/dist/types/components/openapi/snippets.d.ts +60 -0
- package/dist/types/consent/ethyca.d.ts +48 -0
- package/dist/types/consent/index.d.ts +37 -0
- package/dist/types/consent/native.d.ts +28 -0
- package/dist/types/consent/osano.d.ts +42 -0
- package/dist/types/consent/schema.d.ts +110 -0
- package/dist/types/core/changelog-index.d.ts +8 -0
- package/dist/types/core/config-input.d.ts +217 -23
- package/dist/types/core/data.d.ts +53 -4
- package/dist/types/core/footer.d.ts +8 -0
- package/dist/types/core/i18n-ui.d.ts +88 -0
- package/dist/types/core/includes.d.ts +8 -2
- package/dist/types/core/links.d.ts +8 -0
- package/dist/types/core/localizable.d.ts +7 -0
- package/dist/types/core/page-modes.d.ts +29 -0
- package/dist/types/core/probe.d.ts +2 -0
- package/dist/types/core/project-graph.d.ts +6 -0
- package/dist/types/core/redirect-patterns.d.ts +152 -0
- package/dist/types/core/related.d.ts +40 -0
- package/dist/types/core/schema.d.ts +670 -56
- package/dist/types/core/sources/cache.d.ts +3 -0
- package/dist/types/core/sources/contentful-rich-text.d.ts +11 -2
- package/dist/types/core/sources/contentful.d.ts +17 -1
- package/dist/types/core/sources/lexical.d.ts +5 -0
- package/dist/types/core/sources/normalize.d.ts +20 -1
- package/dist/types/core/sources/read.d.ts +5 -0
- package/dist/types/core/sources/remote.d.ts +37 -10
- package/dist/types/core/sources/sanity.d.ts +1 -1
- package/dist/types/core/types.d.ts +18 -1
- package/dist/types/core/variables.d.ts +42 -0
- package/dist/types/deploy/adapter-output.d.ts +2 -1
- package/dist/types/deploy/adapters/cloudflare.d.ts +7 -5
- package/dist/types/deploy/adapters/node.d.ts +58 -23
- package/dist/types/deploy/adapters/registry.d.ts +10 -0
- package/dist/types/deploy/adapters/types.d.ts +3 -2
- package/dist/types/deploy/node-headers.d.ts +13 -2
- package/dist/types/deploy/platforms/cloudflare.d.ts +15 -7
- package/dist/types/deploy/platforms/netlify.d.ts +7 -0
- package/dist/types/deploy/platforms/node.d.ts +3 -1
- package/dist/types/deploy/platforms/types.d.ts +18 -7
- package/dist/types/deploy/platforms/vercel.d.ts +26 -1
- package/dist/types/deploy/redirects.d.ts +55 -11
- package/dist/types/deploy/sitemap.d.ts +2 -1
- package/dist/types/deploy/vercel-negotiation.d.ts +51 -21
- package/dist/types/markdown/code-title.d.ts +17 -0
- package/dist/types/markdown/features.d.ts +3 -2
- package/dist/types/narration/build.d.ts +70 -0
- package/dist/types/narration/provider.d.ts +26 -0
- package/dist/types/narration/script.d.ts +154 -0
- package/dist/types/openapi/checks.d.ts +27 -0
- package/dist/types/openapi/graphql.d.ts +6 -0
- package/dist/types/openapi/model.d.ts +27 -10
- package/dist/types/openapi/overlay.d.ts +54 -0
- package/dist/types/openapi/parse.d.ts +16 -0
- package/dist/types/openapi/references.d.ts +30 -4
- package/dist/types/ratelimit/cloudflare.d.ts +39 -0
- package/dist/types/ratelimit/index.d.ts +27 -0
- package/dist/types/ratelimit/memory.d.ts +36 -0
- package/dist/types/ratelimit/schema.d.ts +119 -0
- package/dist/types/ratelimit/upstash.d.ts +46 -0
- package/dist/types/ratelimit/wrangler.d.ts +23 -0
- package/dist/types/reference/asyncapi.d.ts +10 -10
- package/dist/types/reference/graphql.d.ts +89 -11
- package/dist/types/reference/index.d.ts +1 -1
- package/dist/types/reference/openapi.d.ts +33 -12
- package/dist/types/reference/options.d.ts +82 -6
- package/dist/types/reference/scalar.d.ts +13 -0
- package/dist/types/reference/schema.d.ts +144 -36
- package/dist/types/search/adapters/registry.d.ts +3 -0
- package/dist/types/search/adapters/typesense.d.ts +14 -4
- package/dist/types/search/build.d.ts +3 -1
- package/dist/types/search/documents.d.ts +12 -1
- package/dist/types/search/orama-index.d.ts +13 -9
- package/dist/types/search/sync/algolia.d.ts +5 -2
- package/dist/types/search/sync/index.d.ts +3 -1
- package/dist/types/search/sync/typesense.d.ts +11 -7
- package/dist/types/seo/metatags.d.ts +20 -0
- package/dist/types/sources/contentful.d.ts +16 -0
- package/dist/types/sources/github-releases.d.ts +8 -1
- package/dist/types/sources/payload.d.ts +2 -0
- package/dist/types/sources/registry.d.ts +54 -0
- package/dist/types/sources/shared.d.ts +3 -0
- package/dist/types/sources/strapi.d.ts +2 -0
- package/docs/01-quickstart.mdx +4 -2
- package/docs/02-deployment.mdx +71 -17
- package/docs/03-upgrading.mdx +4 -4
- package/docs/04-migrating.mdx +1 -1
- package/docs/advanced/changelog.mdx +13 -2
- package/docs/advanced/skills.mdx +15 -1
- package/docs/cli/audit.mdx +51 -8
- package/docs/cli/doctor.mdx +5 -1
- package/docs/cli/evals.mdx +4 -4
- package/docs/cli/index.mdx +1 -0
- package/docs/cli/translate.mdx +1 -0
- package/docs/cli/validate.mdx +4 -3
- package/docs/configuration/analytics.mdx +3 -1
- package/docs/configuration/assistant.mdx +194 -38
- package/docs/configuration/consent.mdx +100 -0
- package/docs/configuration/customization.mdx +8 -6
- package/docs/configuration/export.mdx +5 -3
- package/docs/configuration/index.mdx +64 -5
- package/docs/configuration/meta.ts +3 -0
- package/docs/configuration/narration.mdx +119 -0
- package/docs/configuration/rate-limiting.mdx +90 -0
- package/docs/configuration/search.mdx +63 -12
- package/docs/configuration/theming.mdx +3 -1
- package/docs/content/components.mdx +108 -2
- package/docs/content/frontmatter.mdx +80 -2
- package/docs/content/i18n.mdx +39 -4
- package/docs/content/includes.mdx +16 -0
- package/docs/content/meta.mdx +1 -0
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +32 -10
- package/docs/content/sources/contentful.mdx +35 -0
- package/docs/content/sources/custom.mdx +43 -0
- package/docs/content/sources/github-releases.mdx +39 -0
- package/docs/content/sources/index.mdx +91 -0
- package/docs/content/sources/meta.ts +16 -0
- package/docs/content/sources/notion.mdx +32 -0
- package/docs/content/sources/obsidian.mdx +37 -0
- package/docs/content/sources/payload.mdx +31 -0
- package/docs/content/sources/remote-mdx.mdx +44 -0
- package/docs/content/sources/sanity.mdx +29 -0
- package/docs/content/sources/strapi.mdx +32 -0
- package/docs/content/syntax.mdx +69 -4
- package/docs/content/variables.mdx +41 -0
- package/docs/discoverability/agent-discovery.mdx +29 -2
- package/docs/discoverability/index.mdx +2 -2
- package/docs/discoverability/json-api.mdx +2 -0
- package/docs/discoverability/llms-txt.mdx +2 -2
- package/docs/discoverability/markdown.mdx +3 -1
- package/docs/discoverability/mcp.mdx +4 -0
- package/docs/discoverability/metadata.mdx +17 -0
- package/docs/discoverability/sitemap-and-robots.mdx +1 -1
- package/docs/references/api-pages.mdx +74 -0
- package/docs/references/asyncapi.mdx +4 -2
- package/docs/references/graphql.mdx +14 -2
- package/docs/references/meta.ts +1 -1
- package/docs/references/openapi.mdx +148 -7
- package/docs/references/scalar.mdx +3 -1
- package/package.json +43 -8
- package/skills/blume/SKILL.md +3 -0
- package/skills/blume-migrate/SKILL.md +6 -6
- package/skills/blume-migrate/references/docusaurus.md +7 -7
- package/skills/blume-migrate/references/fumadocs.md +17 -13
- package/skills/blume-migrate/references/mintlify.md +37 -19
- package/skills/blume-migrate/references/nextra.md +10 -7
- package/skills/blume-migrate/references/starlight.md +11 -8
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +60 -14
- package/skills/blume-write-skill/SKILL.md +82 -0
- package/src/ai/agent-readability.ts +2 -1
- package/src/ai/agent-surface.ts +9 -7
- package/src/ai/ai-catalog.ts +6 -3
- package/src/ai/ask-context.ts +103 -20
- package/src/ai/ask-data.ts +6 -0
- package/src/ai/ask-limits.ts +13 -0
- package/src/ai/ask-tools.ts +142 -0
- package/src/ai/ask.ts +354 -76
- package/src/ai/changelog-markdown.ts +11 -6
- package/src/ai/component-markdown.ts +76 -1
- package/src/ai/cors.ts +14 -3
- package/src/ai/index.ts +12 -0
- package/src/ai/llms.ts +6 -2
- package/src/ai/markdown.ts +2 -1
- package/src/ai/mcp/data.ts +6 -0
- package/src/ai/mcp/query.ts +14 -6
- package/src/ai/openapi-components.ts +36 -6
- package/src/ai/relative-links.ts +4 -38
- package/src/ai/site-skill.ts +274 -0
- package/src/ai/skills.ts +35 -2
- package/src/ai/write-skill.ts +97 -0
- package/src/astro/generate.ts +210 -66
- package/src/astro/index.ts +1 -0
- package/src/astro/integration.ts +42 -4
- package/src/astro/markdown-negotiation.ts +3 -0
- package/src/astro/module-types.ts +9 -1
- package/src/astro/pages.ts +23 -0
- package/src/astro/templates.ts +406 -108
- package/src/astro/variables.ts +31 -0
- package/src/audit/catalog.ts +38 -3
- package/src/audit/checks/contrast.ts +183 -0
- package/src/audit/checks/i18n.ts +2 -3
- package/src/audit/checks/indexability.ts +2 -3
- package/src/audit/checks/links.ts +19 -13
- package/src/audit/checks/network.ts +110 -6
- package/src/audit/checks/redirects.ts +6 -4
- package/src/audit/checks/robots.ts +58 -2
- package/src/audit/checks/sitemap.ts +2 -3
- package/src/audit/redirects.ts +46 -15
- package/src/audit/run.ts +5 -0
- package/src/audit/types.ts +4 -1
- package/src/audit/url.ts +14 -5
- package/src/blume-modules.d.ts +12 -1
- package/src/captcha/client.ts +152 -0
- package/src/captcha/hcaptcha.ts +36 -0
- package/src/captcha/index.ts +28 -0
- package/src/captcha/schema.ts +32 -0
- package/src/captcha/turnstile.ts +38 -0
- package/src/captcha/verify.ts +71 -0
- package/src/cli/args.ts +51 -0
- package/src/cli/build-failure.ts +23 -0
- package/src/cli/command-meta.ts +5 -0
- package/src/cli/commands/audit.ts +10 -1
- package/src/cli/commands/dev.ts +18 -2
- package/src/cli/commands/doctor.ts +67 -28
- package/src/cli/commands/eval.ts +36 -4
- package/src/cli/commands/init.ts +6 -4
- package/src/cli/commands/skill.ts +96 -0
- package/src/cli/commands/validate.ts +10 -1
- package/src/cli/index.ts +5 -0
- package/src/cli/init/scaffold.ts +3 -3
- package/src/cli/prepare.ts +6 -3
- package/src/cli/required-secrets.ts +72 -30
- package/src/components/BlumePage.astro +2 -0
- package/src/components/content/ApiEndpoint.astro +18 -0
- package/src/components/content/ApiField.astro +79 -0
- package/src/components/content/ApiPlayground.astro +66 -0
- package/src/components/content/ApiRail.astro +19 -0
- package/src/components/content/Color.astro +1 -0
- package/src/components/content/FileTree.astro +1 -0
- package/src/components/content/GithubInfo.astro +1 -0
- package/src/components/content/Panel.astro +1 -0
- package/src/components/content/ParamField.astro +25 -0
- package/src/components/content/RequestExample.astro +17 -0
- package/src/components/content/ResponseExample.astro +17 -0
- package/src/components/content/ResponseField.astro +32 -0
- package/src/components/content/Step.astro +1 -0
- package/src/components/content/Tile.astro +1 -0
- package/src/components/content/Tooltip.astro +1 -0
- package/src/components/content/Tree.astro +1 -0
- package/src/components/content/TypeTable.astro +4 -1
- package/src/components/content/View.astro +21 -0
- package/src/components/content/ViewSwitcher.astro +168 -0
- package/src/components/content/api-field.ts +103 -0
- package/src/components/content/api-page.ts +248 -0
- package/src/components/content/mermaid-element.ts +15 -1
- package/src/components/content/view-switcher.ts +71 -0
- package/src/components/index.ts +2 -0
- package/src/components/islands/Assistant.astro +10 -1
- package/src/components/islands/assistant.tsx +104 -14
- package/src/components/islands/code-question.ts +62 -0
- package/src/components/islands/hooks.ts +136 -21
- package/src/components/islands/support-link.ts +68 -0
- package/src/components/layout/Analytics.astro +11 -2
- package/src/components/layout/Banner.astro +14 -10
- package/src/components/layout/Breadcrumbs.astro +6 -2
- package/src/components/layout/ConsentBanner.astro +62 -0
- package/src/components/layout/ConsentHead.astro +38 -0
- package/src/components/layout/Directory.astro +94 -0
- package/src/components/layout/DrawerSwitchers.astro +51 -0
- package/src/components/layout/Empty.astro +2 -2
- package/src/components/layout/Header.astro +122 -80
- package/src/components/layout/LanguageSwitcher.astro +48 -15
- package/src/components/layout/NarrationPlayer.astro +1085 -0
- package/src/components/layout/NavSelector.astro +33 -7
- package/src/components/layout/PageActions.astro +139 -24
- package/src/components/layout/PageFeedback.astro +54 -49
- package/src/components/layout/PageLayout.astro +71 -3
- package/src/components/layout/ReferenceLayout.astro +17 -6
- package/src/components/layout/RelatedPages.astro +42 -0
- package/src/components/layout/RootLayout.astro +318 -47
- package/src/components/layout/Search.astro +47 -19
- package/src/components/layout/SiteFooter.astro +124 -0
- package/src/components/layout/SiteMetatags.astro +16 -0
- package/src/components/layout/TableOfContents.astro +24 -17
- package/src/components/layout/consent/native.ts +79 -0
- package/src/components/layout/consent/types.ts +37 -0
- package/src/components/layout/footer-links.ts +53 -0
- package/src/components/layout/footer-socials.ts +87 -0
- package/src/components/layout/head-scripts.ts +6 -1
- package/src/components/layout/locale-redirect.ts +107 -0
- package/src/components/layout/nav-utils.ts +83 -0
- package/src/components/layout/page-feedback.ts +96 -0
- package/src/components/layout/search/algolia.ts +10 -1
- package/src/components/layout/search/analytics.ts +126 -0
- package/src/components/layout/search/endpoint.ts +48 -5
- package/src/components/layout/search/flexsearch.ts +17 -5
- package/src/components/layout/search/orama-cloud.ts +26 -14
- package/src/components/layout/search/pagefind.ts +114 -5
- package/src/components/layout/search/types.ts +32 -0
- package/src/components/layout/search/typesense.ts +19 -3
- package/src/components/openapi/AsyncApiOperation.astro +14 -7
- package/src/components/openapi/Authorization.astro +10 -0
- package/src/components/openapi/GraphqlOperation.astro +5 -0
- package/src/components/openapi/Operation.astro +184 -13
- package/src/components/openapi/ParametersTable.astro +8 -4
- package/src/components/openapi/Playground.astro +7 -1
- package/src/components/openapi/RequestBody.astro +24 -5
- package/src/components/openapi/RequestPanel.astro +59 -7
- package/src/components/openapi/Responses.astro +7 -4
- package/src/components/openapi/SchemaTable.astro +15 -3
- package/src/components/openapi/async-snippets.ts +65 -9
- package/src/components/openapi/async.ts +123 -29
- package/src/components/openapi/code-samples.ts +97 -0
- package/src/components/openapi/graphql-helpers.ts +35 -12
- package/src/components/openapi/helpers.ts +36 -2
- package/src/components/openapi/message-model.ts +54 -11
- package/src/components/openapi/message.ts +14 -4
- package/src/components/openapi/operation-model.ts +16 -7
- package/src/components/openapi/playground-client.ts +24 -5
- package/src/components/openapi/playground-schema.ts +1 -1
- package/src/components/openapi/schema-tree.ts +44 -14
- package/src/components/openapi/security.ts +16 -3
- package/src/components/openapi/snippets.ts +873 -10
- package/src/components/openapi/validate-json.ts +4 -3
- package/src/components/props.ts +6 -0
- package/src/consent/client.ts +95 -0
- package/src/consent/clients.ts +19 -0
- package/src/consent/ethyca.ts +71 -0
- package/src/consent/head.ts +24 -0
- package/src/consent/index.ts +37 -0
- package/src/consent/init.ts +29 -0
- package/src/consent/native.ts +36 -0
- package/src/consent/osano.ts +59 -0
- package/src/consent/schema.ts +30 -0
- package/src/core/builtin-tags.ts +5 -0
- package/src/core/changelog-index.ts +31 -1
- package/src/core/client-address.ts +19 -0
- package/src/core/component-diagnostics.ts +53 -0
- package/src/core/component-overrides.ts +32 -0
- package/src/core/config-input.ts +225 -23
- package/src/core/data.ts +46 -4
- package/src/core/diagnostics.ts +8 -2
- package/src/core/footer.ts +26 -0
- package/src/core/graph.ts +39 -36
- package/src/core/i18n-ui.ts +84 -2
- package/src/core/includes.ts +21 -4
- package/src/core/links.ts +63 -19
- package/src/core/localizable.ts +26 -0
- package/src/core/navigation.ts +43 -12
- package/src/core/page-modes.ts +56 -0
- package/src/core/probe.ts +26 -6
- package/src/core/project-graph.ts +163 -16
- package/src/core/redirect-patterns.ts +520 -0
- package/src/core/related.ts +131 -0
- package/src/core/schema.ts +339 -66
- package/src/core/sources/cache.ts +6 -0
- package/src/core/sources/contentful-rich-text.ts +29 -6
- package/src/core/sources/contentful.ts +135 -25
- package/src/core/sources/filesystem.ts +26 -4
- package/src/core/sources/github-releases.ts +12 -1
- package/src/core/sources/lexical.ts +15 -10
- package/src/core/sources/mdx-remote.ts +62 -10
- package/src/core/sources/normalize.ts +228 -41
- package/src/core/sources/notion.ts +7 -1
- package/src/core/sources/obsidian.ts +16 -3
- package/src/core/sources/payload.ts +38 -15
- package/src/core/sources/read.ts +8 -3
- package/src/core/sources/remote.ts +72 -15
- package/src/core/sources/resolve.ts +11 -1
- package/src/core/sources/sanity.ts +43 -25
- package/src/core/sources/strapi.ts +2 -2
- package/src/core/types.ts +19 -1
- package/src/core/ui-packs/ar.ts +44 -0
- package/src/core/ui-packs/bg.ts +46 -0
- package/src/core/ui-packs/bn.ts +44 -0
- package/src/core/ui-packs/ca.ts +47 -0
- package/src/core/ui-packs/cs.ts +45 -0
- package/src/core/ui-packs/da.ts +46 -0
- package/src/core/ui-packs/de.ts +47 -0
- package/src/core/ui-packs/el.ts +46 -0
- package/src/core/ui-packs/es.ts +47 -0
- package/src/core/ui-packs/fa.ts +46 -0
- package/src/core/ui-packs/fi.ts +46 -0
- package/src/core/ui-packs/fr.ts +47 -0
- package/src/core/ui-packs/he.ts +44 -0
- package/src/core/ui-packs/hi.ts +45 -0
- package/src/core/ui-packs/hr.ts +46 -0
- package/src/core/ui-packs/hu.ts +45 -0
- package/src/core/ui-packs/id.ts +46 -0
- package/src/core/ui-packs/it.ts +46 -0
- package/src/core/ui-packs/ja.ts +46 -0
- package/src/core/ui-packs/ko.ts +45 -0
- package/src/core/ui-packs/nl.ts +47 -0
- package/src/core/ui-packs/no.ts +45 -0
- package/src/core/ui-packs/pl.ts +46 -0
- package/src/core/ui-packs/pt-br.ts +47 -0
- package/src/core/ui-packs/pt.ts +46 -0
- package/src/core/ui-packs/ro.ts +46 -0
- package/src/core/ui-packs/ru.ts +46 -0
- package/src/core/ui-packs/sk.ts +45 -0
- package/src/core/ui-packs/sr.ts +46 -0
- package/src/core/ui-packs/sv.ts +45 -0
- package/src/core/ui-packs/th.ts +44 -0
- package/src/core/ui-packs/tr.ts +46 -0
- package/src/core/ui-packs/uk.ts +46 -0
- package/src/core/ui-packs/vi.ts +46 -0
- package/src/core/ui-packs/zh-tw.ts +44 -0
- package/src/core/ui-packs/zh.ts +44 -0
- package/src/core/variables.ts +103 -0
- package/src/deploy/adapter-output.ts +7 -2
- package/src/deploy/adapters/cloudflare.ts +7 -5
- package/src/deploy/adapters/node.ts +47 -9
- package/src/deploy/adapters/types.ts +7 -3
- package/src/deploy/artifacts.ts +79 -9
- package/src/deploy/cloudflare-negotiation.ts +35 -5
- package/src/deploy/headers.ts +2 -1
- package/src/deploy/node-headers.ts +63 -9
- package/src/deploy/platforms/cloudflare.ts +45 -9
- package/src/deploy/platforms/netlify.ts +35 -2
- package/src/deploy/platforms/node.ts +12 -2
- package/src/deploy/platforms/types.ts +21 -7
- package/src/deploy/platforms/vercel.ts +149 -17
- package/src/deploy/redirects.ts +151 -24
- package/src/deploy/rss.ts +3 -1
- package/src/deploy/sitemap.ts +39 -5
- package/src/deploy/vercel-negotiation.ts +326 -102
- package/src/eval/agents.ts +18 -1
- package/src/eval/prompts.ts +6 -3
- package/src/eval/report.ts +34 -13
- package/src/eval/run.ts +5 -0
- package/src/markdown/api-rail.ts +259 -0
- package/src/markdown/code-title.ts +35 -9
- package/src/markdown/features.ts +3 -2
- package/src/markdown/fence-meta.ts +2 -0
- package/src/markdown/include.ts +11 -1
- package/src/markdown/index.ts +28 -5
- package/src/markdown/math.ts +4 -4
- package/src/markdown/relative-links.ts +3 -2
- package/src/markdown/variables.ts +56 -0
- package/src/markdown/views.ts +82 -0
- package/src/narration/build.ts +412 -0
- package/src/narration/player.ts +249 -0
- package/src/narration/provider.ts +29 -0
- package/src/narration/script.ts +592 -0
- package/src/og/card.ts +7 -6
- package/src/openapi/checks.ts +273 -0
- package/src/openapi/graphql-build.ts +21 -0
- package/src/openapi/graphql.ts +11 -0
- package/src/openapi/model.ts +72 -27
- package/src/openapi/overlay.ts +256 -0
- package/src/openapi/parse.ts +182 -4
- package/src/openapi/references.ts +64 -8
- package/src/openapi/render-mdx.ts +5 -1
- package/src/openapi/scalar.ts +40 -6
- package/src/openapi/source.ts +40 -15
- package/src/ratelimit/cloudflare.ts +54 -0
- package/src/ratelimit/index.ts +30 -0
- package/src/ratelimit/memory.ts +45 -0
- package/src/ratelimit/runtime.ts +247 -0
- package/src/ratelimit/schema.ts +28 -0
- package/src/ratelimit/upstash.ts +60 -0
- package/src/ratelimit/wrangler.ts +70 -0
- package/src/reference/asyncapi.ts +2 -2
- package/src/reference/graphql.ts +20 -3
- package/src/reference/index.ts +1 -0
- package/src/reference/openapi.ts +21 -7
- package/src/reference/options.ts +80 -8
- package/src/reference/scalar.ts +33 -8
- package/src/registry/eject.ts +23 -5
- package/src/registry/registry.ts +7 -0
- package/src/search/adapters/locale-scope.ts +30 -0
- package/src/search/adapters/typesense.ts +14 -4
- package/src/search/build.ts +21 -3
- package/src/search/documents.ts +26 -2
- package/src/search/orama-index.ts +191 -34
- package/src/search/pagefind-ranking.ts +39 -0
- package/src/search/source-pages.ts +29 -0
- package/src/search/sync/algolia.ts +111 -10
- package/src/search/sync/index.ts +52 -13
- package/src/search/sync/orama-cloud.ts +3 -0
- package/src/search/sync/typesense.ts +76 -26
- package/src/seo/metatags.ts +67 -0
- package/src/sources/contentful.ts +12 -0
- package/src/sources/github-releases.ts +7 -1
- package/src/sources/shared.ts +3 -0
- package/src/theme/chrome-icons.ts +1 -0
- package/src/theme/color.ts +500 -0
- package/src/theme/entry.ts +85 -6
- package/src/theme/palette.ts +121 -45
- package/src/translate/prompts.ts +1 -0
- package/src/translate/validate.ts +31 -3
- package/src/upgrade/upgrade.ts +4 -171
- package/dist/cli/chunk-1d7ve1dm.js.map +0 -12
- package/dist/cli/chunk-2hsdwb9n.js.map +0 -10
- package/dist/cli/chunk-35d4wj9f.js.map +0 -15
- package/dist/cli/chunk-364znk6q.js +0 -75
- package/dist/cli/chunk-364znk6q.js.map +0 -11
- package/dist/cli/chunk-5m5nmvyq.js.map +0 -13
- package/dist/cli/chunk-8ktnccpt.js.map +0 -10
- package/dist/cli/chunk-9t7a85s3.js.map +0 -10
- package/dist/cli/chunk-b07cmahc.js +0 -145
- package/dist/cli/chunk-b07cmahc.js.map +0 -11
- package/dist/cli/chunk-c8chx29p.js.map +0 -36
- package/dist/cli/chunk-e04dxsz1.js +0 -39
- package/dist/cli/chunk-e04dxsz1.js.map +0 -10
- package/dist/cli/chunk-j85vccga.js.map +0 -36
- package/dist/cli/chunk-p3v96n38.js.map +0 -10
- package/dist/cli/chunk-pehfxfta.js.map +0 -10
- package/dist/cli/chunk-pv29h0wf.js.map +0 -190
- package/dist/cli/chunk-q58y5e6a.js.map +0 -10
- package/dist/cli/chunk-vg9r4eb9.js.map +0 -14
- package/dist/cli/chunk-wrr3j9w9.js.map +0 -35
- package/dist/cli/chunk-yfyb25rh.js.map +0 -14
- package/docs/content/sources.mdx +0 -334
- /package/dist/cli/{chunk-tkacnehg.js.map → chunk-3v3ffbrj.js.map} +0 -0
- /package/dist/cli/{chunk-r9rcc4w7.js.map → chunk-8y2kmjv8.js.map} +0 -0
- /package/dist/cli/{chunk-2eytanqx.js.map → chunk-c887fj0s.js.map} +0 -0
- /package/dist/cli/{chunk-akbpwfxc.js.map → chunk-dzwehpy7.js.map} +0 -0
- /package/dist/cli/{chunk-2z928egk.js.map → chunk-ft9vfys6.js.map} +0 -0
- /package/dist/cli/{chunk-a58773jm.js.map → chunk-kma9f6sf.js.map} +0 -0
- /package/dist/cli/{chunk-crgn1q09.js.map → chunk-sds923fa.js.map} +0 -0
- /package/dist/cli/{chunk-acanzt5p.js.map → chunk-tdqhyxfz.js.map} +0 -0
package/src/core/config-input.ts
CHANGED
|
@@ -2,15 +2,20 @@ import type { AstroIntegration } from "astro";
|
|
|
2
2
|
import type { z } from "zod";
|
|
3
3
|
|
|
4
4
|
import type { AskRetrievalOptions } from "../ai/ask-context.ts";
|
|
5
|
-
import type { AssistantAdapter } from "../ai/ask.ts";
|
|
5
|
+
import type { AssistantAdapter, AssistantGatewayAdapter } from "../ai/ask.ts";
|
|
6
6
|
import type { ComponentMarkdown } from "../ai/component-markdown.ts";
|
|
7
7
|
import type { AnalyticsAdapter } from "../analytics/schema.ts";
|
|
8
|
+
import type { CaptchaAdapter } from "../captcha/schema.ts";
|
|
9
|
+
import type { ConsentAdapter } from "../consent/schema.ts";
|
|
8
10
|
import type { DeploymentInput } from "../deploy/adapters/registry.ts";
|
|
9
11
|
import type { CodeTheme } from "../markdown/themes.ts";
|
|
12
|
+
import type { RateLimitAdapter } from "../ratelimit/schema.ts";
|
|
13
|
+
import type { PlaygroundOptions } from "../reference/options.ts";
|
|
10
14
|
import type { ReferenceAdapter } from "../reference/schema.ts";
|
|
11
15
|
import type { AnySearchAdapter } from "../search/adapters/registry.ts";
|
|
12
16
|
import type { SourceAdapterInput } from "../sources/registry.ts";
|
|
13
17
|
import type { FontSlug } from "../theme/fonts.ts";
|
|
18
|
+
import type { FooterSocial } from "./footer.ts";
|
|
14
19
|
import type {
|
|
15
20
|
blumeConfigSchema,
|
|
16
21
|
OpenInChatProvider,
|
|
@@ -92,21 +97,77 @@ export type LogoConfig =
|
|
|
92
97
|
export type BannerConfig =
|
|
93
98
|
| string
|
|
94
99
|
| {
|
|
95
|
-
/** The banner message. */
|
|
96
|
-
content:
|
|
100
|
+
/** The banner message, or a map of locale code to message. */
|
|
101
|
+
content: LocalizableLabel;
|
|
97
102
|
/** Show a dismiss button; the choice is remembered per visitor. */
|
|
98
103
|
dismissible?: boolean;
|
|
99
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Stable key for remembering dismissal; defaults to the content (the
|
|
106
|
+
* default locale's, for a per-locale map).
|
|
107
|
+
*/
|
|
100
108
|
id?: string;
|
|
101
109
|
/** An optional call-to-action link. */
|
|
102
110
|
link?: {
|
|
103
111
|
/** Link target (internal route or external URL). */
|
|
104
112
|
href: string;
|
|
105
|
-
/** Link text. */
|
|
106
|
-
text:
|
|
113
|
+
/** Link text, or a map of locale code to text. */
|
|
114
|
+
text: LocalizableLabel;
|
|
107
115
|
};
|
|
108
116
|
};
|
|
109
117
|
|
|
118
|
+
/** Defaults for hand-written endpoint pages, the ones with `api` frontmatter. */
|
|
119
|
+
export interface ApiConfig {
|
|
120
|
+
/** How requests authenticate, unless a page sets `authMethod`. Defaults to none. */
|
|
121
|
+
auth?: {
|
|
122
|
+
method: "bearer" | "basic" | "key" | "none";
|
|
123
|
+
/** The header an API key goes in. Defaults to `x-api-key`. */
|
|
124
|
+
name?: string;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* The Try it panel: `false` hides it, and `{ proxy }` sends requests through
|
|
128
|
+
* a CORS proxy, a URL or `true` for the built-in `/_api-proxy` route (server
|
|
129
|
+
* output only). Defaults to `true`, sending directly.
|
|
130
|
+
*/
|
|
131
|
+
playground?: PlaygroundOptions;
|
|
132
|
+
/** The base URL an `api` path joins, like `https://api.acme.com/v1`. */
|
|
133
|
+
server?: string;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** A link in the footer's row. */
|
|
137
|
+
export interface FooterLink {
|
|
138
|
+
/** Link target (internal route or external URL). An external href opens in a new tab. */
|
|
139
|
+
href: string;
|
|
140
|
+
/** Link text, or a map of locale code to text. */
|
|
141
|
+
label: LocalizableLabel;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* The site footer, below the content on every page: a row of links on one
|
|
146
|
+
* side, and social profile icons on the other.
|
|
147
|
+
*/
|
|
148
|
+
export interface FooterConfig {
|
|
149
|
+
/** Links in one row, left to right. */
|
|
150
|
+
links?: FooterLink[];
|
|
151
|
+
/**
|
|
152
|
+
* Social profiles, platform to URL, shown as icons in the order written:
|
|
153
|
+
* `{ github: "https://github.com/acme", x: "https://x.com/acme" }`.
|
|
154
|
+
*/
|
|
155
|
+
socials?: Partial<Record<FooterSocial, string>>;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* The generated `/changelog` index's heading and description. Each is a
|
|
160
|
+
* string, or a map of locale code to text; the index renders in the default
|
|
161
|
+
* locale. Unset, they're the `changelog` UI strings (`Changelog` in English),
|
|
162
|
+
* which `i18n.ui` translates.
|
|
163
|
+
*/
|
|
164
|
+
export interface ChangelogConfig {
|
|
165
|
+
/** The index's description, below its heading and in its meta description. */
|
|
166
|
+
description?: LocalizableLabel;
|
|
167
|
+
/** The index's heading, page title, and OG card title. */
|
|
168
|
+
title?: LocalizableLabel;
|
|
169
|
+
}
|
|
170
|
+
|
|
110
171
|
/**
|
|
111
172
|
* Where content lives and how it's discovered. `root`/`include`/`exclude` are
|
|
112
173
|
* zero-config shorthand for a single `filesystem()` source; set `sources` to
|
|
@@ -203,7 +264,8 @@ export interface ContentTypeConfig {
|
|
|
203
264
|
// ---------------------------------------------------------------------------
|
|
204
265
|
|
|
205
266
|
/**
|
|
206
|
-
* A
|
|
267
|
+
* A label, optionally per locale (header tabs and links, the banner, the
|
|
268
|
+
* footer): a plain string, or a map of locale
|
|
207
269
|
* code to label (`{ en: "Docs", ja: "ドキュメント" }`). The active locale's
|
|
208
270
|
* entry wins, then the default locale's, then the map's first entry.
|
|
209
271
|
*/
|
|
@@ -286,8 +348,8 @@ export interface FeaturedLink {
|
|
|
286
348
|
href: string;
|
|
287
349
|
/** Lucide icon name shown beside the label. */
|
|
288
350
|
icon?: string;
|
|
289
|
-
/** Link label. */
|
|
290
|
-
label:
|
|
351
|
+
/** Link label, or a map of locale code to label. */
|
|
352
|
+
label: LocalizableLabel;
|
|
291
353
|
}
|
|
292
354
|
|
|
293
355
|
/**
|
|
@@ -312,8 +374,8 @@ export type SidebarConfig =
|
|
|
312
374
|
export interface HeaderAction {
|
|
313
375
|
/** Link target. An external href opens in a new tab. */
|
|
314
376
|
href: string;
|
|
315
|
-
/** Link label. */
|
|
316
|
-
label:
|
|
377
|
+
/** Link label, or a map of locale code to label. */
|
|
378
|
+
label: LocalizableLabel;
|
|
317
379
|
}
|
|
318
380
|
|
|
319
381
|
/** Header, sidebar, tabs, and switcher configuration. */
|
|
@@ -325,7 +387,7 @@ export interface NavigationConfig {
|
|
|
325
387
|
/** Pinned links shown above the generated sidebar sections. */
|
|
326
388
|
featured?: FeaturedLink[];
|
|
327
389
|
/**
|
|
328
|
-
* The GitHub link in the
|
|
390
|
+
* The GitHub link in the footer. `true` derives it from `github` (the
|
|
329
391
|
* default), `false` hides it, and an absolute URL points it anywhere on
|
|
330
392
|
* GitHub — an organization, say, when the docs repo itself is private.
|
|
331
393
|
*/
|
|
@@ -457,6 +519,16 @@ export type SearchProviderConfig = AnySearchAdapter | false;
|
|
|
457
519
|
|
|
458
520
|
/** The object form of `search`: the adapter plus adapter-independent settings. */
|
|
459
521
|
export interface SearchOptions {
|
|
522
|
+
/** What search reports to the configured analytics providers. */
|
|
523
|
+
analytics?: {
|
|
524
|
+
/**
|
|
525
|
+
* Send each query's text with the `search` and `search_select` events.
|
|
526
|
+
* Defaults to `true`. `false` sends the query's length (`queryChars`)
|
|
527
|
+
* instead, and the text rides only the `blume:track` DOM event, for a
|
|
528
|
+
* site to forward on its own terms.
|
|
529
|
+
*/
|
|
530
|
+
queries?: boolean;
|
|
531
|
+
};
|
|
460
532
|
/** Indexing behavior. */
|
|
461
533
|
indexing?: {
|
|
462
534
|
/**
|
|
@@ -480,7 +552,7 @@ export interface SearchOptions {
|
|
|
480
552
|
/**
|
|
481
553
|
* Search configuration. Pass an adapter directly (`search: algolia({…})`, or
|
|
482
554
|
* `false`) as shorthand for the object form, which also carries `popular`
|
|
483
|
-
* links and `indexing` settings.
|
|
555
|
+
* links and `indexing` and `analytics` settings.
|
|
484
556
|
*/
|
|
485
557
|
export type SearchConfig = SearchProviderConfig | SearchOptions;
|
|
486
558
|
|
|
@@ -520,6 +592,13 @@ export interface AssistantRetrievalConfig {
|
|
|
520
592
|
|
|
521
593
|
/** The chat assistant. */
|
|
522
594
|
export interface AssistantConfig {
|
|
595
|
+
/**
|
|
596
|
+
* A bot check from `blume/captcha` — `turnstile({ siteKey })` or
|
|
597
|
+
* `hcaptcha({ siteKey })`. The panel sends a token with each question and
|
|
598
|
+
* the generated route verifies it (with `TURNSTILE_SECRET_KEY` or
|
|
599
|
+
* `HCAPTCHA_SECRET_KEY`) before the model runs.
|
|
600
|
+
*/
|
|
601
|
+
captcha?: CaptchaAdapter;
|
|
523
602
|
/**
|
|
524
603
|
* Origins allowed to call the generated endpoint from another site — a
|
|
525
604
|
* marketing page that embeds an ask box, for example — or `"*"` to allow
|
|
@@ -548,10 +627,10 @@ export interface AssistantConfig {
|
|
|
548
627
|
instructions?: string;
|
|
549
628
|
/**
|
|
550
629
|
* Which backend answers: the descriptor an adapter factory returns —
|
|
551
|
-
* `
|
|
552
|
-
* `
|
|
553
|
-
* `
|
|
554
|
-
* from `blume/ai`. Each adapter owns its model, key env var, reasoning
|
|
630
|
+
* `openai({ model, baseUrl })`, `anthropic({ model })`,
|
|
631
|
+
* `gemini({ model })`, `grok({ model })`, `gateway({ model })`,
|
|
632
|
+
* `openrouter({ model, reasoning })`, `llmgateway({ model })`, or
|
|
633
|
+
* `inkeep({ model })`, all exported from `blume/ai`. Each adapter owns its model, key env var, reasoning
|
|
555
634
|
* mapping, and `providerOptions` passthrough. Defaults to
|
|
556
635
|
* `gateway({ model: "openai/gpt-5.5" })`.
|
|
557
636
|
*/
|
|
@@ -562,8 +641,23 @@ export interface AssistantConfig {
|
|
|
562
641
|
* backend — at the cost of recall. Defaults keep the built-in behavior.
|
|
563
642
|
*/
|
|
564
643
|
retrieval?: AssistantRetrievalConfig;
|
|
644
|
+
/**
|
|
645
|
+
* A Contact support link in the panel once there's a conversation: a
|
|
646
|
+
* `mailto:` address starts an email with the conversation as its body; a
|
|
647
|
+
* URL or root-relative path gets the conversation's `thread` id, which the
|
|
648
|
+
* assistant's analytics events carry too.
|
|
649
|
+
*/
|
|
650
|
+
support?: string;
|
|
565
651
|
/** Starter prompts shown before the first question. */
|
|
566
652
|
suggestions?: AssistantSuggestion[];
|
|
653
|
+
/**
|
|
654
|
+
* Let the model search the docs and read whole pages itself, over several
|
|
655
|
+
* steps, instead of answering only from the excerpts retrieved up front.
|
|
656
|
+
* Defaults to `true`, except for `openai()` with a `baseUrl`, whose model
|
|
657
|
+
* may not support tool calling. `inkeep()` does its own retrieval and
|
|
658
|
+
* ignores it.
|
|
659
|
+
*/
|
|
660
|
+
tools?: boolean;
|
|
567
661
|
}
|
|
568
662
|
|
|
569
663
|
/** What the AI Catalog (ARD) manifest carries. */
|
|
@@ -693,6 +787,12 @@ export interface I18nConfig {
|
|
|
693
787
|
locales: LocaleConfigInput[];
|
|
694
788
|
/** `dir`: locale directories (`fr/page.mdx`). `dot`: filename suffix (`page.fr.mdx`). */
|
|
695
789
|
parser?: "dir" | "dot";
|
|
790
|
+
/**
|
|
791
|
+
* Send a visitor who lands on the default language's home page to the home
|
|
792
|
+
* page in their browser's preferred language, until they pick a language
|
|
793
|
+
* with the switcher. Defaults to `false`.
|
|
794
|
+
*/
|
|
795
|
+
routeByBrowserLanguage?: boolean;
|
|
696
796
|
/**
|
|
697
797
|
* Per-locale UI string overrides, e.g.
|
|
698
798
|
* `{ fr: { search: { button: "Rechercher" } } }`.
|
|
@@ -802,11 +902,19 @@ type RedirectStatus = RedirectStatusPermanent | RedirectStatusTemporary;
|
|
|
802
902
|
|
|
803
903
|
/** A URL redirect rule. */
|
|
804
904
|
export interface RedirectConfig {
|
|
805
|
-
/**
|
|
905
|
+
/**
|
|
906
|
+
* Path to redirect from: an exact path, or a pattern. `:name` matches one
|
|
907
|
+
* segment, `:name*` as the last segment the rest of the path
|
|
908
|
+
* (`/beta/:slug*`), and `*` ending a segment the rest from there
|
|
909
|
+
* (`/old/article-*`).
|
|
910
|
+
*/
|
|
806
911
|
from: string;
|
|
807
912
|
/** HTTP status. Defaults to `301`. */
|
|
808
913
|
status?: RedirectStatus;
|
|
809
|
-
/**
|
|
914
|
+
/**
|
|
915
|
+
* Path or URL to redirect to. Reads `from`'s captures as `/:name` (or `*`
|
|
916
|
+
* for what `*` matched): `/v2/:slug*`.
|
|
917
|
+
*/
|
|
810
918
|
to: string;
|
|
811
919
|
}
|
|
812
920
|
|
|
@@ -890,6 +998,13 @@ export interface AgentsConfig {
|
|
|
890
998
|
markdownComponents?: Record<string, ComponentMarkdown>;
|
|
891
999
|
/** Expose the docs as an MCP server for agents. */
|
|
892
1000
|
mcp?: McpConfig;
|
|
1001
|
+
/**
|
|
1002
|
+
* Generate the site's own agent skill: a `SKILL.md` named after the site,
|
|
1003
|
+
* built from its navigation and page descriptions, served at `/skill.md`
|
|
1004
|
+
* and in the skills discovery index. Needs `deployment.site`. A skill in
|
|
1005
|
+
* `agents.skills` with the same name replaces it. Defaults to `true`.
|
|
1006
|
+
*/
|
|
1007
|
+
skillMd?: boolean;
|
|
893
1008
|
/**
|
|
894
1009
|
* Publish Agent Skills for discovery: a directory (resolved against the
|
|
895
1010
|
* project root) whose subdirectories each hold a `SKILL.md`. Skills are
|
|
@@ -1070,6 +1185,23 @@ export interface SoftwareConfig {
|
|
|
1070
1185
|
|
|
1071
1186
|
/** Discoverability: OG images, feeds, sitemap, robots, and structured data. */
|
|
1072
1187
|
export interface SeoConfig {
|
|
1188
|
+
/**
|
|
1189
|
+
* Meta tags written into every page's head, name to content: site
|
|
1190
|
+
* verification tokens, `theme-color`, an app banner, and anything else
|
|
1191
|
+
* Blume has no setting for. `og:*`, `fb:*`, and `article:*` tags render
|
|
1192
|
+
* with `property`, the rest with `name`. A tag Blume writes itself
|
|
1193
|
+
* (`description`, `robots`, `og:image`, `twitter:card`, …) is refused.
|
|
1194
|
+
*
|
|
1195
|
+
* ```ts
|
|
1196
|
+
* seo: {
|
|
1197
|
+
* metatags: {
|
|
1198
|
+
* "google-site-verification": "abc123",
|
|
1199
|
+
* "theme-color": "#0b5fff",
|
|
1200
|
+
* },
|
|
1201
|
+
* }
|
|
1202
|
+
* ```
|
|
1203
|
+
*/
|
|
1204
|
+
metatags?: Record<string, string>;
|
|
1073
1205
|
/** Per-page Open Graph image generation. */
|
|
1074
1206
|
og?: OgConfig;
|
|
1075
1207
|
/**
|
|
@@ -1199,8 +1331,8 @@ export interface MarkdownConfig {
|
|
|
1199
1331
|
export interface ReactConfig {
|
|
1200
1332
|
/**
|
|
1201
1333
|
* Auto-memoize React components/hooks with the React Compiler
|
|
1202
|
-
* (`
|
|
1203
|
-
* set to `false` to skip the compiler
|
|
1334
|
+
* (`oxc-transform-react`). On by default whenever React is enabled;
|
|
1335
|
+
* set to `false` to skip the compiler pass. Defaults to `true`.
|
|
1204
1336
|
*/
|
|
1205
1337
|
compiler?: boolean;
|
|
1206
1338
|
}
|
|
@@ -1241,6 +1373,37 @@ export type ExportConfig =
|
|
|
1241
1373
|
pdf?: boolean;
|
|
1242
1374
|
};
|
|
1243
1375
|
|
|
1376
|
+
/** Page feedback: the rating, and an optional written comment after it. */
|
|
1377
|
+
export interface FeedbackConfig {
|
|
1378
|
+
/**
|
|
1379
|
+
* After the rating, offer a box to say more. The comment is sent as a
|
|
1380
|
+
* `feedback_comment` event through every analytics adapter with an event
|
|
1381
|
+
* API. Defaults to `false`.
|
|
1382
|
+
*/
|
|
1383
|
+
comments?: boolean;
|
|
1384
|
+
/** Show the rating. Defaults to `true`. */
|
|
1385
|
+
enabled?: boolean;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
/**
|
|
1389
|
+
* "Listen to this page". `true` reads pages aloud with the reader's browser
|
|
1390
|
+
* voices (no key, any host). The object form's `provider` generates neural
|
|
1391
|
+
* audio at build instead, one cached clip per sentence, and falls back to
|
|
1392
|
+
* browser voices where no clips exist. Defaults to `false`.
|
|
1393
|
+
*/
|
|
1394
|
+
export type NarrationConfig =
|
|
1395
|
+
| boolean
|
|
1396
|
+
| {
|
|
1397
|
+
/** Show the player. Defaults to `true` in the object form. */
|
|
1398
|
+
enabled?: boolean;
|
|
1399
|
+
/**
|
|
1400
|
+
* Generate audio at build with a speech model:
|
|
1401
|
+
* `gateway({ model: "openai/tts-1-hd", voice: "alloy" })` from
|
|
1402
|
+
* `blume/ai`. Without it, pages are read with browser voices.
|
|
1403
|
+
*/
|
|
1404
|
+
provider?: AssistantGatewayAdapter;
|
|
1405
|
+
};
|
|
1406
|
+
|
|
1244
1407
|
/**
|
|
1245
1408
|
* Opt-in custom frontmatter keys. Page frontmatter is strictly validated —
|
|
1246
1409
|
* an unknown key fails the build so typos are caught — and `extend` carves
|
|
@@ -1335,6 +1498,8 @@ export interface BlumeConfig {
|
|
|
1335
1498
|
agents?: AgentsConfig;
|
|
1336
1499
|
/** Model-facing features: the assistant and the "Open in chat" action. */
|
|
1337
1500
|
ai?: AiConfig;
|
|
1501
|
+
/** Defaults for hand-written endpoint pages (`api` frontmatter). */
|
|
1502
|
+
api?: ApiConfig;
|
|
1338
1503
|
/**
|
|
1339
1504
|
* Analytics adapters from `blume/analytics`, emitted into `<head>` of every
|
|
1340
1505
|
* production page in this order: `[posthog({ key }), vercel(),
|
|
@@ -1353,6 +1518,19 @@ export interface BlumeConfig {
|
|
|
1353
1518
|
* compose: with both set, a page lands at `{deployment.base}/{basePath}/page`.
|
|
1354
1519
|
*/
|
|
1355
1520
|
basePath?: string;
|
|
1521
|
+
/**
|
|
1522
|
+
* The generated `/changelog` index's title and description, each a string
|
|
1523
|
+
* or a per-locale map. Unset, they're the `changelog` UI strings.
|
|
1524
|
+
*/
|
|
1525
|
+
changelog?: ChangelogConfig;
|
|
1526
|
+
/**
|
|
1527
|
+
* Ask readers before analytics runs, with an adapter from `blume/consent`:
|
|
1528
|
+
* `native()` for Blume's own banner, or a hosted consent manager
|
|
1529
|
+
* (`osano({ customerId, configId })`, `ethyca({ privacyCenter })`). Every
|
|
1530
|
+
* `analytics` adapter waits until the reader allows analytics. Unset runs
|
|
1531
|
+
* analytics as it loads.
|
|
1532
|
+
*/
|
|
1533
|
+
consent?: ConsentAdapter;
|
|
1356
1534
|
/** Where content lives and how it's discovered. */
|
|
1357
1535
|
content?: ContentConfig;
|
|
1358
1536
|
/**
|
|
@@ -1376,8 +1554,17 @@ export interface BlumeConfig {
|
|
|
1376
1554
|
examples?: string | ExamplesConfig;
|
|
1377
1555
|
/** Reader-facing PDF/EPUB export actions. Defaults to `false`. */
|
|
1378
1556
|
export?: ExportConfig;
|
|
1379
|
-
/**
|
|
1380
|
-
|
|
1557
|
+
/**
|
|
1558
|
+
* The "Was this page helpful?" rating at the foot of each page. On by
|
|
1559
|
+
* default; `false` hides it. `{ comments: true }` also asks for a written
|
|
1560
|
+
* comment after the rating, sent through your analytics adapters.
|
|
1561
|
+
*/
|
|
1562
|
+
feedback?: boolean | FeedbackConfig;
|
|
1563
|
+
/**
|
|
1564
|
+
* The site footer: social profile icons and up to four link columns. Unset,
|
|
1565
|
+
* the site has no footer.
|
|
1566
|
+
*/
|
|
1567
|
+
footer?: FooterConfig;
|
|
1381
1568
|
/** Opt-in custom frontmatter keys, validated by schemas you supply. */
|
|
1382
1569
|
frontmatter?: FrontmatterConfig;
|
|
1383
1570
|
/** Source repository (Edit-this-page links and the header repo link). */
|
|
@@ -1394,8 +1581,17 @@ export interface BlumeConfig {
|
|
|
1394
1581
|
logo?: LogoConfig;
|
|
1395
1582
|
/** Markdown / MDX rendering behavior. */
|
|
1396
1583
|
markdown?: MarkdownConfig;
|
|
1584
|
+
/** "Listen to this page" narration. Defaults to `false`. */
|
|
1585
|
+
narration?: NarrationConfig;
|
|
1397
1586
|
/** Header, sidebar, tabs, and switchers. */
|
|
1398
1587
|
navigation?: NavigationConfig;
|
|
1588
|
+
/**
|
|
1589
|
+
* Limit how often one reader (by IP address) can call the server routes —
|
|
1590
|
+
* the assistant, the API playground proxy, server-side search — with an
|
|
1591
|
+
* adapter from `blume/ratelimit`: `memory()` (the default, 30 requests per
|
|
1592
|
+
* 10 minutes), `upstash()`, or `cloudflare()`. `false` turns it off.
|
|
1593
|
+
*/
|
|
1594
|
+
rateLimit?: false | RateLimitAdapter;
|
|
1399
1595
|
/** React island behavior (compiler auto-memoization). */
|
|
1400
1596
|
react?: ReactConfig;
|
|
1401
1597
|
/** URL redirect rules. */
|
|
@@ -1416,6 +1612,12 @@ export interface BlumeConfig {
|
|
|
1416
1612
|
title?: string;
|
|
1417
1613
|
/** On-page table of contents. Defaults to on (H2–H3). */
|
|
1418
1614
|
toc?: TocConfig;
|
|
1615
|
+
/**
|
|
1616
|
+
* Content variables: `{{name}}` in a page reads the value, in prose, code,
|
|
1617
|
+
* and links alike. Names take letters, digits, `_`, and `-`; an undefined
|
|
1618
|
+
* name in prose fails the build. Defaults to none.
|
|
1619
|
+
*/
|
|
1620
|
+
variables?: Record<string, string>;
|
|
1419
1621
|
/** Docs versioning (opt-in frozen snapshots with a version switcher). */
|
|
1420
1622
|
versions?: VersionsConfig;
|
|
1421
1623
|
}
|
package/src/core/data.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { CaptchaSettings } from "../captcha/schema.ts";
|
|
2
|
+
import type { EndpointAuth } from "../components/content/api-page.ts";
|
|
1
3
|
import type { SearchAdapterKind } from "../search/adapters/registry.ts";
|
|
2
4
|
import type { StructuredDataIdentity } from "../seo/jsonld.ts";
|
|
3
5
|
import type { FontHead } from "../theme/fonts.ts";
|
|
4
6
|
import type { UIStrings } from "./i18n-ui.ts";
|
|
5
|
-
import type { ResolvedConfig } from "./schema.ts";
|
|
7
|
+
import type { LocalizableLabel, ResolvedConfig } from "./schema.ts";
|
|
6
8
|
import type { Navigation, RouteAlternate, VersionAlternate } from "./types.ts";
|
|
7
9
|
|
|
8
10
|
/**
|
|
@@ -42,10 +44,14 @@ export interface BlumeFavicon {
|
|
|
42
44
|
dark?: { href: string; type?: string };
|
|
43
45
|
}
|
|
44
46
|
|
|
45
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Announcement banner, normalized from its config (string shorthand or
|
|
49
|
+
* object). `content` and the link's `text` may be per-locale maps, resolved
|
|
50
|
+
* when the banner renders (see `core/localizable.ts`).
|
|
51
|
+
*/
|
|
46
52
|
export interface BlumeBanner {
|
|
47
|
-
content:
|
|
48
|
-
link?: { href: string; text:
|
|
53
|
+
content: LocalizableLabel;
|
|
54
|
+
link?: { href: string; text: LocalizableLabel };
|
|
49
55
|
dismissible: boolean;
|
|
50
56
|
/** Dismissal key: the configured id, else the content itself. */
|
|
51
57
|
key: string;
|
|
@@ -71,6 +77,8 @@ export interface BlumeDataI18n {
|
|
|
71
77
|
fallbackLocale: string | null;
|
|
72
78
|
hideDefaultLocalePrefix: boolean;
|
|
73
79
|
locales: BlumeDataLocale[];
|
|
80
|
+
/** Send visitors from the default home page to their browser's language. */
|
|
81
|
+
routeByBrowserLanguage: boolean;
|
|
74
82
|
}
|
|
75
83
|
|
|
76
84
|
/** A single content route, with the metadata custom pages can read. */
|
|
@@ -124,9 +132,23 @@ export interface BlumeDataConfig {
|
|
|
124
132
|
appleIcon: BlumeFavicon | null;
|
|
125
133
|
/** The assistant's empty-state suggestions, or `null` when the assistant is off. */
|
|
126
134
|
assistant: {
|
|
135
|
+
/** The bot check's public settings, or `null` without one. */
|
|
136
|
+
captcha: CaptchaSettings | null;
|
|
127
137
|
endpoint: string | null;
|
|
128
138
|
suggestions: NonNullable<ResolvedConfig["ai"]["assistant"]>["suggestions"];
|
|
139
|
+
/** The Contact support link (`ai.assistant.support`), or `null`. */
|
|
140
|
+
support: string | null;
|
|
129
141
|
} | null;
|
|
142
|
+
/**
|
|
143
|
+
* Defaults for hand-written endpoint pages (`api` frontmatter): the server a
|
|
144
|
+
* path joins, the default auth, and the playground, its `proxy` resolved to
|
|
145
|
+
* the URL sends go through (the built-in route under `basePath`) or `false`.
|
|
146
|
+
*/
|
|
147
|
+
api: {
|
|
148
|
+
auth?: EndpointAuth;
|
|
149
|
+
playground: { enabled: boolean; proxy: string | false };
|
|
150
|
+
server?: string;
|
|
151
|
+
};
|
|
130
152
|
banner: BlumeBanner | null;
|
|
131
153
|
/** Site-wide route mount point, normalized to `""` or `/seg` (see config). */
|
|
132
154
|
basePath: string;
|
|
@@ -134,6 +156,11 @@ export interface BlumeDataConfig {
|
|
|
134
156
|
codeThemes: ResolvedConfig["markdown"]["code"]["theme"];
|
|
135
157
|
/** `markdown.code.wrap`: wrap long code lines instead of scrolling. */
|
|
136
158
|
codeWrap: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* The consent adapter's descriptor, or `null` without one. When set, the
|
|
161
|
+
* layouts hold analytics until the reader allows it.
|
|
162
|
+
*/
|
|
163
|
+
consent: ResolvedConfig["consent"];
|
|
137
164
|
/** `dateFormat`: `Intl.DateTimeFormat` options for the date stamps. */
|
|
138
165
|
dateFormat: ResolvedConfig["dateFormat"];
|
|
139
166
|
description: string | undefined;
|
|
@@ -156,7 +183,12 @@ export interface BlumeDataConfig {
|
|
|
156
183
|
sitemap: boolean;
|
|
157
184
|
};
|
|
158
185
|
favicon: BlumeFavicon;
|
|
186
|
+
/** Whether pages end with the "Was this page helpful?" rating. */
|
|
159
187
|
feedback: boolean;
|
|
188
|
+
/** Whether the rating asks for a written comment after it (`feedback.comments`). */
|
|
189
|
+
feedbackComments: boolean;
|
|
190
|
+
/** `footer`: social profile icons and link columns, or `null` when unset. */
|
|
191
|
+
footer: ResolvedConfig["footer"] | null;
|
|
160
192
|
/**
|
|
161
193
|
* Repo coordinates for content components that address the API or build
|
|
162
194
|
* their own repo links (`<GithubInfo>`, the OG card's footer slug), carrying
|
|
@@ -176,6 +208,14 @@ export interface BlumeDataConfig {
|
|
|
176
208
|
logo: BlumeLogo | null;
|
|
177
209
|
/** Hosted MCP server, or `null` when MCP is off. */
|
|
178
210
|
mcp: { name: string; route: string } | null;
|
|
211
|
+
/** `seo.metatags`: the site's own tags for every page's head, or `null`. */
|
|
212
|
+
metatags: Record<string, string> | null;
|
|
213
|
+
/**
|
|
214
|
+
* "Listen to this page": `generated` when a `narration.provider` makes
|
|
215
|
+
* `blume build` write audio clips the player should look for, else the
|
|
216
|
+
* player reads with browser voices. `null` when narration is off.
|
|
217
|
+
*/
|
|
218
|
+
narration: { generated: boolean } | null;
|
|
179
219
|
/**
|
|
180
220
|
* Open Graph image generation. Card fonts are baked into the generated OG
|
|
181
221
|
* endpoint (they can carry absolute build-machine paths) and deliberately
|
|
@@ -208,6 +248,8 @@ export interface BlumeDataConfig {
|
|
|
208
248
|
/** Repository URL for header/edit links, or `null`. */
|
|
209
249
|
repoUrl: string | null;
|
|
210
250
|
search: {
|
|
251
|
+
/** `search.analytics`: whether the dialog's events carry each query's text. */
|
|
252
|
+
analytics: { queries: boolean };
|
|
211
253
|
enabled: boolean;
|
|
212
254
|
/** Resolved empty-state links; empty when unset (Search falls back to sidebar). */
|
|
213
255
|
popular: { icon?: string; label: string; route: string }[];
|
package/src/core/diagnostics.ts
CHANGED
|
@@ -24,6 +24,7 @@ const DOCS_BASE = "https://useblume.dev";
|
|
|
24
24
|
const DOCS_DEPLOYMENT = "/docs/deployment";
|
|
25
25
|
const DOCS_CLI_VALIDATE = "/docs/cli/validate";
|
|
26
26
|
const DOCS_CONTENT_SOURCES = "/docs/content/sources";
|
|
27
|
+
const DOCS_CONTENT_SOURCES_OBSIDIAN = "/docs/content/sources/obsidian";
|
|
27
28
|
const DOCS_CONTENT_NAVIGATION = "/docs/content/navigation";
|
|
28
29
|
const DOCS_CONTENT_INCLUDES = "/docs/content/includes";
|
|
29
30
|
|
|
@@ -44,6 +45,7 @@ const DOCS_PATHS = new Map(
|
|
|
44
45
|
BLUME_DEPENDENCY_MISSING: "/docs/cli/doctor",
|
|
45
46
|
BLUME_DUPLICATE_ROUTE: DOCS_CONTENT_NAVIGATION,
|
|
46
47
|
BLUME_DUPLICATE_SIDEBAR_ORDER: DOCS_CONTENT_NAVIGATION,
|
|
48
|
+
BLUME_EXAMPLE_NOT_FOUND: "/docs/content/components#component",
|
|
47
49
|
BLUME_FRONTMATTER_INVALID: "/docs/content/frontmatter",
|
|
48
50
|
BLUME_INCLUDE_CYCLE: DOCS_CONTENT_INCLUDES,
|
|
49
51
|
BLUME_INCLUDE_MALFORMED: DOCS_CONTENT_INCLUDES,
|
|
@@ -59,13 +61,17 @@ const DOCS_PATHS = new Map(
|
|
|
59
61
|
BLUME_NAV_INDEX_TITLE_MISMATCH: DOCS_CONTENT_NAVIGATION,
|
|
60
62
|
BLUME_NAV_MISSING_PAGE: DOCS_CONTENT_NAVIGATION,
|
|
61
63
|
BLUME_NODE_VERSION: "/docs/quickstart",
|
|
64
|
+
BLUME_SEARCH_SYNC_FAILED: "/docs/configuration/search",
|
|
62
65
|
BLUME_SERVER_FEATURE_REQUIRED: DOCS_DEPLOYMENT,
|
|
63
66
|
BLUME_SIDEBAR_DISPLAY_IGNORED: DOCS_CONTENT_NAVIGATION,
|
|
64
67
|
BLUME_SOURCE_FETCH_FAILED: DOCS_CONTENT_SOURCES,
|
|
65
68
|
BLUME_SOURCE_MISCONFIGURED: DOCS_CONTENT_SOURCES,
|
|
66
69
|
BLUME_SOURCE_OFFLINE: DOCS_CONTENT_SOURCES,
|
|
70
|
+
BLUME_SOURCE_PATH_MISSING: "/docs/content/sources/remote-mdx",
|
|
67
71
|
BLUME_SOURCE_SDK_MISSING: DOCS_CONTENT_SOURCES,
|
|
68
72
|
BLUME_SOURCE_UNAVAILABLE: DOCS_CONTENT_SOURCES,
|
|
73
|
+
BLUME_SOURCE_UNRESOLVED_LINK: "/docs/content/sources/contentful",
|
|
74
|
+
BLUME_SOURCE_UNSUPPORTED_NODE: "/docs/content/sources/payload",
|
|
69
75
|
BLUME_TRANSLATE_MISSING: "/docs/cli/translate",
|
|
70
76
|
BLUME_TRANSLATE_STALE: "/docs/cli/translate",
|
|
71
77
|
BLUME_UNKNOWN_COMPONENT: "/docs/configuration/customization",
|
|
@@ -73,8 +79,8 @@ const DOCS_PATHS = new Map(
|
|
|
73
79
|
BLUME_UNKNOWN_ICON: DOCS_CONTENT_NAVIGATION,
|
|
74
80
|
BLUME_UNKNOWN_OPTION: "/docs/cli",
|
|
75
81
|
BLUME_UNLOADABLE_FILE_NAME: "/docs/content",
|
|
76
|
-
BLUME_WIKILINK_AMBIGUOUS:
|
|
77
|
-
BLUME_WIKILINK_UNRESOLVED:
|
|
82
|
+
BLUME_WIKILINK_AMBIGUOUS: DOCS_CONTENT_SOURCES_OBSIDIAN,
|
|
83
|
+
BLUME_WIKILINK_UNRESOLVED: DOCS_CONTENT_SOURCES_OBSIDIAN,
|
|
78
84
|
BLUME_YARN_PNP: "/docs/quickstart",
|
|
79
85
|
})
|
|
80
86
|
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The social platforms `footer.socials` links to, each shown by its brand
|
|
3
|
+
* icon: Mintlify's set, without its aliases (`twitter` and `x-twitter` are
|
|
4
|
+
* `x`, `earth-americas` is `website`).
|
|
5
|
+
*/
|
|
6
|
+
export const FOOTER_SOCIALS = [
|
|
7
|
+
"bluesky",
|
|
8
|
+
"discord",
|
|
9
|
+
"facebook",
|
|
10
|
+
"github",
|
|
11
|
+
"hacker-news",
|
|
12
|
+
"instagram",
|
|
13
|
+
"linkedin",
|
|
14
|
+
"medium",
|
|
15
|
+
"podcast",
|
|
16
|
+
"reddit",
|
|
17
|
+
"slack",
|
|
18
|
+
"telegram",
|
|
19
|
+
"threads",
|
|
20
|
+
"website",
|
|
21
|
+
"x",
|
|
22
|
+
"youtube",
|
|
23
|
+
] as const;
|
|
24
|
+
|
|
25
|
+
/** A platform `footer.socials` links to. */
|
|
26
|
+
export type FooterSocial = (typeof FOOTER_SOCIALS)[number];
|