blume 0.0.0 → 0.1.0
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/bin/blume.mjs +18 -0
- package/dist/cli/index.js +11989 -0
- package/dist/cli/index.js.map +141 -0
- package/docs/01-quickstart.mdx +99 -0
- package/docs/02-deployment.mdx +129 -0
- package/docs/advanced/api-reference.mdx +114 -0
- package/docs/advanced/blog.mdx +121 -0
- package/docs/advanced/changelog.mdx +113 -0
- package/docs/advanced/custom-pages.mdx +187 -0
- package/docs/advanced/meta.ts +7 -0
- package/docs/changelog/v0-1-0.mdx +12 -0
- package/docs/changelog/v0-2-0.mdx +16 -0
- package/docs/configuration/ai.mdx +228 -0
- package/docs/configuration/analytics.mdx +98 -0
- package/docs/configuration/customization.mdx +91 -0
- package/docs/configuration/export.mdx +70 -0
- package/docs/configuration/index.mdx +271 -0
- package/docs/configuration/meta.ts +15 -0
- package/docs/configuration/search.mdx +172 -0
- package/docs/configuration/seo.mdx +196 -0
- package/docs/configuration/theming.mdx +178 -0
- package/docs/content/components.mdx +565 -0
- package/docs/content/i18n.mdx +205 -0
- package/docs/content/index.mdx +161 -0
- package/docs/content/islands.mdx +94 -0
- package/docs/content/meta.mdx +119 -0
- package/docs/content/meta.ts +15 -0
- package/docs/content/navigation.mdx +168 -0
- package/docs/content/sources.mdx +216 -0
- package/docs/content/syntax.mdx +445 -0
- package/docs/index.mdx +112 -0
- package/docs/reference/cli.mdx +43 -0
- package/docs/reference/frontmatter.mdx +74 -0
- package/docs/reference/meta.ts +7 -0
- package/package.json +140 -6
- package/src/ai/ask.ts +93 -0
- package/src/ai/llms.ts +65 -0
- package/src/ai/markdown.ts +31 -0
- package/src/ai/mcp/data.ts +74 -0
- package/src/ai/mcp/discovery.ts +49 -0
- package/src/ai/mcp/server.ts +225 -0
- package/src/ai/mcp/tools.ts +47 -0
- package/src/assets/icon.png +0 -0
- package/src/astro/generate.ts +878 -0
- package/src/astro/index.ts +4 -0
- package/src/astro/integration.ts +74 -0
- package/src/astro/islands.ts +131 -0
- package/src/astro/markdown-negotiation.ts +68 -0
- package/src/astro/pages.ts +28 -0
- package/src/astro/templates.ts +1199 -0
- package/src/cli/commands/add.ts +81 -0
- package/src/cli/commands/build.ts +103 -0
- package/src/cli/commands/dev.ts +108 -0
- package/src/cli/commands/doctor.ts +74 -0
- package/src/cli/commands/eject.ts +57 -0
- package/src/cli/commands/init.ts +98 -0
- package/src/cli/commands/migrate.ts +39 -0
- package/src/cli/commands/preview.ts +39 -0
- package/src/cli/commands/sync.ts +52 -0
- package/src/cli/commands/validate.ts +60 -0
- package/src/cli/index.ts +35 -0
- package/src/cli/log.ts +37 -0
- package/src/cli/prepare.ts +80 -0
- package/src/components/Icon.astro +99 -0
- package/src/components/content/Accordion.astro +8 -0
- package/src/components/content/AccordionItem.astro +121 -0
- package/src/components/content/AutoTypeTable.astro +51 -0
- package/src/components/content/Badge.astro +124 -0
- package/src/components/content/Callout.astro +73 -0
- package/src/components/content/Card.astro +104 -0
- package/src/components/content/CardGroup.astro +14 -0
- package/src/components/content/CodeGroup.astro +13 -0
- package/src/components/content/Color.astro +15 -0
- package/src/components/content/ColorItem.astro +87 -0
- package/src/components/content/ColorRow.astro +10 -0
- package/src/components/content/Column.astro +6 -0
- package/src/components/content/Columns.astro +9 -0
- package/src/components/content/Expandable.astro +11 -0
- package/src/components/content/FileTree.astro +8 -0
- package/src/components/content/Frame.astro +70 -0
- package/src/components/content/GithubInfo.astro +110 -0
- package/src/components/content/Math.astro +24 -0
- package/src/components/content/Panel.astro +20 -0
- package/src/components/content/Prompt.astro +129 -0
- package/src/components/content/Step.astro +34 -0
- package/src/components/content/Steps.astro +20 -0
- package/src/components/content/Tab.astro +40 -0
- package/src/components/content/Tabs.astro +273 -0
- package/src/components/content/Tile.astro +42 -0
- package/src/components/content/Tooltip.astro +68 -0
- package/src/components/content/Tree.astro +300 -0
- package/src/components/content/TreeFile.astro +15 -0
- package/src/components/content/TreeFolder.astro +62 -0
- package/src/components/content/TypeTable.astro +106 -0
- package/src/components/content/Update.astro +66 -0
- package/src/components/content/Visibility.astro +12 -0
- package/src/components/content/Warning.astro +9 -0
- package/src/components/content/auto-type-table.ts +141 -0
- package/src/components/content/github-info.ts +79 -0
- package/src/components/content/mermaid-element.ts +68 -0
- package/src/components/github-mark.ts +9 -0
- package/src/components/index.ts +14 -0
- package/src/components/islands/AskAI.astro +12 -0
- package/src/components/islands/ask-ai.tsx +156 -0
- package/src/components/layout/Analytics.astro +63 -0
- package/src/components/layout/Banner.astro +50 -0
- package/src/components/layout/Breadcrumbs.astro +31 -0
- package/src/components/layout/Favicon.astro +15 -0
- package/src/components/layout/Fonts.astro +14 -0
- package/src/components/layout/Header.astro +188 -0
- package/src/components/layout/LanguageSwitcher.astro +56 -0
- package/src/components/layout/NavTree.astro +462 -0
- package/src/components/layout/PageActions.astro +438 -0
- package/src/components/layout/PageFeedback.astro +58 -0
- package/src/components/layout/Pagination.astro +56 -0
- package/src/components/layout/ReferenceLayout.astro +102 -0
- package/src/components/layout/RootLayout.astro +533 -0
- package/src/components/layout/Search.astro +608 -0
- package/src/components/layout/TableOfContents.astro +68 -0
- package/src/components/layout/analytics-client.ts +38 -0
- package/src/components/layout/nav-utils.ts +87 -0
- package/src/components/layout/overrides.ts +32 -0
- package/src/components/layout/search/algolia.ts +43 -0
- package/src/components/layout/search/endpoint.ts +22 -0
- package/src/components/layout/search/flexsearch.ts +52 -0
- package/src/components/layout/search/orama-cloud.ts +41 -0
- package/src/components/layout/search/orama.ts +26 -0
- package/src/components/layout/search/pagefind.ts +43 -0
- package/src/components/layout/search/types.ts +163 -0
- package/src/components/layout/search/typesense.ts +60 -0
- package/src/components/layout/toc-element.ts +108 -0
- package/src/core/bridge.ts +92 -0
- package/src/core/config.ts +112 -0
- package/src/core/content.ts +50 -0
- package/src/core/define-components.ts +34 -0
- package/src/core/define-meta.ts +20 -0
- package/src/core/deployment-env.ts +73 -0
- package/src/core/diagnostics.ts +104 -0
- package/src/core/graph.ts +128 -0
- package/src/core/i18n-ui.ts +171 -0
- package/src/core/i18n.ts +169 -0
- package/src/core/last-modified.ts +88 -0
- package/src/core/links.ts +336 -0
- package/src/core/load-module.ts +15 -0
- package/src/core/manifest.ts +126 -0
- package/src/core/meta.ts +97 -0
- package/src/core/navigation.ts +392 -0
- package/src/core/package-root.ts +37 -0
- package/src/core/project-graph.ts +153 -0
- package/src/core/project.ts +56 -0
- package/src/core/schema.ts +1057 -0
- package/src/core/server-features.ts +23 -0
- package/src/core/sources/assets.ts +77 -0
- package/src/core/sources/cache.ts +122 -0
- package/src/core/sources/filesystem.ts +99 -0
- package/src/core/sources/mdx-remote.ts +216 -0
- package/src/core/sources/mintlify.ts +161 -0
- package/src/core/sources/normalize.ts +227 -0
- package/src/core/sources/notion.ts +440 -0
- package/src/core/sources/portable-text.ts +143 -0
- package/src/core/sources/read.ts +36 -0
- package/src/core/sources/resolve.ts +158 -0
- package/src/core/sources/sanity.ts +218 -0
- package/src/core/sources/types.ts +105 -0
- package/src/core/types.ts +261 -0
- package/src/core/ui-packs/ar.ts +47 -0
- package/src/core/ui-packs/bg.ts +47 -0
- package/src/core/ui-packs/bn.ts +47 -0
- package/src/core/ui-packs/ca.ts +47 -0
- package/src/core/ui-packs/cs.ts +47 -0
- package/src/core/ui-packs/da.ts +47 -0
- package/src/core/ui-packs/de.ts +47 -0
- package/src/core/ui-packs/el.ts +47 -0
- package/src/core/ui-packs/es.ts +47 -0
- package/src/core/ui-packs/fa.ts +47 -0
- package/src/core/ui-packs/fi.ts +47 -0
- package/src/core/ui-packs/fr.ts +47 -0
- package/src/core/ui-packs/he.ts +47 -0
- package/src/core/ui-packs/hi.ts +47 -0
- package/src/core/ui-packs/hr.ts +47 -0
- package/src/core/ui-packs/hu.ts +47 -0
- package/src/core/ui-packs/id.ts +47 -0
- package/src/core/ui-packs/index.ts +87 -0
- package/src/core/ui-packs/it.ts +47 -0
- package/src/core/ui-packs/ja.ts +47 -0
- package/src/core/ui-packs/ko.ts +47 -0
- package/src/core/ui-packs/nl.ts +47 -0
- package/src/core/ui-packs/no.ts +47 -0
- package/src/core/ui-packs/pl.ts +47 -0
- package/src/core/ui-packs/pt-br.ts +47 -0
- package/src/core/ui-packs/pt.ts +47 -0
- package/src/core/ui-packs/ro.ts +47 -0
- package/src/core/ui-packs/ru.ts +47 -0
- package/src/core/ui-packs/sk.ts +47 -0
- package/src/core/ui-packs/sr.ts +47 -0
- package/src/core/ui-packs/sv.ts +47 -0
- package/src/core/ui-packs/th.ts +47 -0
- package/src/core/ui-packs/tr.ts +47 -0
- package/src/core/ui-packs/uk.ts +47 -0
- package/src/core/ui-packs/vi.ts +47 -0
- package/src/core/ui-packs/zh-tw.ts +47 -0
- package/src/core/ui-packs/zh.ts +47 -0
- package/src/core/version.ts +23 -0
- package/src/deploy/robots.ts +20 -0
- package/src/deploy/rss.ts +128 -0
- package/src/deploy/sitemap.ts +28 -0
- package/src/index.ts +27 -0
- package/src/markdown/code-title.ts +71 -0
- package/src/markdown/directives.ts +83 -0
- package/src/markdown/heading-anchors.ts +137 -0
- package/src/markdown/index.ts +159 -0
- package/src/markdown/inline-code.ts +108 -0
- package/src/markdown/language-icon.ts +172 -0
- package/src/markdown/math.ts +32 -0
- package/src/markdown/mdast.ts +48 -0
- package/src/markdown/mermaid.ts +37 -0
- package/src/markdown/package-commands.ts +159 -0
- package/src/markdown/package-install.ts +40 -0
- package/src/migrate/fumadocs/config.ts +106 -0
- package/src/migrate/fumadocs/content.ts +365 -0
- package/src/migrate/fumadocs/frontmatter.ts +18 -0
- package/src/migrate/fumadocs/index.ts +252 -0
- package/src/migrate/fumadocs/meta.ts +114 -0
- package/src/migrate/migrate.ts +53 -0
- package/src/migrate/mintlify/config.ts +1040 -0
- package/src/migrate/mintlify/content.ts +98 -0
- package/src/migrate/mintlify/frontmatter.ts +126 -0
- package/src/migrate/mintlify/i18n.ts +51 -0
- package/src/migrate/mintlify/icons.ts +128 -0
- package/src/migrate/mintlify/index.ts +266 -0
- package/src/migrate/mintlify/snippets.ts +305 -0
- package/src/migrate/mintlify/transform.ts +81 -0
- package/src/migrate/nextra/content.ts +46 -0
- package/src/migrate/nextra/frontmatter.ts +40 -0
- package/src/migrate/nextra/index.ts +374 -0
- package/src/migrate/nextra/meta.ts +266 -0
- package/src/migrate/shared.ts +623 -0
- package/src/migrate/starlight/config.ts +459 -0
- package/src/migrate/starlight/content.ts +78 -0
- package/src/migrate/starlight/frontmatter.ts +111 -0
- package/src/migrate/starlight/i18n.ts +54 -0
- package/src/migrate/starlight/index.ts +131 -0
- package/src/og/card.ts +92 -0
- package/src/og/index.ts +2 -0
- package/src/openapi/scalar.ts +246 -0
- package/src/registry/eject.ts +263 -0
- package/src/registry/registry.ts +100 -0
- package/src/registry/rewrite-imports.ts +39 -0
- package/src/runtime/index.ts +14 -0
- package/src/search/build.ts +23 -0
- package/src/search/documents.ts +165 -0
- package/src/search/orama-index.ts +66 -0
- package/src/search/providers.ts +91 -0
- package/src/search/sync/algolia.ts +30 -0
- package/src/search/sync/index.ts +50 -0
- package/src/search/sync/orama-cloud.ts +40 -0
- package/src/search/sync/typesense.ts +65 -0
- package/src/seo/jsonld.ts +113 -0
- package/src/theme/entry.ts +608 -0
- package/src/theme/fonts.ts +198 -0
- package/src/theme/icons.ts +184 -0
- package/src/theme/palette.ts +143 -0
- package/src/theme/twoslash.ts +81 -0
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Syntax
|
|
3
|
+
description: Every Markdown and MDX feature Blume renders — formatting, lists, tables, callouts, code blocks, package installs, and math.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Blume renders standard Markdown and MDX with a curated, GitHub-flavored feature
|
|
7
|
+
set — no imports, no configuration. Write content the way you already do; this
|
|
8
|
+
page shows everything that's supported, with a live preview and the source for
|
|
9
|
+
each.
|
|
10
|
+
|
|
11
|
+
## Headings
|
|
12
|
+
|
|
13
|
+
Structure a page with headings. Blume renders your frontmatter `title` as the
|
|
14
|
+
page heading, so start your content at `##` — `##` through `####` become entries
|
|
15
|
+
in the table of contents. Every `##`–`######` heading is also wrapped in a link
|
|
16
|
+
to its own anchor, so readers can click a heading to copy, bookmark, or share a
|
|
17
|
+
permalink straight to that section (hover to reveal the `#`). Turn this off with
|
|
18
|
+
`markdown: { headingAnchors: false }` in `blume.config.ts`.
|
|
19
|
+
|
|
20
|
+
```md
|
|
21
|
+
## Section
|
|
22
|
+
|
|
23
|
+
### Subsection
|
|
24
|
+
|
|
25
|
+
#### Detail
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Emphasis
|
|
29
|
+
|
|
30
|
+
Inline formatting for stressing words, marking deletions, and showing code or
|
|
31
|
+
keystrokes mid-sentence.
|
|
32
|
+
|
|
33
|
+
**Bold**, _italic_, ~~strikethrough~~, and `inline code`.
|
|
34
|
+
|
|
35
|
+
```md
|
|
36
|
+
**Bold**, _italic_, ~~strikethrough~~, and `inline code`.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Superscript and subscript
|
|
40
|
+
|
|
41
|
+
For footnote markers, ordinals, and scientific or chemical notation inline.
|
|
42
|
+
|
|
43
|
+
E = mc^2^ and H~2~O.
|
|
44
|
+
|
|
45
|
+
```md
|
|
46
|
+
E = mc^2^ and H~2~O.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Blockquotes
|
|
50
|
+
|
|
51
|
+
Set off a quotation, callout aside, or an editorial note from the surrounding
|
|
52
|
+
text.
|
|
53
|
+
|
|
54
|
+
> Documentation that's fast, AI-ready, and zero-config — down to the template.
|
|
55
|
+
|
|
56
|
+
```md
|
|
57
|
+
> Documentation that's fast, AI-ready, and zero-config — down to the template.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Lists
|
|
61
|
+
|
|
62
|
+
Use unordered lists for unordered sets, ordered lists for sequences, and task
|
|
63
|
+
lists for checklists and roadmaps.
|
|
64
|
+
|
|
65
|
+
- Markdown-first authoring
|
|
66
|
+
- Static by default
|
|
67
|
+
- Opt into server features
|
|
68
|
+
- Own your output
|
|
69
|
+
|
|
70
|
+
1. Install Blume
|
|
71
|
+
2. Write a page
|
|
72
|
+
3. Ship it
|
|
73
|
+
|
|
74
|
+
- [x] Scaffold the project
|
|
75
|
+
- [ ] Write the first guide
|
|
76
|
+
|
|
77
|
+
```md
|
|
78
|
+
- Markdown-first authoring
|
|
79
|
+
- Static by default
|
|
80
|
+
- Opt into server features
|
|
81
|
+
- Own your output
|
|
82
|
+
|
|
83
|
+
1. Install Blume
|
|
84
|
+
2. Write a page
|
|
85
|
+
3. Ship it
|
|
86
|
+
|
|
87
|
+
- [x] Scaffold the project
|
|
88
|
+
- [ ] Write the first guide
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Tables
|
|
92
|
+
|
|
93
|
+
Tabulate structured data — config options, comparison matrices, parameter lists.
|
|
94
|
+
Use colons in the divider row to align columns.
|
|
95
|
+
|
|
96
|
+
| Command | Description | Output |
|
|
97
|
+
| ------------- | --------------------- | :-----: |
|
|
98
|
+
| `blume dev` | Start the dev server | — |
|
|
99
|
+
| `blume build` | Build the static site | `dist/` |
|
|
100
|
+
|
|
101
|
+
```md
|
|
102
|
+
| Command | Description | Output |
|
|
103
|
+
| ------------- | --------------------- | :-----: |
|
|
104
|
+
| `blume dev` | Start the dev server | — |
|
|
105
|
+
| `blume build` | Build the static site | `dist/` |
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Links and images
|
|
109
|
+
|
|
110
|
+
Link to other pages or external sites. Images accept any path under `public/` or
|
|
111
|
+
a remote URL.
|
|
112
|
+
|
|
113
|
+
Read the [quickstart](/docs/quickstart) to get started.
|
|
114
|
+
|
|
115
|
+
```md
|
|
116
|
+
Read the [quickstart](/docs/quickstart) to get started.
|
|
117
|
+
|
|
118
|
+

|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Content images are click-to-zoom by default — readers can click any image to open
|
|
122
|
+
it in a lightbox. Turn this off with `markdown: { imageZoom: false }` in
|
|
123
|
+
`blume.config.ts`, or opt a single image out with `data-no-zoom`.
|
|
124
|
+
|
|
125
|
+
## Horizontal rule
|
|
126
|
+
|
|
127
|
+
Separate major shifts in topic within a long page.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
```md
|
|
132
|
+
---
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Code blocks
|
|
136
|
+
|
|
137
|
+
Fenced code blocks are syntax-highlighted with a header showing the language —
|
|
138
|
+
with a brand icon for recognized languages — and a copy button. Add a **title**
|
|
139
|
+
after the language — typically a filename — and it replaces the language label in
|
|
140
|
+
the header.
|
|
141
|
+
|
|
142
|
+
```ts blume.config.ts
|
|
143
|
+
import { defineConfig } from "blume";
|
|
144
|
+
|
|
145
|
+
export default defineConfig({
|
|
146
|
+
title: "My docs",
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
````md
|
|
151
|
+
```ts blume.config.ts
|
|
152
|
+
import { defineConfig } from "blume";
|
|
153
|
+
|
|
154
|
+
export default defineConfig({
|
|
155
|
+
title: "My docs",
|
|
156
|
+
});
|
|
157
|
+
```
|
|
158
|
+
````
|
|
159
|
+
|
|
160
|
+
Inline code can be highlighted too: add a `{:lang}` marker inside a backtick span
|
|
161
|
+
and it's colored like a tiny code block — `useState(){:js}` or
|
|
162
|
+
`T extends object{:ts}`. Turn it on with `markdown: { code: { inline: true } }`.
|
|
163
|
+
|
|
164
|
+
### Line numbers
|
|
165
|
+
|
|
166
|
+
Append `lineNumbers` to render a line-number gutter — on its own or alongside a
|
|
167
|
+
title:
|
|
168
|
+
|
|
169
|
+
```ts server.ts lineNumbers
|
|
170
|
+
import { serve } from "blume";
|
|
171
|
+
|
|
172
|
+
serve({ port: 3000 });
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
````md
|
|
176
|
+
```ts server.ts lineNumbers
|
|
177
|
+
import { serve } from "blume";
|
|
178
|
+
|
|
179
|
+
serve({ port: 3000 });
|
|
180
|
+
```
|
|
181
|
+
````
|
|
182
|
+
|
|
183
|
+
### Highlighting
|
|
184
|
+
|
|
185
|
+
Annotate code with GitHub-style comments to draw attention to lines, words, and
|
|
186
|
+
changes. The comments are stripped from the rendered output, so the code stays
|
|
187
|
+
copy-paste clean. All four are on by default — no configuration.
|
|
188
|
+
|
|
189
|
+
Mark a line with `// [!code highlight]` to give it a highlighted background:
|
|
190
|
+
|
|
191
|
+
```ts
|
|
192
|
+
const config = defineConfig({
|
|
193
|
+
title: "My docs", // [!code highlight]
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Show changes with `// [!code ++]` for additions and `// [!code --]` for
|
|
198
|
+
removals, rendered as a green/red diff:
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
export default defineConfig({
|
|
202
|
+
title: "My docs", // [!code --]
|
|
203
|
+
title: "Blume docs", // [!code ++]
|
|
204
|
+
});
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Highlight every occurrence of a term on a line with `// [!code word:serve]`:
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
import { serve } from "blume"; // [!code word:serve]
|
|
211
|
+
|
|
212
|
+
serve({ port: 3000 });
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Dim everything except the lines you mark with `// [!code focus]` (the rest
|
|
216
|
+
sharpens on hover):
|
|
217
|
+
|
|
218
|
+
```ts
|
|
219
|
+
export default defineConfig({
|
|
220
|
+
title: "My docs", // [!code focus]
|
|
221
|
+
description: "Built with Blume",
|
|
222
|
+
});
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Or highlight lines by **number** instead of comments — useful when you can't edit
|
|
226
|
+
the code. Put a brace range after the language; single lines, comma lists, and
|
|
227
|
+
`start-end` spans all work:
|
|
228
|
+
|
|
229
|
+
```ts {1,4-5}
|
|
230
|
+
import { defineConfig } from "blume";
|
|
231
|
+
|
|
232
|
+
export default defineConfig({
|
|
233
|
+
title: "My docs",
|
|
234
|
+
description: "Built with Blume",
|
|
235
|
+
});
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
````md
|
|
239
|
+
```ts {1,4-5}
|
|
240
|
+
import { defineConfig } from "blume";
|
|
241
|
+
|
|
242
|
+
export default defineConfig({
|
|
243
|
+
title: "My docs",
|
|
244
|
+
description: "Built with Blume",
|
|
245
|
+
});
|
|
246
|
+
```
|
|
247
|
+
````
|
|
248
|
+
|
|
249
|
+
### Display types
|
|
250
|
+
|
|
251
|
+
Mark a TypeScript block `twoslash` to display real types straight from the
|
|
252
|
+
compiler — powered by [Twoslash](https://shiki.style/packages/twoslash). Hover
|
|
253
|
+
any token to see its inferred type, and add an inline `^?` query to pin a type
|
|
254
|
+
below the line.
|
|
255
|
+
|
|
256
|
+
```ts twoslash
|
|
257
|
+
const config = {
|
|
258
|
+
title: "My docs",
|
|
259
|
+
version: 1,
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
config.title;
|
|
263
|
+
// ^?
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
````md
|
|
267
|
+
```ts twoslash
|
|
268
|
+
const config = { title: "My docs", version: 1 };
|
|
269
|
+
|
|
270
|
+
config.title;
|
|
271
|
+
// ^?
|
|
272
|
+
```
|
|
273
|
+
````
|
|
274
|
+
|
|
275
|
+
:::note
|
|
276
|
+
Hide the language icons or wrap long lines instead of scrolling with
|
|
277
|
+
`markdown: { code: { icons: false, wrap: true } }` in `blume.config.ts`.
|
|
278
|
+
:::
|
|
279
|
+
|
|
280
|
+
## Package install
|
|
281
|
+
|
|
282
|
+
A `package-install` block turns a single install command into a tabbed snippet
|
|
283
|
+
for npm, pnpm, yarn, and bun — so readers copy the one that matches their setup.
|
|
284
|
+
|
|
285
|
+
```package-install
|
|
286
|
+
npm i blume
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
````md
|
|
290
|
+
```package-install
|
|
291
|
+
npm i blume
|
|
292
|
+
```
|
|
293
|
+
````
|
|
294
|
+
|
|
295
|
+
## Diagrams
|
|
296
|
+
|
|
297
|
+
A `mermaid` block renders a [Mermaid](https://mermaid.js.org) diagram — flowcharts,
|
|
298
|
+
sequence diagrams, and more — straight from text. Diagrams follow the active color
|
|
299
|
+
theme and re-render when it changes.
|
|
300
|
+
|
|
301
|
+
```mermaid
|
|
302
|
+
flowchart LR
|
|
303
|
+
A[Markdown] --> B{blume build}
|
|
304
|
+
B --> C[Static HTML]
|
|
305
|
+
B --> D[llms.txt]
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
````md
|
|
309
|
+
```mermaid
|
|
310
|
+
flowchart LR
|
|
311
|
+
A[Markdown] --> B{blume build}
|
|
312
|
+
B --> C[Static HTML]
|
|
313
|
+
B --> D[llms.txt]
|
|
314
|
+
```
|
|
315
|
+
````
|
|
316
|
+
|
|
317
|
+
Diagrams render on the client, so this is an MDX-only feature, and the Mermaid
|
|
318
|
+
library loads only on pages that include one.
|
|
319
|
+
|
|
320
|
+
## Callouts
|
|
321
|
+
|
|
322
|
+
Callouts pull a reader's attention to context, advice, or risk. Write them as
|
|
323
|
+
`:::type` directives; add a title in brackets, like `:::warning[Heads up]`.
|
|
324
|
+
|
|
325
|
+
### Note
|
|
326
|
+
|
|
327
|
+
Neutral, supporting context the reader should keep in mind.
|
|
328
|
+
|
|
329
|
+
:::note
|
|
330
|
+
Blume regenerates `.blume/` on every run — never edit it by hand.
|
|
331
|
+
:::
|
|
332
|
+
|
|
333
|
+
```md
|
|
334
|
+
:::note
|
|
335
|
+
Blume regenerates `.blume/` on every run — never edit it by hand.
|
|
336
|
+
:::
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Tip
|
|
340
|
+
|
|
341
|
+
A helpful shortcut or best practice that isn't required but makes life easier.
|
|
342
|
+
|
|
343
|
+
:::tip
|
|
344
|
+
Set `deployment.site` so sitemaps and Open Graph images use absolute URLs.
|
|
345
|
+
:::
|
|
346
|
+
|
|
347
|
+
```md
|
|
348
|
+
:::tip
|
|
349
|
+
Set `deployment.site` so sitemaps and Open Graph images use absolute URLs.
|
|
350
|
+
:::
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Success
|
|
354
|
+
|
|
355
|
+
Confirm a positive outcome or that a step completed as expected.
|
|
356
|
+
|
|
357
|
+
:::success
|
|
358
|
+
Your docs built successfully and are ready to deploy.
|
|
359
|
+
:::
|
|
360
|
+
|
|
361
|
+
```md
|
|
362
|
+
:::success
|
|
363
|
+
Your docs built successfully and are ready to deploy.
|
|
364
|
+
:::
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Warning
|
|
368
|
+
|
|
369
|
+
Flag something that needs care to avoid a mistake or surprising behavior.
|
|
370
|
+
|
|
371
|
+
:::warning[Heads up]
|
|
372
|
+
Switching to `output: "server"` requires an adapter before you can deploy.
|
|
373
|
+
:::
|
|
374
|
+
|
|
375
|
+
```md
|
|
376
|
+
:::warning[Heads up]
|
|
377
|
+
Switching to `output: "server"` requires an adapter before you can deploy.
|
|
378
|
+
:::
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### Danger
|
|
382
|
+
|
|
383
|
+
Call out a destructive or breaking action that can't easily be undone.
|
|
384
|
+
|
|
385
|
+
:::danger
|
|
386
|
+
`blume eject` is a one-way step — the generated Astro project becomes yours.
|
|
387
|
+
:::
|
|
388
|
+
|
|
389
|
+
```md
|
|
390
|
+
:::danger
|
|
391
|
+
`blume eject` is a one-way step — the generated Astro project becomes yours.
|
|
392
|
+
:::
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Info
|
|
396
|
+
|
|
397
|
+
An informational aside; an alias-friendly default that reads as neutral.
|
|
398
|
+
|
|
399
|
+
:::info
|
|
400
|
+
The core theme ships zero client JavaScript.
|
|
401
|
+
:::
|
|
402
|
+
|
|
403
|
+
```md
|
|
404
|
+
:::info
|
|
405
|
+
The core theme ships zero client JavaScript.
|
|
406
|
+
:::
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
The names `caution`, `error`, `important`, and `warn` are accepted as aliases for
|
|
410
|
+
`warning`, `danger`, `note`, and `warning` respectively.
|
|
411
|
+
|
|
412
|
+
## Math
|
|
413
|
+
|
|
414
|
+
Render LaTeX with KaTeX for formulas in prose or as centered blocks — useful for
|
|
415
|
+
math-heavy or scientific docs. Inline math goes in `$…$`; block math in `$$…$$`.
|
|
416
|
+
|
|
417
|
+
The Pythagorean theorem is $a^2 + b^2 = c^2$.
|
|
418
|
+
|
|
419
|
+
$$
|
|
420
|
+
\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}
|
|
421
|
+
$$
|
|
422
|
+
|
|
423
|
+
```md
|
|
424
|
+
The Pythagorean theorem is $a^2 + b^2 = c^2$.
|
|
425
|
+
|
|
426
|
+
$$
|
|
427
|
+
\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}
|
|
428
|
+
$$
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
:::note
|
|
432
|
+
Math is opt-in because `$` is common in prose and code. Enable it with
|
|
433
|
+
`markdown: { math: true }` in `blume.config.ts`.
|
|
434
|
+
:::
|
|
435
|
+
|
|
436
|
+
## Smart punctuation
|
|
437
|
+
|
|
438
|
+
Blume converts straight quotes and dashes to typographic equivalents as you
|
|
439
|
+
write, so prose reads like it was typeset — no special characters required.
|
|
440
|
+
|
|
441
|
+
"Quotes" become curly, -- becomes an en dash, --- an em dash, and ... an ellipsis.
|
|
442
|
+
|
|
443
|
+
```md
|
|
444
|
+
"Quotes" become curly, -- becomes an en dash, --- an em dash, and ... an ellipsis.
|
|
445
|
+
```
|
package/docs/index.mdx
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Introduction
|
|
3
|
+
description: Blume is an open-source, markdown-first documentation framework on Astro and Vite — fast, AI-ready, and zero-config down to the template.
|
|
4
|
+
sidebar:
|
|
5
|
+
label: Introduction
|
|
6
|
+
order: 0
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Drop Markdown or MDX into a folder, run `blume dev`, and get a production-grade
|
|
10
|
+
docs site — navigation, search, theming, Open Graph images, and a rich component
|
|
11
|
+
library — with no app boilerplate to write or maintain.
|
|
12
|
+
|
|
13
|
+
<CardGroup cols={2}>
|
|
14
|
+
<Card title="Quickstart" href="/docs/quickstart" icon="rocket">
|
|
15
|
+
Install Blume and ship your first page in minutes.
|
|
16
|
+
</Card>
|
|
17
|
+
<Card title="Configuration" href="/docs/configuration" icon="file">
|
|
18
|
+
Tune the title, theme, search, and deployment.
|
|
19
|
+
</Card>
|
|
20
|
+
</CardGroup>
|
|
21
|
+
|
|
22
|
+
## Why Blume exists
|
|
23
|
+
|
|
24
|
+
Blume is the answer to a problem I kept trying to solve at Vercel: documentation
|
|
25
|
+
should be _fast_, _AI-ready_, and require _zero configuration_ — down to not
|
|
26
|
+
needing a starter template at all.
|
|
27
|
+
|
|
28
|
+
Most docs tools hand you a project to own before you've written a word: an app to
|
|
29
|
+
scaffold, a framework to learn, a template to keep in sync with upstream. Blume
|
|
30
|
+
flips that around. The framework _is_ the template, so the only thing you ever
|
|
31
|
+
touch is your content. When you outgrow the defaults, you add configuration one
|
|
32
|
+
file at a time — and you can `blume eject` to a plain Astro project the day you
|
|
33
|
+
want full control.
|
|
34
|
+
|
|
35
|
+
— Hayden Bleasel
|
|
36
|
+
|
|
37
|
+
## What makes Blume different
|
|
38
|
+
|
|
39
|
+
### Fast by default
|
|
40
|
+
|
|
41
|
+
Blume builds on Astro and Vite and renders static HTML by default — fast,
|
|
42
|
+
cacheable, and cheap to host. The core theme is React-free and ships **zero
|
|
43
|
+
client JavaScript**, so pages score well on Core Web Vitals out of the box. Dev
|
|
44
|
+
startup and hot reload feel Vite-native, and you opt into server features only
|
|
45
|
+
when you need them.
|
|
46
|
+
|
|
47
|
+
### AI-ready out of the box
|
|
48
|
+
|
|
49
|
+
Every Blume site speaks fluent machine. It emits [`llms.txt` and
|
|
50
|
+
`llms-full.txt`](/docs/configuration/ai), serves any page's raw Markdown by
|
|
51
|
+
appending `.md` to its URL, and gives readers **Copy as Markdown** and **Open in
|
|
52
|
+
chat** actions on every page. Add an optional in-page **Ask AI** assistant, or
|
|
53
|
+
host an [**MCP server**](/docs/configuration/ai#mcp-server) so coding agents like
|
|
54
|
+
Claude Code and Cursor can search and read your docs directly — no scraping, no
|
|
55
|
+
hosted service. Your Markdown is the source of truth for both humans and models.
|
|
56
|
+
|
|
57
|
+
### Zero configuration — even the template
|
|
58
|
+
|
|
59
|
+
A folder of docs is a complete project. There's no starter to clone, no Astro or
|
|
60
|
+
Tailwind to set up, and no template to maintain. Navigation is inferred from your
|
|
61
|
+
files, [search](/docs/configuration/search) works in dev and production without a hosted
|
|
62
|
+
service, and theming is a handful of tokens. Everything has a sensible default;
|
|
63
|
+
configuration is something you reach for, not something you start with.
|
|
64
|
+
|
|
65
|
+
### Type-safe to the core
|
|
66
|
+
|
|
67
|
+
Your [`blume.config.ts`](/docs/configuration) and every
|
|
68
|
+
[`meta.ts`](/docs/content/meta) are real TypeScript — validated by a schema and
|
|
69
|
+
authored with `defineConfig` and `defineMeta`. Your editor autocompletes every
|
|
70
|
+
option and catches typos, invalid values, and missing fields as you type, long
|
|
71
|
+
before a build. Configuration is code you can refactor, compute, and trust — not
|
|
72
|
+
loosely-typed YAML.
|
|
73
|
+
|
|
74
|
+
## Everything included
|
|
75
|
+
|
|
76
|
+
- **Components** — callouts, cards, steps, tabs, accordions, badges, file trees,
|
|
77
|
+
and parameter tables, usable in MDX with [no imports](/docs/content/components).
|
|
78
|
+
- **Local search** — Orama works in dev and production; Pagefind is one flag away
|
|
79
|
+
for large sites. No hosted index.
|
|
80
|
+
- **AI** — [`llms.txt`, raw Markdown URLs, Copy as Markdown, Open in chat, an
|
|
81
|
+
Ask AI assistant, and a hosted MCP server](/docs/configuration/ai).
|
|
82
|
+
- **Navigation** — inferred from files, refined with `meta.ts` or config.
|
|
83
|
+
- **SEO** — metadata, Open Graph images, RSS feeds, and JSON-LD, [built in](/docs/configuration/seo).
|
|
84
|
+
- **Customization** — component overrides, React islands, custom pages, theme
|
|
85
|
+
tokens, and a source-component registry via `blume add`.
|
|
86
|
+
- **Migration** — `blume migrate mintlify | starlight | fumadocs`.
|
|
87
|
+
- **Eject** — `blume eject` produces a standalone Astro project that still uses
|
|
88
|
+
the `blume` package.
|
|
89
|
+
|
|
90
|
+
## How it works
|
|
91
|
+
|
|
92
|
+
The Blume CLI discovers your content, builds a content graph, and generates a
|
|
93
|
+
hidden Astro project under `.blume/` that it drives for dev and build. The
|
|
94
|
+
generated runtime is an implementation detail — you write Markdown, Blume handles
|
|
95
|
+
the rest — until you choose to eject and own it.
|
|
96
|
+
|
|
97
|
+
## Next steps
|
|
98
|
+
|
|
99
|
+
<CardGroup cols={2}>
|
|
100
|
+
<Card title="Configuration" href="/docs/configuration" icon="file">
|
|
101
|
+
Tune the title, theme, search, and deployment.
|
|
102
|
+
</Card>
|
|
103
|
+
<Card title="Components" href="/docs/content/components" icon="folder">
|
|
104
|
+
Explore the built-in component library.
|
|
105
|
+
</Card>
|
|
106
|
+
<Card title="AI" href="/docs/configuration/ai" icon="lightbulb">
|
|
107
|
+
Ship `llms.txt` and an Ask AI assistant.
|
|
108
|
+
</Card>
|
|
109
|
+
<Card title="CLI" href="/docs/reference/cli" icon="rocket">
|
|
110
|
+
Every `blume` command and flag.
|
|
111
|
+
</Card>
|
|
112
|
+
</CardGroup>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: CLI
|
|
3
|
+
description: The Blume command-line interface.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
blume <command> [options]
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Commands
|
|
11
|
+
|
|
12
|
+
| Command | Description |
|
|
13
|
+
| ---------------------- | ------------------------------------------------------ |
|
|
14
|
+
| `blume init` | Scaffold a minimal project. |
|
|
15
|
+
| `blume dev` | Start the dev server with hot reload. |
|
|
16
|
+
| `blume build` | Build the static (or server) site. |
|
|
17
|
+
| `blume preview` | Preview the last build. |
|
|
18
|
+
| `blume add <item>` | Install a source component from the registry. |
|
|
19
|
+
| `blume migrate <tool>` | Migrate from Mintlify, Starlight, Nextra, or Fumadocs. |
|
|
20
|
+
| `blume eject` | Promote the runtime into a standalone Astro app. |
|
|
21
|
+
| `blume doctor` | Diagnose config and content problems. |
|
|
22
|
+
| `blume validate` | Validate links across your content. |
|
|
23
|
+
|
|
24
|
+
## Common flags
|
|
25
|
+
|
|
26
|
+
- `blume dev --host --port <n> --open`
|
|
27
|
+
- `blume build --strict` — fail on diagnostics.
|
|
28
|
+
- `blume eject --yes` — skip the confirmation prompt.
|
|
29
|
+
- `blume validate --external` — also check external links over the network.
|
|
30
|
+
- `blume validate --strict` — exit non-zero on warnings too.
|
|
31
|
+
|
|
32
|
+
## Validating links
|
|
33
|
+
|
|
34
|
+
`blume validate` checks every link discovered in your content:
|
|
35
|
+
|
|
36
|
+
- **Internal page links** (`/guides/intro`, `./sibling`) must resolve to a real
|
|
37
|
+
page — broken ones are reported as errors.
|
|
38
|
+
- **Anchor links** (`#section`, `/guides/intro#setup`) must match a heading on
|
|
39
|
+
the target page — misses are warnings.
|
|
40
|
+
- **Asset links** (`/logo.png`) are checked against the `public/` directory.
|
|
41
|
+
- **External links** are only checked with `--external` (off by default since it
|
|
42
|
+
requires the network); dead links (404/410/unreachable) are errors, while
|
|
43
|
+
rate-limited or transient responses (403/429/5xx/timeout) are warnings.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Frontmatter
|
|
3
|
+
description: The page metadata schema.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Every page accepts the following frontmatter. All fields are optional.
|
|
7
|
+
|
|
8
|
+
<TypeTable
|
|
9
|
+
type={{
|
|
10
|
+
title: { type: "string", description: "Page title." },
|
|
11
|
+
description: { type: "string", description: "Page summary." },
|
|
12
|
+
type: {
|
|
13
|
+
type: "string",
|
|
14
|
+
default: "doc",
|
|
15
|
+
description: "Content type. blog/changelog drive feeds.",
|
|
16
|
+
},
|
|
17
|
+
date: {
|
|
18
|
+
type: "string",
|
|
19
|
+
description: "Publish date for blog/changelog feeds (ISO or YAML date).",
|
|
20
|
+
},
|
|
21
|
+
slug: { type: "string", description: "Override the generated slug." },
|
|
22
|
+
draft: {
|
|
23
|
+
type: "boolean",
|
|
24
|
+
default: "false",
|
|
25
|
+
description: "Exclude from production builds.",
|
|
26
|
+
},
|
|
27
|
+
}}
|
|
28
|
+
/>
|
|
29
|
+
|
|
30
|
+
## Sidebar
|
|
31
|
+
|
|
32
|
+
```yaml lineNumbers
|
|
33
|
+
sidebar:
|
|
34
|
+
label: Install
|
|
35
|
+
order: 2
|
|
36
|
+
icon: Download
|
|
37
|
+
hidden: false
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## SEO
|
|
41
|
+
|
|
42
|
+
```yaml lineNumbers
|
|
43
|
+
seo:
|
|
44
|
+
title: Install Blume
|
|
45
|
+
image: /og/install.png
|
|
46
|
+
noindex: false
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Search
|
|
50
|
+
|
|
51
|
+
```yaml lineNumbers
|
|
52
|
+
search:
|
|
53
|
+
exclude: false
|
|
54
|
+
tags: [api]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Changelog
|
|
58
|
+
|
|
59
|
+
Changelog entries (`type: changelog`) accept an optional `changelog` object for
|
|
60
|
+
richer feed and display metadata:
|
|
61
|
+
|
|
62
|
+
```yaml lineNumbers
|
|
63
|
+
type: changelog
|
|
64
|
+
changelog:
|
|
65
|
+
version: 1.2.0
|
|
66
|
+
date: 2026-06-20
|
|
67
|
+
category: Features
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`date` may live here or at the top level — both feed the
|
|
71
|
+
[changelog RSS feed](/docs/content#feeds). See [Changelog](/docs/advanced/changelog) for the
|
|
72
|
+
generated timeline page and feed.
|
|
73
|
+
|
|
74
|
+
Schemas are exported from `blume/schema` for editor and migration tooling.
|