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.
- package/CHANGELOG.md +94 -0
- package/dist/cli/index.js +13784 -10579
- package/dist/cli/index.js.map +93 -61
- package/dist/types/core/config-input.d.ts +87 -8
- package/dist/types/core/data.d.ts +21 -0
- package/dist/types/core/deployment-env.d.ts +6 -0
- package/dist/types/core/diagnostics.d.ts +23 -0
- package/dist/types/core/i18n-ui.d.ts +140 -140
- package/dist/types/core/schema.d.ts +549 -370
- package/dist/types/core/sources/types.d.ts +3 -1
- package/dist/types/core/standard-schema.d.ts +41 -0
- package/dist/types/core/types.d.ts +23 -0
- package/dist/types/og/card.d.ts +63 -0
- package/dist/types/og/dimensions.d.ts +12 -0
- package/dist/types/openapi/references.d.ts +12 -7
- package/docs/01-quickstart.mdx +1 -1
- package/docs/02-deployment.mdx +9 -1
- package/docs/advanced/api-reference.mdx +22 -3
- package/docs/advanced/changelog.mdx +1 -1
- package/docs/advanced/skills.mdx +1 -1
- package/docs/configuration/ai.mdx +1 -1
- package/docs/configuration/customization.mdx +1 -1
- package/docs/configuration/export.mdx +1 -1
- package/docs/configuration/index.mdx +21 -1
- package/docs/configuration/search.mdx +28 -1
- package/docs/configuration/seo.mdx +40 -2
- package/docs/configuration/theming.mdx +1 -1
- package/docs/content/components.mdx +15 -2
- package/docs/content/index.mdx +1 -1
- package/docs/content/meta.mdx +1 -1
- package/docs/content/navigation.mdx +11 -1
- package/docs/content/sources.mdx +1 -1
- package/docs/content/syntax.mdx +116 -4
- package/docs/reference/cli.mdx +79 -1
- package/docs/reference/frontmatter.mdx +29 -1
- package/package.json +3 -3
- package/skills/blume-migrate/SKILL.md +170 -0
- package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +20 -0
- package/skills/blume-migrate/references/docusaurus.md +95 -0
- package/skills/blume-migrate/references/fumadocs.md +95 -0
- package/skills/blume-migrate/references/mintlify.md +156 -0
- package/skills/blume-migrate/references/monorepo.md +224 -0
- package/skills/blume-migrate/references/nextra.md +76 -0
- package/skills/blume-migrate/references/starlight.md +116 -0
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +478 -0
- package/src/ai/llms.ts +15 -0
- package/src/astro/adapter-root.ts +70 -0
- package/src/astro/component-slots.ts +3 -2
- package/src/astro/generate.ts +132 -42
- package/src/astro/index.ts +1 -0
- package/src/astro/pages.ts +18 -3
- package/src/astro/templates.ts +158 -56
- package/src/audit/agent.ts +114 -0
- package/src/audit/catalog.ts +826 -0
- package/src/audit/checks/assets.ts +177 -0
- package/src/audit/checks/content.ts +231 -0
- package/src/audit/checks/duplicates.ts +131 -0
- package/src/audit/checks/i18n.ts +246 -0
- package/src/audit/checks/indexability.ts +213 -0
- package/src/audit/checks/links.ts +223 -0
- package/src/audit/checks/llms.ts +135 -0
- package/src/audit/checks/network.ts +272 -0
- package/src/audit/checks/og-image.ts +113 -0
- package/src/audit/checks/redirects.ts +87 -0
- package/src/audit/checks/robots.ts +114 -0
- package/src/audit/checks/sitemap.ts +229 -0
- package/src/audit/checks/social.ts +238 -0
- package/src/audit/crawl.ts +259 -0
- package/src/audit/graph.ts +74 -0
- package/src/audit/html.ts +54 -0
- package/src/audit/image-size.ts +63 -0
- package/src/audit/locate.ts +33 -0
- package/src/audit/redirects.ts +74 -0
- package/src/audit/report.ts +278 -0
- package/src/audit/run.ts +198 -0
- package/src/audit/snapshot.ts +189 -0
- package/src/audit/types.ts +214 -0
- package/src/audit/url.ts +103 -0
- package/src/cli/commands/audit.ts +205 -0
- package/src/cli/commands/build.ts +51 -12
- package/src/cli/index.ts +2 -0
- package/src/components/content/Callout.astro +8 -2
- package/src/components/content/Prompt.astro +25 -13
- package/src/components/content/Tabs.astro +98 -15
- package/src/components/layout/Breadcrumbs.astro +1 -1
- package/src/components/layout/Header.astro +5 -8
- package/src/components/layout/Logo.astro +13 -1
- package/src/components/layout/PageFeedback.astro +2 -2
- package/src/components/layout/PageLayout.astro +9 -9
- package/src/components/layout/Pagination.astro +7 -7
- package/src/components/layout/RootLayout.astro +9 -11
- package/src/components/layout/Search.astro +36 -7
- package/src/components/layout/TableOfContents.astro +1 -1
- package/src/components/layout/nav-utils.ts +9 -7
- package/src/components/openapi/Authorization.astro +80 -0
- package/src/components/openapi/Operation.astro +19 -1
- package/src/components/openapi/ParametersTable.astro +1 -1
- package/src/components/openapi/security.ts +201 -0
- package/src/components/openapi/snippets.ts +42 -13
- package/src/core/config-input.ts +94 -8
- package/src/core/data.ts +18 -2
- package/src/core/deployment-env.ts +9 -0
- package/src/core/diagnostics.ts +59 -12
- package/src/core/links.ts +2 -91
- package/src/core/nav-diagnostics.ts +48 -4
- package/src/core/navigation.ts +55 -13
- package/src/core/probe.ts +136 -0
- package/src/core/project-graph.ts +8 -0
- package/src/core/schema.ts +100 -1
- package/src/core/sources/normalize.ts +198 -25
- package/src/core/sources/types.ts +3 -1
- package/src/core/sources/watch.ts +5 -0
- package/src/core/standard-schema.ts +54 -0
- package/src/core/types.ts +23 -0
- package/src/deploy/adapter-output.ts +27 -15
- package/src/deploy/headers.ts +66 -0
- package/src/deploy/redirects.ts +49 -9
- package/src/markdown/index.ts +2 -0
- package/src/markdown/language-icon.ts +2 -1
- package/src/markdown/table-wrap.ts +43 -0
- package/src/og/card.ts +128 -36
- package/src/og/index.ts +1 -1
- package/src/og/logo.ts +21 -0
- package/src/openapi/references.ts +19 -16
- package/src/search/popular.ts +33 -0
- package/src/theme/entry.ts +56 -6
package/src/theme/entry.ts
CHANGED
|
@@ -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-
|
|
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
|
-
|
|
390
|
-
|
|
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
|
-
|
|
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}
|