blume 1.0.3 → 1.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.
Files changed (126) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/dist/cli/index.js +13784 -10579
  3. package/dist/cli/index.js.map +93 -61
  4. package/dist/types/core/config-input.d.ts +87 -8
  5. package/dist/types/core/data.d.ts +21 -0
  6. package/dist/types/core/deployment-env.d.ts +6 -0
  7. package/dist/types/core/diagnostics.d.ts +23 -0
  8. package/dist/types/core/i18n-ui.d.ts +140 -140
  9. package/dist/types/core/schema.d.ts +549 -370
  10. package/dist/types/core/sources/types.d.ts +3 -1
  11. package/dist/types/core/standard-schema.d.ts +41 -0
  12. package/dist/types/core/types.d.ts +23 -0
  13. package/dist/types/og/card.d.ts +63 -0
  14. package/dist/types/og/dimensions.d.ts +12 -0
  15. package/dist/types/openapi/references.d.ts +12 -7
  16. package/docs/01-quickstart.mdx +1 -1
  17. package/docs/02-deployment.mdx +9 -1
  18. package/docs/advanced/api-reference.mdx +22 -3
  19. package/docs/advanced/changelog.mdx +1 -1
  20. package/docs/advanced/skills.mdx +1 -1
  21. package/docs/configuration/ai.mdx +1 -1
  22. package/docs/configuration/customization.mdx +1 -1
  23. package/docs/configuration/export.mdx +1 -1
  24. package/docs/configuration/index.mdx +21 -1
  25. package/docs/configuration/search.mdx +28 -1
  26. package/docs/configuration/seo.mdx +40 -2
  27. package/docs/configuration/theming.mdx +1 -1
  28. package/docs/content/components.mdx +15 -2
  29. package/docs/content/index.mdx +1 -1
  30. package/docs/content/meta.mdx +1 -1
  31. package/docs/content/navigation.mdx +11 -1
  32. package/docs/content/sources.mdx +1 -1
  33. package/docs/content/syntax.mdx +116 -4
  34. package/docs/reference/cli.mdx +79 -1
  35. package/docs/reference/frontmatter.mdx +29 -1
  36. package/package.json +3 -3
  37. package/skills/blume-migrate/SKILL.md +170 -0
  38. package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +20 -0
  39. package/skills/blume-migrate/references/docusaurus.md +95 -0
  40. package/skills/blume-migrate/references/fumadocs.md +95 -0
  41. package/skills/blume-migrate/references/mintlify.md +156 -0
  42. package/skills/blume-migrate/references/monorepo.md +224 -0
  43. package/skills/blume-migrate/references/nextra.md +76 -0
  44. package/skills/blume-migrate/references/starlight.md +116 -0
  45. package/skills/blume-migrate/scripts/mintlify-codemod.mjs +478 -0
  46. package/src/ai/llms.ts +15 -0
  47. package/src/astro/adapter-root.ts +70 -0
  48. package/src/astro/component-slots.ts +3 -2
  49. package/src/astro/generate.ts +132 -42
  50. package/src/astro/index.ts +1 -0
  51. package/src/astro/pages.ts +18 -3
  52. package/src/astro/templates.ts +158 -56
  53. package/src/audit/agent.ts +114 -0
  54. package/src/audit/catalog.ts +826 -0
  55. package/src/audit/checks/assets.ts +177 -0
  56. package/src/audit/checks/content.ts +231 -0
  57. package/src/audit/checks/duplicates.ts +131 -0
  58. package/src/audit/checks/i18n.ts +246 -0
  59. package/src/audit/checks/indexability.ts +213 -0
  60. package/src/audit/checks/links.ts +223 -0
  61. package/src/audit/checks/llms.ts +135 -0
  62. package/src/audit/checks/network.ts +272 -0
  63. package/src/audit/checks/og-image.ts +113 -0
  64. package/src/audit/checks/redirects.ts +87 -0
  65. package/src/audit/checks/robots.ts +114 -0
  66. package/src/audit/checks/sitemap.ts +229 -0
  67. package/src/audit/checks/social.ts +238 -0
  68. package/src/audit/crawl.ts +259 -0
  69. package/src/audit/graph.ts +74 -0
  70. package/src/audit/html.ts +54 -0
  71. package/src/audit/image-size.ts +63 -0
  72. package/src/audit/locate.ts +33 -0
  73. package/src/audit/redirects.ts +74 -0
  74. package/src/audit/report.ts +278 -0
  75. package/src/audit/run.ts +198 -0
  76. package/src/audit/snapshot.ts +189 -0
  77. package/src/audit/types.ts +214 -0
  78. package/src/audit/url.ts +103 -0
  79. package/src/cli/commands/audit.ts +205 -0
  80. package/src/cli/commands/build.ts +51 -12
  81. package/src/cli/index.ts +2 -0
  82. package/src/components/content/Callout.astro +8 -2
  83. package/src/components/content/Prompt.astro +25 -13
  84. package/src/components/content/Tabs.astro +98 -15
  85. package/src/components/layout/Breadcrumbs.astro +1 -1
  86. package/src/components/layout/Header.astro +5 -8
  87. package/src/components/layout/Logo.astro +13 -1
  88. package/src/components/layout/PageFeedback.astro +2 -2
  89. package/src/components/layout/PageLayout.astro +9 -9
  90. package/src/components/layout/Pagination.astro +7 -7
  91. package/src/components/layout/RootLayout.astro +9 -11
  92. package/src/components/layout/Search.astro +36 -7
  93. package/src/components/layout/TableOfContents.astro +1 -1
  94. package/src/components/layout/nav-utils.ts +9 -7
  95. package/src/components/openapi/Authorization.astro +80 -0
  96. package/src/components/openapi/Operation.astro +19 -1
  97. package/src/components/openapi/ParametersTable.astro +1 -1
  98. package/src/components/openapi/security.ts +201 -0
  99. package/src/components/openapi/snippets.ts +42 -13
  100. package/src/core/config-input.ts +94 -8
  101. package/src/core/data.ts +18 -2
  102. package/src/core/deployment-env.ts +9 -0
  103. package/src/core/diagnostics.ts +59 -12
  104. package/src/core/links.ts +2 -91
  105. package/src/core/nav-diagnostics.ts +48 -4
  106. package/src/core/navigation.ts +55 -13
  107. package/src/core/probe.ts +136 -0
  108. package/src/core/project-graph.ts +8 -0
  109. package/src/core/schema.ts +100 -1
  110. package/src/core/sources/normalize.ts +198 -25
  111. package/src/core/sources/types.ts +3 -1
  112. package/src/core/sources/watch.ts +5 -0
  113. package/src/core/standard-schema.ts +54 -0
  114. package/src/core/types.ts +23 -0
  115. package/src/deploy/adapter-output.ts +27 -15
  116. package/src/deploy/headers.ts +66 -0
  117. package/src/deploy/redirects.ts +49 -9
  118. package/src/markdown/index.ts +2 -0
  119. package/src/markdown/language-icon.ts +2 -1
  120. package/src/markdown/table-wrap.ts +43 -0
  121. package/src/og/card.ts +128 -36
  122. package/src/og/index.ts +1 -1
  123. package/src/og/logo.ts +21 -0
  124. package/src/openapi/references.ts +19 -16
  125. package/src/search/popular.ts +33 -0
  126. package/src/theme/entry.ts +56 -6
