blume 0.5.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/cli/index.js +2235 -5942
  2. package/dist/cli/index.js.map +36 -65
  3. package/dist/types/core/config.d.ts +0 -8
  4. package/dist/types/core/data.d.ts +2 -2
  5. package/dist/types/core/schema.d.ts +58 -453
  6. package/dist/types/core/types.d.ts +1 -7
  7. package/docs/advanced/meta.ts +1 -8
  8. package/docs/advanced/skills.mdx +28 -0
  9. package/docs/configuration/ai.mdx +3 -1
  10. package/docs/configuration/index.mdx +13 -17
  11. package/docs/configuration/theming.mdx +3 -11
  12. package/docs/content/components.mdx +2 -53
  13. package/docs/content/i18n.mdx +1 -5
  14. package/docs/content/sources.mdx +1 -1
  15. package/docs/content/syntax.mdx +1 -1
  16. package/docs/index.mdx +0 -1
  17. package/docs/reference/cli.mdx +12 -13
  18. package/package.json +4 -6
  19. package/skills/blume/SKILL.md +71 -0
  20. package/skills/blume-update-docs/SKILL.md +52 -0
  21. package/skills/blume-update-docs/references/audit-checklist.md +46 -0
  22. package/src/ai/mcp/discovery.ts +3 -1
  23. package/src/ai/mcp/server.ts +3 -1
  24. package/src/astro/component-slots.ts +10 -2
  25. package/src/astro/generate.ts +15 -12
  26. package/src/astro/integration.ts +0 -21
  27. package/src/astro/templates.ts +62 -37
  28. package/src/cli/coalesce.ts +43 -0
  29. package/src/cli/commands/dev.ts +30 -22
  30. package/src/cli/commands/validate.ts +0 -2
  31. package/src/cli/dev-lock.ts +4 -2
  32. package/src/cli/index.ts +0 -2
  33. package/src/components/BlumePage.astro +0 -6
  34. package/src/components/Icon.astro +1 -12
  35. package/src/components/content/AccordionItem.astro +3 -6
  36. package/src/components/content/Badge.astro +1 -3
  37. package/src/components/content/Callout.astro +3 -9
  38. package/src/components/content/Card.astro +2 -3
  39. package/src/components/content/ColorItem.astro +8 -5
  40. package/src/components/content/Column.astro +1 -1
  41. package/src/components/content/Prompt.astro +8 -4
  42. package/src/components/content/Step.astro +3 -4
  43. package/src/components/content/Tab.astro +2 -3
  44. package/src/components/content/Tabs.astro +13 -2
  45. package/src/components/content/TypeTable.astro +5 -5
  46. package/src/components/content/Update.astro +1 -1
  47. package/src/components/content/mermaid-element.ts +20 -2
  48. package/src/components/islands/ask-ai.tsx +4 -8
  49. package/src/components/islands/base-path.ts +30 -0
  50. package/src/components/islands/hooks.ts +12 -8
  51. package/src/components/layout/Header.astro +26 -3
  52. package/src/components/layout/Logo.astro +5 -1
  53. package/src/components/layout/NavSelector.astro +1 -1
  54. package/src/components/layout/NavTree.astro +14 -14
  55. package/src/components/layout/PageActions.astro +17 -11
  56. package/src/components/layout/PageLayout.astro +42 -0
  57. package/src/components/layout/ReferenceLayout.astro +1 -0
  58. package/src/components/layout/RootLayout.astro +31 -2
  59. package/src/components/layout/Search.astro +9 -6
  60. package/src/components/layout/nav-utils.ts +9 -4
  61. package/src/components/layout/search/types.ts +16 -5
  62. package/src/components/openapi/ApiOverview.astro +4 -50
  63. package/src/components/openapi/ApiTagOperations.astro +42 -0
  64. package/src/components/openapi/ParametersTable.astro +1 -1
  65. package/src/components/openapi/SchemaProperty.astro +1 -1
  66. package/src/components/openapi/SchemaTable.astro +3 -3
  67. package/src/components/openapi/helpers.ts +17 -8
  68. package/src/components/openapi/snippets.ts +17 -4
  69. package/src/core/builtin-tags.ts +1 -3
  70. package/src/core/config.ts +19 -33
  71. package/src/core/data.ts +2 -2
  72. package/src/core/graph.ts +7 -5
  73. package/src/core/links.ts +5 -19
  74. package/src/core/meta.ts +1 -1
  75. package/src/core/navigation.ts +5 -6
  76. package/src/core/project-graph.ts +0 -5
  77. package/src/core/schema.ts +13 -90
  78. package/src/core/sources/filesystem.ts +19 -1
  79. package/src/core/sources/mdx-remote.ts +20 -4
  80. package/src/core/sources/normalize.ts +28 -6
  81. package/src/core/sources/resolve.ts +0 -13
  82. package/src/core/sources/watch.ts +45 -0
  83. package/src/core/types.ts +1 -8
  84. package/src/markdown/code-title.ts +6 -3
  85. package/src/markdown/package-install.ts +3 -1
  86. package/src/og/card.ts +16 -4
  87. package/src/openapi/parse.ts +197 -14
  88. package/src/openapi/render-mdx.ts +54 -11
  89. package/src/openapi/source.ts +19 -2
  90. package/src/search/sync/orama-cloud.ts +2 -0
  91. package/src/search/sync/typesense.ts +4 -0
  92. package/src/theme/entry.ts +45 -17
  93. package/src/theme/icons.ts +22 -104
  94. package/src/theme/palette.ts +35 -47
  95. package/src/theme/twoslash.ts +6 -1
  96. package/dist/types/core/bridge.d.ts +0 -24
  97. package/dist/types/migrate/mintlify/assets.d.ts +0 -8
  98. package/dist/types/migrate/mintlify/config.d.ts +0 -16
  99. package/dist/types/migrate/mintlify/i18n.d.ts +0 -7
  100. package/docs/advanced/bridge.mdx +0 -76
  101. package/docs/advanced/migrate.mdx +0 -123
  102. package/src/astro/static-assets.ts +0 -117
  103. package/src/cli/commands/migrate.ts +0 -39
  104. package/src/components/content/ApiField.astro +0 -75
  105. package/src/components/content/ParamField.astro +0 -39
  106. package/src/components/content/RequestField.astro +0 -23
  107. package/src/components/content/ResponseField.astro +0 -23
  108. package/src/components/content/Warning.astro +0 -9
  109. package/src/core/assets.ts +0 -31
  110. package/src/core/bridge.ts +0 -102
  111. package/src/core/sources/mintlify.ts +0 -204
  112. package/src/migrate/fumadocs/config.ts +0 -155
  113. package/src/migrate/fumadocs/content.ts +0 -378
  114. package/src/migrate/fumadocs/frontmatter.ts +0 -18
  115. package/src/migrate/fumadocs/groups.ts +0 -237
  116. package/src/migrate/fumadocs/index.ts +0 -340
  117. package/src/migrate/fumadocs/meta.ts +0 -244
  118. package/src/migrate/migrate.ts +0 -53
  119. package/src/migrate/mintlify/assets.ts +0 -46
  120. package/src/migrate/mintlify/config.ts +0 -958
  121. package/src/migrate/mintlify/content.ts +0 -120
  122. package/src/migrate/mintlify/frontmatter.ts +0 -126
  123. package/src/migrate/mintlify/i18n.ts +0 -51
  124. package/src/migrate/mintlify/icons.ts +0 -128
  125. package/src/migrate/mintlify/index.ts +0 -372
  126. package/src/migrate/mintlify/snippets.ts +0 -306
  127. package/src/migrate/mintlify/transform.ts +0 -82
  128. package/src/migrate/nextra/content.ts +0 -46
  129. package/src/migrate/nextra/frontmatter.ts +0 -40
  130. package/src/migrate/nextra/index.ts +0 -374
  131. package/src/migrate/nextra/meta.ts +0 -266
  132. package/src/migrate/shared.ts +0 -728
  133. package/src/migrate/starlight/config.ts +0 -455
  134. package/src/migrate/starlight/content.ts +0 -78
  135. package/src/migrate/starlight/frontmatter.ts +0 -111
  136. package/src/migrate/starlight/i18n.ts +0 -54
  137. package/src/migrate/starlight/index.ts +0 -131
