@vmz/vmz 0.3.12 → 0.3.14

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 (57) hide show
  1. package/bin/vmz.js +4 -0
  2. package/delivery-runtime-files.json +2 -0
  3. package/dist/cli/cli.js +46 -23
  4. package/dist/cli/format-cmd.d.ts +9 -17
  5. package/dist/cli/format-cmd.js +37 -49
  6. package/dist/cli/format-config.d.ts +6 -9
  7. package/dist/cli/format-config.js +5 -29
  8. package/dist/delivery/delivery-profile.js +1 -1
  9. package/dist/dev/dev-incremental.d.ts +0 -2
  10. package/dist/dev/dev-incremental.js +0 -1
  11. package/dist/dev/dev-session.d.ts +53 -1
  12. package/dist/dev/dev-session.js +368 -65
  13. package/dist/document/document-base-css.d.ts +15 -0
  14. package/dist/document/document-base-css.js +578 -0
  15. package/dist/document/document-build.d.ts +1 -0
  16. package/dist/document/document-build.js +94 -78
  17. package/dist/document/document-client.d.ts +13 -0
  18. package/dist/document/document-client.js +217 -0
  19. package/dist/document/document-cmd.js +3 -1
  20. package/dist/document/document-designs.d.ts +9 -3
  21. package/dist/document/document-designs.js +20 -34
  22. package/dist/document/document-enrich.d.ts +9 -0
  23. package/dist/document/document-enrich.js +55 -0
  24. package/dist/document/document-highlight.d.ts +26 -0
  25. package/dist/document/document-highlight.js +54 -0
  26. package/dist/document/document-integrate.d.ts +5 -0
  27. package/dist/document/document-integrate.js +1 -0
  28. package/dist/document/document-interactive.js +10 -2
  29. package/dist/document/document-layout-render.js +6 -2
  30. package/dist/document/document-schema.d.ts +5 -0
  31. package/dist/workspace/build-assemble.js +18 -6
  32. package/dist/workspace/content-addressed-assets.d.ts +6 -17
  33. package/dist/workspace/content-addressed-assets.js +10 -95
  34. package/dist/workspace/delivery-runtime-imports.js +9 -0
  35. package/dist/workspace/native-addon.d.ts +4 -0
  36. package/dist/workspace/pack-native.d.ts +151 -0
  37. package/dist/workspace/pack-native.js +280 -0
  38. package/dist/workspace/pack.d.ts +131 -32
  39. package/dist/workspace/pack.js +381 -65
  40. package/dist/workspace/plugin-host.d.ts +4 -4
  41. package/dist/workspace/plugin-host.js +6 -6
  42. package/dist/workspace/production-observability.d.ts +2 -0
  43. package/dist/workspace/production-observability.js +6 -2
  44. package/dist/workspace/project-build.js +26 -4
  45. package/dist/workspace/public-api.d.ts +7 -3
  46. package/dist/workspace/public-api.js +5 -3
  47. package/dist/workspace/static-emit.d.ts +30 -0
  48. package/dist/workspace/static-emit.js +211 -18
  49. package/dist/workspace/user-config.d.ts +112 -0
  50. package/dist/workspace/user-config.js +12 -0
  51. package/host-runtime-files.json +1 -0
  52. package/locales/en-US/cli.json +5 -4
  53. package/locales/en-US/diag.json +2 -0
  54. package/locales/zh-CN/diag.json +2 -0
  55. package/package.json +20 -20
  56. package/dist/workspace/pack-client-packages.d.ts +0 -34
  57. package/dist/workspace/pack-client-packages.js +0 -550
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Framework-owned document base stylesheet (`assets/vmz-document.css`).
3
+ *
4
+ * The single canonical document surface for every site: sidebar + article +
5
+ * toc grid, article type scale, code/table/quote blocks, island shells and the
6
+ * responsive breakpoints. Structural colors come from `--vmz-*` semantic tokens
7
+ * only (site brand flows in through the compiled `vmz-designs.css`); syntax
8
+ * colors inside code blocks come from the Shiki theme and stay identical on
9
+ * every site. Sites do not ship document stylesheets.
10
+ *
11
+ * House rules: pure-white base with near-black blocks for
12
+ * rhythm, body text ≥ 16px, small text ≥ 12px at weight ≥ 400, no uppercase
13
+ * letter-spaced micro labels, no 3D / volumetric surfaces.
14
+ */
15
+ export declare const DOCUMENT_BASE_CSS = "/* vmz document layer \u2014 canonical document surface (token-driven). */\n\n.site--docs {\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n background: var(--vmz-surface-paper, #ffffff);\n}\n\n.site--docs > .doc-body {\n flex: 1 0 auto;\n display: grid;\n grid-template-columns: 17rem minmax(0, 1fr);\n align-items: start;\n width: 100%;\n max-width: 94rem;\n margin: 0 auto;\n}\n\n/* Sidebar -------------------------------------------------------------- */\n\n.doc-sidebar {\n position: sticky;\n top: var(--vmz-layout-header-height-compact, 3.5rem);\n align-self: start;\n max-height: calc(100vh - var(--vmz-layout-header-height-compact, 3.5rem));\n overflow-y: auto;\n padding: 2rem 1.25rem 3rem 1.5rem;\n border-right: 1px solid var(--vmz-line-default, #e5e6eb);\n}\n\n/* Density activation lives in this framework layer: sites only ship tokens. */\n\n:where([data-density=\"compact\"]) .doc-sidebar {\n padding-top: var(--vmz-density-compact-padding-y, 1.5rem);\n padding-bottom: 2rem;\n}\n\n:where([data-density=\"dense\"]) .doc-sidebar {\n padding-top: var(--vmz-density-dense-padding-y, 1rem);\n padding-bottom: 1.5rem;\n}\n\n.doc-sidebar__label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--vmz-text-muted, #6b7178);\n margin: 0 0 var(--vmz-density-control-padding-y, 0.75rem);\n}\n\n.doc-subnav ul {\n list-style: none;\n margin: 0;\n padding: 0;\n display: grid;\n gap: 2px;\n}\n\n.doc-subnav a {\n display: block;\n padding: 0.4375rem 0.625rem;\n font-size: 0.875rem;\n line-height: 1.45;\n color: var(--vmz-text-steel, #51565d);\n text-decoration: none;\n border-left: 2px solid transparent;\n border-radius: 0 4px 4px 0;\n transition: color 120ms ease, background 120ms ease, border-color 120ms ease;\n}\n\n.doc-subnav a:hover {\n color: var(--vmz-text-ink, #1f2329);\n background: var(--vmz-surface-mist, #f7f8fa);\n text-decoration: none;\n}\n\n.doc-subnav a[aria-current=\"page\"] {\n color: var(--vmz-brand-primary, #1677ff);\n border-left-color: var(--vmz-brand-primary, #1677ff);\n background: var(--vmz-surface-paper, #ffffff);\n font-weight: 500;\n}\n\n.doc-search {\n margin-top: 1rem;\n padding-top: 0.75rem;\n border-top: 1px solid var(--vmz-line-default, #e5e6eb);\n position: relative;\n}\n\n.doc-search__input {\n width: 100%;\n box-sizing: border-box;\n padding: 0.4375rem 0.625rem;\n font-size: 0.875rem;\n line-height: 1.4;\n color: var(--vmz-text-ink, #1f2329);\n background: var(--vmz-surface-paper, #ffffff);\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-radius: 6px;\n}\n\n.doc-search__input:focus-visible {\n outline: 2px solid var(--vmz-brand-primary, #1677ff);\n outline-offset: 1px;\n}\n\n.doc-search__results {\n list-style: none;\n margin: 0.375rem 0 0;\n padding: 0.25rem;\n display: grid;\n gap: 1px;\n background: var(--vmz-surface-paper, #ffffff);\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-radius: 6px;\n max-height: 16rem;\n overflow-y: auto;\n}\n\n.doc-search__results[hidden] {\n display: none;\n}\n\n.doc-search__results a {\n display: block;\n padding: 0.375rem 0.5rem;\n font-size: 0.8125rem;\n line-height: 1.4;\n color: var(--vmz-text-steel, #51565d);\n text-decoration: none;\n border-radius: 4px;\n overflow-wrap: break-word;\n}\n\n.doc-search__ctx {\n color: var(--vmz-text-muted, #6b7178);\n}\n\n.doc-search__results li[aria-selected=\"true\"] a,\n.doc-search__results a:hover {\n background: var(--vmz-surface-mist, #f7f8fa);\n color: var(--vmz-text-ink, #1f2329);\n}\n\n.doc-search__empty {\n padding: 0.375rem 0.5rem;\n font-size: 0.8125rem;\n color: var(--vmz-text-muted, #6b7178);\n}\n\n.doc-search__hint {\n margin: 0.375rem 0 0;\n font-size: 0.75rem;\n line-height: 1.5;\n color: var(--vmz-text-muted, #6b7178);\n}\n\n/* Content grid --------------------------------------------------------- */\n\n.doc-content {\n display: grid;\n grid-template-columns: minmax(0, 1fr) 13rem;\n gap: 3rem;\n padding: 3rem 3rem 4rem;\n min-width: 0;\n}\n\n.doc-content > main {\n min-width: 0;\n max-width: 46rem;\n}\n\n/* Breadcrumb ----------------------------------------------------------- */\n\n.doc-breadcrumb {\n font-size: 0.875rem;\n line-height: 1.5;\n color: var(--vmz-text-muted, #6b7178);\n margin: 0 0 2rem;\n display: flex;\n gap: 0.375rem;\n align-items: baseline;\n}\n\n.doc-breadcrumb a {\n color: var(--vmz-text-steel, #51565d);\n text-decoration: none;\n}\n\n.doc-breadcrumb a:hover {\n color: var(--vmz-brand-primary, #1677ff);\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n\n.doc-breadcrumb [aria-current] {\n color: var(--vmz-text-ink, #1f2329);\n font-weight: 500;\n}\n\n/* On this page --------------------------------------------------------- */\n\n.toc {\n position: sticky;\n top: calc(var(--vmz-layout-header-height-compact, 3.5rem) + 1.25rem);\n align-self: start;\n order: 2;\n border-left: 1px solid var(--vmz-line-subtle, #f0f1f3);\n padding-left: 1rem;\n}\n\n.toc__label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--vmz-text-muted, #6b7178);\n margin: 0 0 0.5rem;\n}\n\n.toc ol {\n list-style: none;\n margin: 0;\n padding: 0;\n display: grid;\n gap: 0.25rem;\n}\n\n.toc a {\n color: var(--vmz-text-steel, #51565d);\n text-decoration: none;\n display: block;\n line-height: 1.4;\n font-size: 0.75rem;\n}\n\n.toc a:hover {\n color: var(--vmz-brand-primary, #1677ff);\n}\n\n.toc .h3 {\n padding-left: 0.75rem;\n color: var(--vmz-text-muted, #6b7178);\n}\n\n/* Article typography --------------------------------------------------- */\n\n.doc-content main h1 {\n font-family: var(--vmz-font-display, var(--vmz-font-sans, sans-serif));\n font-size: clamp(2rem, 2.8vw, 2.5rem);\n font-weight: 650;\n letter-spacing: -0.03em;\n line-height: 1.12;\n margin: 0 0 1.25rem;\n color: var(--vmz-text-ink, #1f2329);\n}\n\n.doc-content main h2 {\n font-size: 1.4375rem;\n letter-spacing: -0.02em;\n margin: 3rem 0 0.875rem;\n color: var(--vmz-text-ink, #1f2329);\n}\n\n.doc-content main h3 {\n font-size: 1.125rem;\n margin: 2rem 0 0.5rem;\n color: var(--vmz-text-ink, #1f2329);\n}\n\n.doc-content main h4 {\n font-size: 1rem;\n margin: 1.75rem 0 0.375rem;\n color: var(--vmz-text-ink, #1f2329);\n}\n\n.doc-content main p,\n.doc-content main li {\n font-size: 1rem;\n line-height: 1.75;\n color: var(--vmz-text-steel, #51565d);\n}\n\n.doc-content main p {\n margin: 0 0 1.125rem;\n}\n\n.doc-content main ul,\n.doc-content main ol {\n margin: 0 0 1.25rem;\n padding-left: 1.375rem;\n}\n\n.doc-content main li + li {\n margin-top: 0.375rem;\n}\n\n.doc-content main li::marker {\n color: var(--vmz-line-strong, #c9cdd4);\n}\n\n.doc-content main a {\n color: var(--vmz-brand-primary, #1677ff);\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-color: var(--vmz-line-strong, #c9cdd4);\n overflow-wrap: break-word;\n}\n\n.doc-content main a:hover {\n text-decoration-color: var(--vmz-brand-primary, #1677ff);\n}\n\n.doc-content main strong {\n color: var(--vmz-text-ink, #1f2329);\n font-weight: 600;\n}\n\n.doc-content main hr {\n border: 0;\n border-top: 1px solid var(--vmz-line-default, #e5e6eb);\n margin: 1.75rem 0;\n}\n\n/* Inline code */\n.doc-content main :not(pre) > code {\n font-family: var(--vmz-font-mono, ui-monospace, monospace);\n font-size: 0.875rem;\n color: var(--vmz-text-ink, #1f2329);\n background: var(--vmz-surface-mist, #f7f8fa);\n border: 1px solid var(--vmz-line-subtle, #f0f1f3);\n border-radius: 4px;\n padding: 0.0625rem 0.3125rem;\n word-break: break-word;\n}\n\n/* Code blocks: near-black surface, token chrome, theme-owned syntax colors */\n.doc-content main pre {\n position: relative;\n margin: 0 0 1.375rem;\n padding: 1.125rem 1.25rem;\n overflow-x: auto;\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-radius: 8px;\n background: var(--vmz-surface-code, #0f1115);\n color: var(--vmz-text-on-ink, #f7f8fa);\n font-size: 0.84375rem;\n line-height: 1.7;\n tab-size: 4;\n}\n\n/* Copy button (injected by assets/vmz-document.js; hidden without JS) */\n.doc-copy {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n padding: 0.1875rem 0.5rem;\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.4;\n color: var(--vmz-text-muted, #6b7178);\n background: var(--vmz-surface-mist, #f7f8fa);\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-radius: 4px;\n cursor: pointer;\n opacity: 0;\n transition: opacity 120ms ease;\n}\n\npre:hover .doc-copy,\npre:focus-within .doc-copy,\n.doc-copy:focus-visible {\n opacity: 1;\n}\n\n.doc-copy--done {\n color: var(--vmz-status-success-accent, #237804);\n}\n\n/* Heading self anchors (build-time, no-JS usable) */\n.h-anchor {\n margin-left: 0.4em;\n font-size: 0.8em;\n font-weight: 400;\n text-decoration: none;\n color: var(--vmz-text-muted, #6b7178);\n opacity: 0;\n transition: opacity 120ms ease;\n}\n\n.doc-content main h2:hover .h-anchor,\n.doc-content main h3:hover .h-anchor,\n.doc-content main h4:hover .h-anchor,\n.h-anchor:focus-visible {\n opacity: 1;\n}\n\n.doc-content main pre code {\n font-family: var(--vmz-font-mono, ui-monospace, monospace);\n font-size: inherit;\n background: transparent;\n border: 0;\n padding: 0;\n color: inherit;\n}\n\n/* Tables */\n.doc-content main table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n margin: 0.75rem 0 1.5rem;\n font-size: 0.9375rem;\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-radius: 10px;\n display: block;\n overflow-x: auto;\n}\n\n.doc-content main thead th {\n background: var(--vmz-surface-mist, #f7f8fa);\n border-bottom: 1px solid var(--vmz-line-default, #e5e6eb);\n font-size: 0.8125rem;\n font-weight: 600;\n color: var(--vmz-text-muted, #6b7178);\n text-align: left;\n padding: 0.6875rem 1rem;\n white-space: nowrap;\n}\n\n.doc-content main td,\n.doc-content main tbody th {\n border-bottom: 1px solid var(--vmz-line-subtle, #f0f1f3);\n padding: 0.6875rem 1rem;\n vertical-align: top;\n line-height: 1.6;\n color: var(--vmz-text-steel, #51565d);\n}\n\n.doc-content main tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.doc-content main tbody tr:hover td {\n background: var(--vmz-surface-fill, #fafbfc);\n}\n\n.doc-content main td code {\n font-size: 0.8125rem;\n}\n\n/* Blockquote / callouts */\n.doc-content main blockquote {\n margin: 0 0 1.25rem;\n padding: 0.875rem 1.125rem;\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-left: 3px solid var(--vmz-brand-primary, #1677ff);\n border-radius: 0 8px 8px 0;\n background: var(--vmz-surface-mist, #f7f8fa);\n font-size: 1rem;\n color: var(--vmz-text-steel, #51565d);\n}\n\n.doc-content main blockquote p {\n margin: 0;\n font-size: 1rem;\n}\n\n.doc-content main .warn {\n background: var(--vmz-status-warning-background, #fff7e6);\n border: 1px solid var(--vmz-status-warning-border, #ffe7ba);\n border-left: 3px solid var(--vmz-status-warning-accent, #d48806);\n color: var(--vmz-status-warning-foreground, #ad6800);\n padding: 0.875rem 1.125rem;\n border-radius: 0 8px 8px 0;\n margin: 0 0 1.25rem;\n font-size: 0.9375rem;\n line-height: 1.65;\n}\n\n.doc-content main .warn p {\n color: inherit;\n font-size: inherit;\n margin: 0;\n}\n\n/* Playground / island shells */\n.doc-content main [data-vmz-island],\n.doc-content main .doc-playground {\n border: 1px solid var(--vmz-line-default, #e5e6eb);\n border-radius: var(--vmz-radius-xs, 4px);\n background: var(--vmz-surface-fill, #fafbfc);\n padding: 0.75rem;\n margin: 0 0 1rem;\n}\n\n.doc-content main .doc-playground-source,\n.doc-content main .doc-playground-fallback {\n font-size: 0.8125rem;\n color: var(--vmz-text-muted, #6b7178);\n}\n\n/* Standalone mount emits the same .site.site--docs > .doc-body skeleton as\n the integrated shell \u2014 no second DOM shape. */\n\n.skip-link {\n position: absolute;\n left: -999px;\n top: 0.75rem;\n z-index: 50;\n padding: 0.45rem 0.75rem;\n background: var(--vmz-brand-primary, #1677ff);\n color: var(--vmz-text-on-brand, #ffffff);\n text-decoration: none;\n}\n\n.skip-link:focus {\n left: 0.75rem;\n}\n\n/* Responsive ------------------------------------------------------------ */\n\n@media (max-width: 1100px) {\n .doc-content {\n grid-template-columns: minmax(0, 1fr);\n padding: 1.75rem 1.5rem 2.5rem;\n }\n\n .toc {\n position: static;\n order: -1;\n border-left: 0;\n border-bottom: 1px solid var(--vmz-line-subtle, #f0f1f3);\n padding: 0 0 0.75rem;\n margin-bottom: 1.5rem;\n }\n}\n\n@media (max-width: 860px) {\n .site--docs > .doc-body,\n body > .doc-body {\n grid-template-columns: 1fr;\n }\n\n .doc-sidebar {\n position: static;\n max-height: none;\n border-right: 0;\n border-bottom: 1px solid var(--vmz-line-default, #e5e6eb);\n padding: 1rem;\n }\n\n .doc-content {\n padding: 1.25rem 1rem 2rem;\n }\n\n .doc-content main h1 {\n font-size: 1.375rem;\n }\n\n .doc-content main pre {\n font-size: 0.75rem;\n }\n}\n";
@@ -0,0 +1,578 @@
1
+ /**
2
+ * Framework-owned document base stylesheet (`assets/vmz-document.css`).
3
+ *
4
+ * The single canonical document surface for every site: sidebar + article +
5
+ * toc grid, article type scale, code/table/quote blocks, island shells and the
6
+ * responsive breakpoints. Structural colors come from `--vmz-*` semantic tokens
7
+ * only (site brand flows in through the compiled `vmz-designs.css`); syntax
8
+ * colors inside code blocks come from the Shiki theme and stay identical on
9
+ * every site. Sites do not ship document stylesheets.
10
+ *
11
+ * House rules: pure-white base with near-black blocks for
12
+ * rhythm, body text ≥ 16px, small text ≥ 12px at weight ≥ 400, no uppercase
13
+ * letter-spaced micro labels, no 3D / volumetric surfaces.
14
+ */
15
+ export const DOCUMENT_BASE_CSS = `/* vmz document layer — canonical document surface (token-driven). */
16
+
17
+ .site--docs {
18
+ min-height: 100vh;
19
+ display: flex;
20
+ flex-direction: column;
21
+ background: var(--vmz-surface-paper, #ffffff);
22
+ }
23
+
24
+ .site--docs > .doc-body {
25
+ flex: 1 0 auto;
26
+ display: grid;
27
+ grid-template-columns: 17rem minmax(0, 1fr);
28
+ align-items: start;
29
+ width: 100%;
30
+ max-width: 94rem;
31
+ margin: 0 auto;
32
+ }
33
+
34
+ /* Sidebar -------------------------------------------------------------- */
35
+
36
+ .doc-sidebar {
37
+ position: sticky;
38
+ top: var(--vmz-layout-header-height-compact, 3.5rem);
39
+ align-self: start;
40
+ max-height: calc(100vh - var(--vmz-layout-header-height-compact, 3.5rem));
41
+ overflow-y: auto;
42
+ padding: 2rem 1.25rem 3rem 1.5rem;
43
+ border-right: 1px solid var(--vmz-line-default, #e5e6eb);
44
+ }
45
+
46
+ /* Density activation lives in this framework layer: sites only ship tokens. */
47
+
48
+ :where([data-density="compact"]) .doc-sidebar {
49
+ padding-top: var(--vmz-density-compact-padding-y, 1.5rem);
50
+ padding-bottom: 2rem;
51
+ }
52
+
53
+ :where([data-density="dense"]) .doc-sidebar {
54
+ padding-top: var(--vmz-density-dense-padding-y, 1rem);
55
+ padding-bottom: 1.5rem;
56
+ }
57
+
58
+ .doc-sidebar__label {
59
+ font-size: 0.75rem;
60
+ font-weight: 500;
61
+ color: var(--vmz-text-muted, #6b7178);
62
+ margin: 0 0 var(--vmz-density-control-padding-y, 0.75rem);
63
+ }
64
+
65
+ .doc-subnav ul {
66
+ list-style: none;
67
+ margin: 0;
68
+ padding: 0;
69
+ display: grid;
70
+ gap: 2px;
71
+ }
72
+
73
+ .doc-subnav a {
74
+ display: block;
75
+ padding: 0.4375rem 0.625rem;
76
+ font-size: 0.875rem;
77
+ line-height: 1.45;
78
+ color: var(--vmz-text-steel, #51565d);
79
+ text-decoration: none;
80
+ border-left: 2px solid transparent;
81
+ border-radius: 0 4px 4px 0;
82
+ transition: color 120ms ease, background 120ms ease, border-color 120ms ease;
83
+ }
84
+
85
+ .doc-subnav a:hover {
86
+ color: var(--vmz-text-ink, #1f2329);
87
+ background: var(--vmz-surface-mist, #f7f8fa);
88
+ text-decoration: none;
89
+ }
90
+
91
+ .doc-subnav a[aria-current="page"] {
92
+ color: var(--vmz-brand-primary, #1677ff);
93
+ border-left-color: var(--vmz-brand-primary, #1677ff);
94
+ background: var(--vmz-surface-paper, #ffffff);
95
+ font-weight: 500;
96
+ }
97
+
98
+ .doc-search {
99
+ margin-top: 1rem;
100
+ padding-top: 0.75rem;
101
+ border-top: 1px solid var(--vmz-line-default, #e5e6eb);
102
+ position: relative;
103
+ }
104
+
105
+ .doc-search__input {
106
+ width: 100%;
107
+ box-sizing: border-box;
108
+ padding: 0.4375rem 0.625rem;
109
+ font-size: 0.875rem;
110
+ line-height: 1.4;
111
+ color: var(--vmz-text-ink, #1f2329);
112
+ background: var(--vmz-surface-paper, #ffffff);
113
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
114
+ border-radius: 6px;
115
+ }
116
+
117
+ .doc-search__input:focus-visible {
118
+ outline: 2px solid var(--vmz-brand-primary, #1677ff);
119
+ outline-offset: 1px;
120
+ }
121
+
122
+ .doc-search__results {
123
+ list-style: none;
124
+ margin: 0.375rem 0 0;
125
+ padding: 0.25rem;
126
+ display: grid;
127
+ gap: 1px;
128
+ background: var(--vmz-surface-paper, #ffffff);
129
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
130
+ border-radius: 6px;
131
+ max-height: 16rem;
132
+ overflow-y: auto;
133
+ }
134
+
135
+ .doc-search__results[hidden] {
136
+ display: none;
137
+ }
138
+
139
+ .doc-search__results a {
140
+ display: block;
141
+ padding: 0.375rem 0.5rem;
142
+ font-size: 0.8125rem;
143
+ line-height: 1.4;
144
+ color: var(--vmz-text-steel, #51565d);
145
+ text-decoration: none;
146
+ border-radius: 4px;
147
+ overflow-wrap: break-word;
148
+ }
149
+
150
+ .doc-search__ctx {
151
+ color: var(--vmz-text-muted, #6b7178);
152
+ }
153
+
154
+ .doc-search__results li[aria-selected="true"] a,
155
+ .doc-search__results a:hover {
156
+ background: var(--vmz-surface-mist, #f7f8fa);
157
+ color: var(--vmz-text-ink, #1f2329);
158
+ }
159
+
160
+ .doc-search__empty {
161
+ padding: 0.375rem 0.5rem;
162
+ font-size: 0.8125rem;
163
+ color: var(--vmz-text-muted, #6b7178);
164
+ }
165
+
166
+ .doc-search__hint {
167
+ margin: 0.375rem 0 0;
168
+ font-size: 0.75rem;
169
+ line-height: 1.5;
170
+ color: var(--vmz-text-muted, #6b7178);
171
+ }
172
+
173
+ /* Content grid --------------------------------------------------------- */
174
+
175
+ .doc-content {
176
+ display: grid;
177
+ grid-template-columns: minmax(0, 1fr) 13rem;
178
+ gap: 3rem;
179
+ padding: 3rem 3rem 4rem;
180
+ min-width: 0;
181
+ }
182
+
183
+ .doc-content > main {
184
+ min-width: 0;
185
+ max-width: 46rem;
186
+ }
187
+
188
+ /* Breadcrumb ----------------------------------------------------------- */
189
+
190
+ .doc-breadcrumb {
191
+ font-size: 0.875rem;
192
+ line-height: 1.5;
193
+ color: var(--vmz-text-muted, #6b7178);
194
+ margin: 0 0 2rem;
195
+ display: flex;
196
+ gap: 0.375rem;
197
+ align-items: baseline;
198
+ }
199
+
200
+ .doc-breadcrumb a {
201
+ color: var(--vmz-text-steel, #51565d);
202
+ text-decoration: none;
203
+ }
204
+
205
+ .doc-breadcrumb a:hover {
206
+ color: var(--vmz-brand-primary, #1677ff);
207
+ text-decoration: underline;
208
+ text-underline-offset: 2px;
209
+ }
210
+
211
+ .doc-breadcrumb [aria-current] {
212
+ color: var(--vmz-text-ink, #1f2329);
213
+ font-weight: 500;
214
+ }
215
+
216
+ /* On this page --------------------------------------------------------- */
217
+
218
+ .toc {
219
+ position: sticky;
220
+ top: calc(var(--vmz-layout-header-height-compact, 3.5rem) + 1.25rem);
221
+ align-self: start;
222
+ order: 2;
223
+ border-left: 1px solid var(--vmz-line-subtle, #f0f1f3);
224
+ padding-left: 1rem;
225
+ }
226
+
227
+ .toc__label {
228
+ font-size: 0.75rem;
229
+ font-weight: 500;
230
+ color: var(--vmz-text-muted, #6b7178);
231
+ margin: 0 0 0.5rem;
232
+ }
233
+
234
+ .toc ol {
235
+ list-style: none;
236
+ margin: 0;
237
+ padding: 0;
238
+ display: grid;
239
+ gap: 0.25rem;
240
+ }
241
+
242
+ .toc a {
243
+ color: var(--vmz-text-steel, #51565d);
244
+ text-decoration: none;
245
+ display: block;
246
+ line-height: 1.4;
247
+ font-size: 0.75rem;
248
+ }
249
+
250
+ .toc a:hover {
251
+ color: var(--vmz-brand-primary, #1677ff);
252
+ }
253
+
254
+ .toc .h3 {
255
+ padding-left: 0.75rem;
256
+ color: var(--vmz-text-muted, #6b7178);
257
+ }
258
+
259
+ /* Article typography --------------------------------------------------- */
260
+
261
+ .doc-content main h1 {
262
+ font-family: var(--vmz-font-display, var(--vmz-font-sans, sans-serif));
263
+ font-size: clamp(2rem, 2.8vw, 2.5rem);
264
+ font-weight: 650;
265
+ letter-spacing: -0.03em;
266
+ line-height: 1.12;
267
+ margin: 0 0 1.25rem;
268
+ color: var(--vmz-text-ink, #1f2329);
269
+ }
270
+
271
+ .doc-content main h2 {
272
+ font-size: 1.4375rem;
273
+ letter-spacing: -0.02em;
274
+ margin: 3rem 0 0.875rem;
275
+ color: var(--vmz-text-ink, #1f2329);
276
+ }
277
+
278
+ .doc-content main h3 {
279
+ font-size: 1.125rem;
280
+ margin: 2rem 0 0.5rem;
281
+ color: var(--vmz-text-ink, #1f2329);
282
+ }
283
+
284
+ .doc-content main h4 {
285
+ font-size: 1rem;
286
+ margin: 1.75rem 0 0.375rem;
287
+ color: var(--vmz-text-ink, #1f2329);
288
+ }
289
+
290
+ .doc-content main p,
291
+ .doc-content main li {
292
+ font-size: 1rem;
293
+ line-height: 1.75;
294
+ color: var(--vmz-text-steel, #51565d);
295
+ }
296
+
297
+ .doc-content main p {
298
+ margin: 0 0 1.125rem;
299
+ }
300
+
301
+ .doc-content main ul,
302
+ .doc-content main ol {
303
+ margin: 0 0 1.25rem;
304
+ padding-left: 1.375rem;
305
+ }
306
+
307
+ .doc-content main li + li {
308
+ margin-top: 0.375rem;
309
+ }
310
+
311
+ .doc-content main li::marker {
312
+ color: var(--vmz-line-strong, #c9cdd4);
313
+ }
314
+
315
+ .doc-content main a {
316
+ color: var(--vmz-brand-primary, #1677ff);
317
+ text-decoration: underline;
318
+ text-underline-offset: 2px;
319
+ text-decoration-color: var(--vmz-line-strong, #c9cdd4);
320
+ overflow-wrap: break-word;
321
+ }
322
+
323
+ .doc-content main a:hover {
324
+ text-decoration-color: var(--vmz-brand-primary, #1677ff);
325
+ }
326
+
327
+ .doc-content main strong {
328
+ color: var(--vmz-text-ink, #1f2329);
329
+ font-weight: 600;
330
+ }
331
+
332
+ .doc-content main hr {
333
+ border: 0;
334
+ border-top: 1px solid var(--vmz-line-default, #e5e6eb);
335
+ margin: 1.75rem 0;
336
+ }
337
+
338
+ /* Inline code */
339
+ .doc-content main :not(pre) > code {
340
+ font-family: var(--vmz-font-mono, ui-monospace, monospace);
341
+ font-size: 0.875rem;
342
+ color: var(--vmz-text-ink, #1f2329);
343
+ background: var(--vmz-surface-mist, #f7f8fa);
344
+ border: 1px solid var(--vmz-line-subtle, #f0f1f3);
345
+ border-radius: 4px;
346
+ padding: 0.0625rem 0.3125rem;
347
+ word-break: break-word;
348
+ }
349
+
350
+ /* Code blocks: near-black surface, token chrome, theme-owned syntax colors */
351
+ .doc-content main pre {
352
+ position: relative;
353
+ margin: 0 0 1.375rem;
354
+ padding: 1.125rem 1.25rem;
355
+ overflow-x: auto;
356
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
357
+ border-radius: 8px;
358
+ background: var(--vmz-surface-code, #0f1115);
359
+ color: var(--vmz-text-on-ink, #f7f8fa);
360
+ font-size: 0.84375rem;
361
+ line-height: 1.7;
362
+ tab-size: 4;
363
+ }
364
+
365
+ /* Copy button (injected by assets/vmz-document.js; hidden without JS) */
366
+ .doc-copy {
367
+ position: absolute;
368
+ top: 0.5rem;
369
+ right: 0.5rem;
370
+ padding: 0.1875rem 0.5rem;
371
+ font-size: 0.75rem;
372
+ font-weight: 400;
373
+ line-height: 1.4;
374
+ color: var(--vmz-text-muted, #6b7178);
375
+ background: var(--vmz-surface-mist, #f7f8fa);
376
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
377
+ border-radius: 4px;
378
+ cursor: pointer;
379
+ opacity: 0;
380
+ transition: opacity 120ms ease;
381
+ }
382
+
383
+ pre:hover .doc-copy,
384
+ pre:focus-within .doc-copy,
385
+ .doc-copy:focus-visible {
386
+ opacity: 1;
387
+ }
388
+
389
+ .doc-copy--done {
390
+ color: var(--vmz-status-success-accent, #237804);
391
+ }
392
+
393
+ /* Heading self anchors (build-time, no-JS usable) */
394
+ .h-anchor {
395
+ margin-left: 0.4em;
396
+ font-size: 0.8em;
397
+ font-weight: 400;
398
+ text-decoration: none;
399
+ color: var(--vmz-text-muted, #6b7178);
400
+ opacity: 0;
401
+ transition: opacity 120ms ease;
402
+ }
403
+
404
+ .doc-content main h2:hover .h-anchor,
405
+ .doc-content main h3:hover .h-anchor,
406
+ .doc-content main h4:hover .h-anchor,
407
+ .h-anchor:focus-visible {
408
+ opacity: 1;
409
+ }
410
+
411
+ .doc-content main pre code {
412
+ font-family: var(--vmz-font-mono, ui-monospace, monospace);
413
+ font-size: inherit;
414
+ background: transparent;
415
+ border: 0;
416
+ padding: 0;
417
+ color: inherit;
418
+ }
419
+
420
+ /* Tables */
421
+ .doc-content main table {
422
+ width: 100%;
423
+ border-collapse: separate;
424
+ border-spacing: 0;
425
+ margin: 0.75rem 0 1.5rem;
426
+ font-size: 0.9375rem;
427
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
428
+ border-radius: 10px;
429
+ display: block;
430
+ overflow-x: auto;
431
+ }
432
+
433
+ .doc-content main thead th {
434
+ background: var(--vmz-surface-mist, #f7f8fa);
435
+ border-bottom: 1px solid var(--vmz-line-default, #e5e6eb);
436
+ font-size: 0.8125rem;
437
+ font-weight: 600;
438
+ color: var(--vmz-text-muted, #6b7178);
439
+ text-align: left;
440
+ padding: 0.6875rem 1rem;
441
+ white-space: nowrap;
442
+ }
443
+
444
+ .doc-content main td,
445
+ .doc-content main tbody th {
446
+ border-bottom: 1px solid var(--vmz-line-subtle, #f0f1f3);
447
+ padding: 0.6875rem 1rem;
448
+ vertical-align: top;
449
+ line-height: 1.6;
450
+ color: var(--vmz-text-steel, #51565d);
451
+ }
452
+
453
+ .doc-content main tbody tr:last-child td {
454
+ border-bottom: 0;
455
+ }
456
+
457
+ .doc-content main tbody tr:hover td {
458
+ background: var(--vmz-surface-fill, #fafbfc);
459
+ }
460
+
461
+ .doc-content main td code {
462
+ font-size: 0.8125rem;
463
+ }
464
+
465
+ /* Blockquote / callouts */
466
+ .doc-content main blockquote {
467
+ margin: 0 0 1.25rem;
468
+ padding: 0.875rem 1.125rem;
469
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
470
+ border-left: 3px solid var(--vmz-brand-primary, #1677ff);
471
+ border-radius: 0 8px 8px 0;
472
+ background: var(--vmz-surface-mist, #f7f8fa);
473
+ font-size: 1rem;
474
+ color: var(--vmz-text-steel, #51565d);
475
+ }
476
+
477
+ .doc-content main blockquote p {
478
+ margin: 0;
479
+ font-size: 1rem;
480
+ }
481
+
482
+ .doc-content main .warn {
483
+ background: var(--vmz-status-warning-background, #fff7e6);
484
+ border: 1px solid var(--vmz-status-warning-border, #ffe7ba);
485
+ border-left: 3px solid var(--vmz-status-warning-accent, #d48806);
486
+ color: var(--vmz-status-warning-foreground, #ad6800);
487
+ padding: 0.875rem 1.125rem;
488
+ border-radius: 0 8px 8px 0;
489
+ margin: 0 0 1.25rem;
490
+ font-size: 0.9375rem;
491
+ line-height: 1.65;
492
+ }
493
+
494
+ .doc-content main .warn p {
495
+ color: inherit;
496
+ font-size: inherit;
497
+ margin: 0;
498
+ }
499
+
500
+ /* Playground / island shells */
501
+ .doc-content main [data-vmz-island],
502
+ .doc-content main .doc-playground {
503
+ border: 1px solid var(--vmz-line-default, #e5e6eb);
504
+ border-radius: var(--vmz-radius-xs, 4px);
505
+ background: var(--vmz-surface-fill, #fafbfc);
506
+ padding: 0.75rem;
507
+ margin: 0 0 1rem;
508
+ }
509
+
510
+ .doc-content main .doc-playground-source,
511
+ .doc-content main .doc-playground-fallback {
512
+ font-size: 0.8125rem;
513
+ color: var(--vmz-text-muted, #6b7178);
514
+ }
515
+
516
+ /* Standalone mount emits the same .site.site--docs > .doc-body skeleton as
517
+ the integrated shell — no second DOM shape. */
518
+
519
+ .skip-link {
520
+ position: absolute;
521
+ left: -999px;
522
+ top: 0.75rem;
523
+ z-index: 50;
524
+ padding: 0.45rem 0.75rem;
525
+ background: var(--vmz-brand-primary, #1677ff);
526
+ color: var(--vmz-text-on-brand, #ffffff);
527
+ text-decoration: none;
528
+ }
529
+
530
+ .skip-link:focus {
531
+ left: 0.75rem;
532
+ }
533
+
534
+ /* Responsive ------------------------------------------------------------ */
535
+
536
+ @media (max-width: 1100px) {
537
+ .doc-content {
538
+ grid-template-columns: minmax(0, 1fr);
539
+ padding: 1.75rem 1.5rem 2.5rem;
540
+ }
541
+
542
+ .toc {
543
+ position: static;
544
+ order: -1;
545
+ border-left: 0;
546
+ border-bottom: 1px solid var(--vmz-line-subtle, #f0f1f3);
547
+ padding: 0 0 0.75rem;
548
+ margin-bottom: 1.5rem;
549
+ }
550
+ }
551
+
552
+ @media (max-width: 860px) {
553
+ .site--docs > .doc-body,
554
+ body > .doc-body {
555
+ grid-template-columns: 1fr;
556
+ }
557
+
558
+ .doc-sidebar {
559
+ position: static;
560
+ max-height: none;
561
+ border-right: 0;
562
+ border-bottom: 1px solid var(--vmz-line-default, #e5e6eb);
563
+ padding: 1rem;
564
+ }
565
+
566
+ .doc-content {
567
+ padding: 1.25rem 1rem 2rem;
568
+ }
569
+
570
+ .doc-content main h1 {
571
+ font-size: 1.375rem;
572
+ }
573
+
574
+ .doc-content main pre {
575
+ font-size: 0.75rem;
576
+ }
577
+ }
578
+ `;
@@ -7,6 +7,7 @@ export interface BuildDocumentsOpts {
7
7
  strict?: boolean;
8
8
  engines?: {
9
9
  markdown?: string;
10
+ code?: string;
10
11
  };
11
12
  }
12
13
  export interface BuildDocumentsPageResult {