@@ -16,6 +16,15 @@ interface TailwindEntryOptions {
16
16
  const DARK_VARIANT = `/* Dark mode is driven by data-theme on the <html> element. */
17
17
  @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));`;
18
18
 
19
+ /** Keep browser-provided UI in sync with the active theme in both sheets. */
20
+ const COLOR_SCHEME_DEFAULTS = `:root {
21
+ color-scheme: light;
22
+ }
23
+
24
+ :root[data-theme="dark"] {
25
+ color-scheme: dark;
26
+ }`;
27
+
19
28
  /**
20
29
  * The default `--blume-*` design tokens (light + dark), shared by the app
21
30
  * sheet and the isolated example-preview sheet so previews inherit the site's
@@ -46,6 +55,10 @@ const TOKEN_DEFAULTS = `:root {
46
55
  --blume-code-word-border: oklch(0.55 0.16 255 / 0.5);
47
56
  --blume-radius: 0.75rem;
48
57
 
58
+ /* Max width of the prose content column (article, breadcrumb, TOC, feedback,
59
+ pagination, last-updated). Override to re-measure the whole column at once. */
60
+ --blume-content-width: 42rem;
61
+
49
62
  /*
50
63
  * Font tokens resolve through optional src variables that Astro's Fonts API
51
64
  * populates (via theme.fonts). When unset they fall back to the system
@@ -119,6 +132,7 @@ const THEME_MAPPING = `@theme inline {
119
132
  --color-action-foreground: var(--blume-action-foreground);
120
133
  --color-code: var(--blume-code-background);
121
134
  --radius-blume: var(--blume-radius);
135
+ --container-content: var(--blume-content-width);
122
136
  --font-sans: var(--blume-font-body);
123
137
  --font-mono: var(--blume-font-mono);
124
138
  --font-display: var(--blume-font-display);
@@ -141,6 +155,8 @@ ${options.sources.map((source) => `@source "${source}";`).join("\n")}
141
155
 
142
156
  ${DARK_VARIANT}
143
157
 
158
+ ${COLOR_SCHEME_DEFAULTS}
159
+
144
160
  ${TOKEN_DEFAULTS}
145
161
 
146
162
  ${THEME_MAPPING}
@@ -211,7 +227,7 @@ ${THEME_MAPPING}
211
227
  --tw-prose-links: var(--blume-foreground);
212
228
  --tw-prose-bold: var(--blume-foreground);
213
229
  --tw-prose-counters: var(--blume-muted-foreground);
214
- --tw-prose-bullets: var(--blume-border);
230
+ --tw-prose-bullets: var(--blume-muted-foreground);
215
231
  --tw-prose-hr: var(--blume-border);
216
232
  --tw-prose-quotes: var(--blume-muted-foreground);
217
233
  --tw-prose-quote-borders: var(--blume-border);
@@ -386,13 +402,16 @@ blume-diff {
386
402
 
387
403
  /* Language icon (simple-icons) sits at the header's left edge; the label shifts
388
404
  right to make room. Injected at build time by the language-icon transformer.
389
- Shown only for top-level prose blocks, which have a header — flush code in
390
- tabs and API panels is nested deeper, so the child combinator skips it. */
405
+ The icon is gated on data-language (the header bar), not just data-icon: the
406
+ transformer runs whenever icons are on, but a header-less standalone
407
+ CodeBlock (no title) never gets data-language, so without this gate the
408
+ absolutely-positioned icon would overlap the first code line. Fenced code
409
+ and titled blocks always have a header, so the icon shows there. */
391
410
  .blume-lang-icon {
392
411
  display: none;
393
412
  }
394
413
 
395
- .prose > :where(pre[data-icon]) > .blume-lang-icon {
414
+ .prose > :where(pre[data-language][data-icon]) > .blume-lang-icon {
396
415
  color: var(--blume-muted-foreground);
397
416
  display: block;
398
417
  height: 0.875rem;
@@ -402,7 +421,7 @@ blume-diff {
402
421
  width: 0.875rem;
403
422
  }
404
423
 
405
- .prose > :where(pre[data-icon])::before {
424
+ .prose > :where(pre[data-language][data-icon])::before {
406
425
  padding-left: 2.5rem;
407
426
  }
408
427
 
@@ -453,11 +472,40 @@ blume-diff {
453
472
  font-size: 0.8125rem;
454
473
  }
455
474
 
475
+ /* Scroll wide tables in place; the wrapper is added by the blume:table-wrap hast
476
+ plugin. The border+radius frames the scroll viewport so a clipped wide table
477
+ reads as scrollable rather than cut off, and carries the table's vertical
478
+ rhythm (the inner table's own margin is zeroed so it fills the frame). */
479
+ .blume-table-scroll {
480
+ overflow-x: auto;
481
+ -webkit-overflow-scrolling: touch;
482
+ margin: 1.5rem 0;
483
+ border: 1px solid var(--blume-border);
484
+ border-radius: var(--blume-radius);
485
+ }
486
+ .blume-table-scroll > table {
487
+ margin: 0;
488
+ }
489
+ /* Restore inner padding on every cell. Typography zeroes the first/last cell's
490
+ inline padding so a borderless table aligns to the prose margin; inside the
491
+ framed wrapper that leaves edge text touching the border. The :is() selector
492
+ outweighs Typography's :where()-scoped rules so the outer columns get it too. */
493
+ .blume-table-scroll :is(th, td) {
494
+ padding: 0.5rem 0.75rem;
495
+ }
496
+ /* Keep column labels on one line so a two-word header does not wrap into a
497
+ ragged stack; the table just scrolls a little wider instead. Body cells keep
498
+ wrapping so a wide table stays a scroll away, not an endless horizontal run. */
499
+ .blume-table-scroll th {
500
+ white-space: nowrap;
501
+ }
502
+
456
503
  /* GFM renders cells as <td><code> directly, which the descendant form alone
457
504
  never matches (a cell is not its own descendant). */
458
505
  .prose :where(td, th) > code,
459
506
  .prose :where(td, th) :not(pre) > code {
460
- white-space: nowrap;
507
+ overflow-wrap: break-word;
508
+ white-space: normal;
461
509
  }
462
510
 
463
511
  blume-tabs pre,
@@ -717,6 +765,8 @@ ${options.sources.map((source) => `@source "${source}";`).join("\n")}
717
765
 
718
766
  ${DARK_VARIANT}
719
767
 
768
+ ${COLOR_SCHEME_DEFAULTS}
769
+
720
770
  ${TOKEN_DEFAULTS}
721
771
 
722
772
  ${THEME_MAPPING}