@@ -1,131 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import { readFile, writeFile } from "node:fs/promises";
3
-
4
- import { join } from "pathe";
5
- import { glob } from "tinyglobby";
6
-
7
- import matter from "../../core/frontmatter.ts";
8
- import { writeBlumeConfig } from "../shared.ts";
9
- import { loadStarlightConfig, mapStarlightConfig } from "./config.ts";
10
- import {
11
- hasAliasedAssets,
12
- rewriteStarlightAsides,
13
- rewriteStarlightComponents,
14
- stripStarlightImports,
15
- unsupportedStarlightComponents,
16
- } from "./content.ts";
17
- import { normalizeStarlightPageMeta } from "./frontmatter.ts";
18
- import { starlightI18n } from "./i18n.ts";
19
-
20
- export interface StarlightMigrationResult {
21
- moved: number;
22
- warnings: string[];
23
- }
24
-
25
- /** Starlight always keeps its docs collection here. */
26
- const CONTENT_DIR = "src/content/docs";
27
-
28
- interface PageResult {
29
- aliased: boolean;
30
- removed: string[];
31
- unsupported: string[];
32
- }
33
-
34
- /** Rewrite one Starlight page to idiomatic Blume MDX, in place. */
35
- const transformPage = async (file: string): Promise<PageResult> => {
36
- const raw = await readFile(file, "utf-8");
37
- let text = stripStarlightImports(raw);
38
- text = rewriteStarlightAsides(text);
39
- text = rewriteStarlightComponents(text);
40
- const unsupported = unsupportedStarlightComponents(text);
41
- const aliased = hasAliasedAssets(text);
42
-
43
- const parsed = matter(text);
44
- const { data, removed } = normalizeStarlightPageMeta(parsed.data);
45
- const content =
46
- Object.keys(data).length > 0
47
- ? matter.stringify(parsed.content, data)
48
- : parsed.content;
49
- if (content !== raw) {
50
- await writeFile(file, content, "utf-8");
51
- }
52
- return { aliased, removed, unsupported };
53
- };
54
-
55
- /**
56
- * Migrate a Starlight project to Blume: translate the `starlight({...})` options
57
- * out of `astro.config.*` into `blume.config.ts`, then rewrite each page under
58
- * `src/content/docs` to idiomatic Blume MDX in place (asides → directives,
59
- * component renames, frontmatter mapping). Content stays put — the generated
60
- * config points `content.root` at `src/content/docs`.
61
- */
62
- export const migrateStarlightProject = async (
63
- root: string
64
- ): Promise<StarlightMigrationResult> => {
65
- const { options, warnings } = await loadStarlightConfig(root);
66
- const config = mapStarlightConfig(options, warnings);
67
-
68
- const i18n = starlightI18n(options);
69
- if (i18n) {
70
- config.i18n = i18n;
71
- warnings.push(
72
- `Mapped ${i18n.locales.length} locale(s) to i18n (default: ${i18n.defaultLocale}); review the locale labels.`
73
- );
74
- }
75
-
76
- const base = join(root, CONTENT_DIR);
77
- if (!existsSync(base)) {
78
- await writeBlumeConfig(root, config);
79
- return {
80
- moved: 0,
81
- warnings: [
82
- ...warnings,
83
- `Content directory ${CONTENT_DIR} not found; wrote blume.config.ts only.`,
84
- ],
85
- };
86
- }
87
-
88
- const files = await glob(["**/*.{md,mdx}"], { absolute: true, cwd: base });
89
- const results = await Promise.all(files.map(transformPage));
90
-
91
- await writeBlumeConfig(root, config);
92
-
93
- const removedKeys = new Set<string>();
94
- const unsupported = new Set<string>();
95
- let aliasedAssets = false;
96
- for (const result of results) {
97
- for (const key of result.removed) {
98
- removedKeys.add(key);
99
- }
100
- for (const name of result.unsupported) {
101
- unsupported.add(name);
102
- }
103
- aliasedAssets ||= result.aliased;
104
- }
105
-
106
- if (removedKeys.size > 0) {
107
- warnings.push(
108
- `Dropped unsupported page frontmatter keys: ${[...removedKeys].join(", ")}.`
109
- );
110
- if (removedKeys.has("hero") || removedKeys.has("template")) {
111
- warnings.push(
112
- "Pages using `template: splash` / `hero` have no automatic equivalent — rebuild them as custom pages under `pages/`."
113
- );
114
- }
115
- }
116
- if (unsupported.size > 0) {
117
- warnings.push(
118
- `Components without a drop-in Blume equivalent need manual review: ${[...unsupported].join(", ")}.`
119
- );
120
- }
121
- if (aliasedAssets) {
122
- warnings.push(
123
- "Some pages reference images via `~/`/`@/` aliases; rewrite them to relative or /public paths."
124
- );
125
- }
126
- warnings.push(
127
- "Content stays under src/content/docs; the now-unused astro.config.*, src/content.config.ts, and @astrojs/starlight dependency are safe to remove."
128
- );
129
-
130
- return { moved: results.length, warnings };
131
- };