@dogsbay/ssg 0.2.0-beta.129 → 0.2.0-beta.131
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/dist/package/THIRD-PARTY-NOTICES.txt +5 -5
- package/dist/package/browser.mjs +243 -111
- package/dist/package/chunks/{prebuilt-css-default-MOOPVBZ5.mjs → prebuilt-css-default-GJIN3VOR.mjs} +38 -2
- package/dist/package/chunks/{prebuilt-css-mintlify-HAG54PAM.mjs → prebuilt-css-mintlify-SKWKD2KB.mjs} +38 -2
- package/dist/package/client.mjs +35 -8
- package/dist/package/css.mjs +165 -3
- package/dist/package/types/core/build.d.ts +78 -0
- package/dist/package/types/core/dev.d.ts +19 -2
- package/dist/package/types/core/diagrams.d.ts +4 -2
- package/dist/package/types/package/browser.d.ts +1 -1
- package/package.json +29 -29
package/dist/package/client.mjs
CHANGED
|
@@ -631,17 +631,43 @@ function initAnchors(signal) {
|
|
|
631
631
|
});
|
|
632
632
|
}, { signal });
|
|
633
633
|
}
|
|
634
|
-
var providers = /* @__PURE__ */ new
|
|
635
|
-
|
|
636
|
-
|
|
634
|
+
var providers = /* @__PURE__ */ new Map();
|
|
635
|
+
var unreachable = /* @__PURE__ */ new Set();
|
|
636
|
+
function releaseDetached() {
|
|
637
|
+
for (const [p, ac] of providers) {
|
|
638
|
+
if (p.isConnected) continue;
|
|
639
|
+
closeMobile(p);
|
|
640
|
+
ac.abort();
|
|
641
|
+
providers.delete(p);
|
|
642
|
+
}
|
|
643
|
+
for (const p of unreachable) if (!p.isConnected) closeMobile(p);
|
|
644
|
+
}
|
|
645
|
+
function withSignal(signal, fn) {
|
|
646
|
+
const proto = EventTarget.prototype;
|
|
647
|
+
const add = proto.addEventListener;
|
|
648
|
+
let added = 0;
|
|
649
|
+
proto.addEventListener = function(type, listener, o) {
|
|
650
|
+
added++;
|
|
651
|
+
const own = typeof o === "object" ? o.signal : void 0;
|
|
652
|
+
add.call(this, type, listener, typeof o === "object" ? { ...o, signal: own ? AbortSignal.any([own, signal]) : signal } : { capture: o === true, signal });
|
|
653
|
+
};
|
|
654
|
+
try {
|
|
655
|
+
fn();
|
|
656
|
+
} finally {
|
|
657
|
+
proto.addEventListener = add;
|
|
658
|
+
}
|
|
659
|
+
return added;
|
|
637
660
|
}
|
|
638
661
|
function wireSidebars() {
|
|
662
|
+
releaseDetached();
|
|
639
663
|
document.querySelectorAll("[data-component='sidebar-provider']").forEach((p) => {
|
|
640
|
-
|
|
641
|
-
|
|
664
|
+
if (providers.has(p) || unreachable.has(p)) return;
|
|
665
|
+
const ac = new AbortController();
|
|
666
|
+
if (withSignal(ac.signal, () => initSidebar(p))) providers.set(p, ac);
|
|
667
|
+
else if (p.querySelector("[data-component='sidebar']")) unreachable.add(p);
|
|
642
668
|
});
|
|
643
|
-
document.removeEventListener("keydown",
|
|
644
|
-
document.addEventListener("keydown",
|
|
669
|
+
document.removeEventListener("keydown", releaseDetached);
|
|
670
|
+
document.addEventListener("keydown", releaseDetached);
|
|
645
671
|
}
|
|
646
672
|
var current;
|
|
647
673
|
function mount(o = {}) {
|
|
@@ -664,7 +690,8 @@ function mount(o = {}) {
|
|
|
664
690
|
unmount() {
|
|
665
691
|
if (signal.aborted) return;
|
|
666
692
|
ac.abort();
|
|
667
|
-
for (const p of providers) closeMobile(p);
|
|
693
|
+
for (const p of [...providers.keys(), ...unreachable]) closeMobile(p);
|
|
694
|
+
releaseDetached();
|
|
668
695
|
if (current === page) current = void 0;
|
|
669
696
|
}
|
|
670
697
|
};
|
package/dist/package/css.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import "./chunks/chunk-3BM23K4O.mjs";
|
|
|
4
4
|
import { compile } from "tailwindcss";
|
|
5
5
|
|
|
6
6
|
// src/generated/css-assets.ts
|
|
7
|
-
var THEME_CSS = { "api.css": "/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/ui api-symbol.css, api-source.css, EndpointCard.astro, EndpointSection.astro, PropertyItem.astro. Do not edit. */\n/* API Symbol badges, coloured by kind. Text on its own 20% tint must reach\n WCAG AA (4.5:1) on the page background: the light colours were L 0.5\u20130.6\n (3.2\u20134.0:1) and are L 0.44 (5.0:1 or more); render-html's\n tests/contrast.test.ts measures every kind in both modes. */\n.api-badge {\n display: inline-flex;\n align-items: center;\n border-radius: 0.375rem;\n padding: 0.125rem 0.5rem;\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n vertical-align: middle;\n flex-shrink: 0;\n}\n\n.api-badge-class {\n background-color: oklch(0.44 0.18 265 / 0.2);\n color: oklch(0.44 0.18 265);\n}\n.dark .api-badge-class {\n background-color: oklch(0.7 0.15 265 / 0.2);\n color: oklch(0.7 0.15 265);\n}\n\n.api-badge-meth {\n background-color: oklch(0.44 0.15 155 / 0.2);\n color: oklch(0.44 0.15 155);\n}\n.dark .api-badge-meth {\n background-color: oklch(0.7 0.15 155 / 0.2);\n color: oklch(0.7 0.15 155);\n}\n\n.api-badge-attr {\n background-color: oklch(0.44 0.15 55 / 0.2);\n color: oklch(0.44 0.15 55);\n}\n.dark .api-badge-attr {\n background-color: oklch(0.75 0.15 55 / 0.2);\n color: oklch(0.75 0.15 55);\n}\n\n.api-badge-func {\n background-color: oklch(0.44 0.18 330 / 0.2);\n color: oklch(0.44 0.18 330);\n}\n.dark .api-badge-func {\n background-color: oklch(0.7 0.15 330 / 0.2);\n color: oklch(0.7 0.15 330);\n}\n\n.api-badge-module {\n background-color: oklch(0.44 0.12 200 / 0.2);\n color: oklch(0.44 0.12 200);\n}\n.dark .api-badge-module {\n background-color: oklch(0.65 0.12 200 / 0.2);\n color: oklch(0.65 0.12 200);\n}\n\n/* API Symbol container */\n.api-symbol {\n margin-top: 2rem;\n padding-top: 1.5rem;\n border-top: 1px solid var(--border, oklch(0.5 0 0 / 0.15));\n}\n\n.api-symbol:first-child {\n margin-top: 0;\n padding-top: 0;\n border-top: none;\n}\n\n.api-symbol-heading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n}\n\n.api-symbol-heading code {\n font-size: 1.25em;\n font-weight: 600;\n}\n\n.api-symbol-bases {\n font-size: 0.875rem;\n color: var(--muted-foreground);\n margin-bottom: 0.5rem;\n}\n\n.api-source {\n margin-top: 0.75rem;\n margin-bottom: 0.75rem;\n border: 1px solid var(--color-border, oklch(0.85 0 0));\n border-radius: 0.375rem;\n overflow: hidden;\n}\n\n.api-source summary {\n cursor: pointer;\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n font-weight: 500;\n color: var(--color-muted-foreground, oklch(0.55 0 0));\n background: var(--color-muted, oklch(0.96 0 0));\n user-select: none;\n}\n\n.api-source summary:hover {\n color: var(--color-foreground, oklch(0.15 0 0));\n}\n\n.api-source[open] summary {\n border-bottom: 1px solid var(--color-border, oklch(0.85 0 0));\n}\n\n/* Remove extra margin from the code block inside */\n.api-source pre {\n margin: 0 !important;\n border-radius: 0 !important;\n border: none !important;\n}\n\n\n /* An operation's description is Markdown rendered to HTML (lists, code,\n paragraphs), placed where the page's prose styles do not reach: without\n these a bulleted field list reads as loose lines. */\n .api-description > * + * {\n margin-top: 0.5rem;\n }\n .api-description ul {\n list-style: disc;\n padding-left: 1.25rem;\n }\n .api-description ol {\n list-style: decimal;\n padding-left: 1.25rem;\n }\n .api-description li + li,\n .api-description li > ul,\n .api-description li > ol {\n margin-top: 0.125rem;\n }\n .api-description ul ul {\n list-style: circle;\n }\n /* Field names (`id`, `scm_type`) stand out in the JSON key colour,\n on a faint tint of it. Override --api-field in the theme to change it; a site\n scaffolded before the token existed gets --api-post, the same blue. */\n .api-description code {\n font-family: var(--font-mono, ui-monospace, monospace);\n font-size: 0.85em;\n font-weight: 600;\n color: var(--api-field, var(--api-post, var(--foreground)));\n background-color: color-mix(in oklab, var(--api-field, var(--api-post, var(--foreground))) 8%, transparent);\n border-radius: 0.25rem;\n padding: 0.0625rem 0.3rem;\n }\n /* A code block in a description (a JSON shape, `?order_by=`) is one\n full-width block, as Swagger UI shows it: the chip styling above,\n applied per line, read as a stack of separate highlights. */\n .api-description pre {\n overflow-x: auto;\n border-radius: 0.375rem;\n padding: 0.5rem 0.75rem;\n background-color: var(--code-background, color-mix(in oklab, var(--foreground) 6%, transparent));\n }\n .api-description pre code {\n display: block;\n padding: 0;\n border-radius: 0;\n background: none;\n white-space: pre;\n }\n .api-description a {\n color: var(--primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n }\n\n\n details[open] > summary [data-section-chevron] {\n transform: rotate(90deg);\n }\n\n\n details[open] > summary [data-property-chevron] {\n transform: rotate(90deg);\n }\n", "code-rich.css": "/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/ui code-rich.css. Do not edit. */\n/* CodeRich annotation styles \u2014 applied via CSS classes from Shiki transformers */\n\n/* \u2500\u2500 All lines \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line {\n /* inline-block, not inline-flex: a flex line makes each token span a flex item, and\n browsers then copy a hand-made selection with a line break between tokens. */\n display: inline-block;\n width: 100%;\n}\n\n/* \u2500\u2500 Gutter (single column: line number + diff marker) \u2500\u2500 */\n.code-rich-body .gutter {\n display: inline-block;\n min-width: 4ch;\n margin-right: 1.5ch;\n text-align: right;\n /* Theme-aware, and NO alpha. This was a fixed dark grey at 70%\n opacity: fine on a light code background, 1.3:1 against the dark\n one \u2014 line numbers were effectively invisible in dark mode.\n Opacity compounds it, since it blends toward whatever is behind.\n --muted-foreground already flips per theme (L 0.45 / 0.708). */\n color: var(--muted-foreground);\n user-select: none;\n flex-shrink: 0;\n}\n.code-rich-body .gutter.add {\n color: oklch(0.55 0.2 145);\n}\n.code-rich-body .gutter.remove {\n color: oklch(0.55 0.2 25);\n}\n\n/* Dark mode: the diff gutters sit on TINTED line backgrounds, not on\n the plain code background, and at L0.55 they measure 2.89:1 (add)\n and 2.63:1 (remove) there \u2014 both well under AA. Light mode is\n unaffected, so these are overrides rather than a changed base.\n Raised to L0.72 for headroom over the 4.5:1 floor. */\n.dark .code-rich-body .gutter.add {\n color: oklch(0.72 0.2 145);\n}\n.dark .code-rich-body .gutter.remove {\n color: oklch(0.72 0.14 25);\n}\n\n/* \u2500\u2500 Diff line backgrounds \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line.diff.add {\n background-color: oklch(0.75 0.18 145 / 0.15);\n}\n.code-rich-body .line.diff.remove {\n background-color: oklch(0.65 0.2 25 / 0.15);\n}\n\n/* \u2500\u2500 Focus \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body pre.has-focused .line:not(.focused) {\n opacity: 0.7;\n transition: opacity 0.3s;\n}\n.code-rich-body pre.has-focused:hover .line:not(.focused) {\n opacity: 0.9;\n}\n.code-rich-body pre.has-focused .line.focused {\n opacity: 1;\n}\n\n/* \u2500\u2500 Highlight (background only) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line.highlighted {\n background-color: oklch(0.7 0.1 250 / 0.08);\n}\n\n/* \u2500\u2500 Error / Warning / Info levels \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line.highlighted.error {\n background-color: oklch(0.65 0.2 25 / 0.08);\n}\n.code-rich-body .line.highlighted.warning {\n background-color: oklch(0.75 0.18 65 / 0.08);\n}\n.code-rich-body .line.highlighted.info {\n background-color: oklch(0.7 0.15 250 / 0.08);\n}\n\n/* \u2500\u2500 Word highlight \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .highlighted-word {\n background-color: oklch(0.7 0.1 250 / 0.25);\n border-radius: 3px;\n padding: 1px 4px;\n margin: 0 -1px;\n}\n", "docs.css": `/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/format-astro (generateGlobalCss). Do not edit. */
|
|
7
|
+
var THEME_CSS = { "api.css": "/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/ui api-symbol.css, api-source.css, EndpointCard.astro, EndpointSection.astro, PropertyItem.astro. Do not edit. */\n/* API Symbol badges, coloured by kind. Text on its own 20% tint must reach\n WCAG AA (4.5:1) on the page background: the light colours were L 0.5\u20130.6\n (3.2\u20134.0:1) and are L 0.44 (5.0:1 or more); render-html's\n tests/contrast.test.ts measures every kind in both modes. */\n.api-badge {\n display: inline-flex;\n align-items: center;\n border-radius: 0.375rem;\n padding: 0.125rem 0.5rem;\n font-size: 0.7rem;\n font-weight: 600;\n letter-spacing: 0.025em;\n text-transform: uppercase;\n vertical-align: middle;\n flex-shrink: 0;\n}\n\n.api-badge-class {\n background-color: oklch(0.44 0.18 265 / 0.2);\n color: oklch(0.44 0.18 265);\n}\n.dark .api-badge-class {\n background-color: oklch(0.7 0.15 265 / 0.2);\n color: oklch(0.7 0.15 265);\n}\n\n.api-badge-meth {\n background-color: oklch(0.44 0.15 155 / 0.2);\n color: oklch(0.44 0.15 155);\n}\n.dark .api-badge-meth {\n background-color: oklch(0.7 0.15 155 / 0.2);\n color: oklch(0.7 0.15 155);\n}\n\n.api-badge-attr {\n background-color: oklch(0.44 0.15 55 / 0.2);\n color: oklch(0.44 0.15 55);\n}\n.dark .api-badge-attr {\n background-color: oklch(0.75 0.15 55 / 0.2);\n color: oklch(0.75 0.15 55);\n}\n\n.api-badge-func {\n background-color: oklch(0.44 0.18 330 / 0.2);\n color: oklch(0.44 0.18 330);\n}\n.dark .api-badge-func {\n background-color: oklch(0.7 0.15 330 / 0.2);\n color: oklch(0.7 0.15 330);\n}\n\n.api-badge-module {\n background-color: oklch(0.44 0.12 200 / 0.2);\n color: oklch(0.44 0.12 200);\n}\n.dark .api-badge-module {\n background-color: oklch(0.65 0.12 200 / 0.2);\n color: oklch(0.65 0.12 200);\n}\n\n/* API Symbol container */\n.api-symbol {\n margin-top: 2rem;\n padding-top: 1.5rem;\n border-top: 1px solid var(--border, oklch(0.5 0 0 / 0.15));\n}\n\n.api-symbol:first-child {\n margin-top: 0;\n padding-top: 0;\n border-top: none;\n}\n\n.api-symbol-heading {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n}\n\n.api-symbol-heading code {\n font-size: 1.25em;\n font-weight: 600;\n}\n\n.api-symbol-bases {\n font-size: 0.875rem;\n color: var(--muted-foreground);\n margin-bottom: 0.5rem;\n}\n\n.api-source {\n margin-top: 0.75rem;\n margin-bottom: 0.75rem;\n border: 1px solid var(--color-border, oklch(0.85 0 0));\n border-radius: 0.375rem;\n overflow: hidden;\n}\n\n.api-source summary {\n cursor: pointer;\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n font-weight: 500;\n color: var(--color-muted-foreground, oklch(0.55 0 0));\n background: var(--color-muted, oklch(0.96 0 0));\n user-select: none;\n}\n\n.api-source summary:hover {\n color: var(--color-foreground, oklch(0.15 0 0));\n}\n\n.api-source[open] summary {\n border-bottom: 1px solid var(--color-border, oklch(0.85 0 0));\n}\n\n/* Remove extra margin from the code block inside */\n.api-source pre {\n margin: 0 !important;\n border-radius: 0 !important;\n border: none !important;\n}\n\n\n /* An operation's description is Markdown rendered to HTML (lists, code,\n paragraphs), placed where the page's prose styles do not reach: without\n these a bulleted field list reads as loose lines. */\n .api-description > * + * {\n margin-top: 0.5rem;\n }\n .api-description ul {\n list-style: disc;\n padding-left: 1.25rem;\n }\n .api-description ol {\n list-style: decimal;\n padding-left: 1.25rem;\n }\n .api-description li + li,\n .api-description li > ul,\n .api-description li > ol {\n margin-top: 0.125rem;\n }\n .api-description ul ul {\n list-style: circle;\n }\n /* Field names (`id`, `scm_type`) stand out in the JSON key colour,\n on a faint tint of it. Override --api-field in the theme to change it; a site\n scaffolded before the token existed gets --api-post, the same blue. */\n .api-description code {\n font-family: var(--font-mono, ui-monospace, monospace);\n font-size: 0.85em;\n font-weight: 600;\n color: var(--api-field, var(--api-post, var(--foreground)));\n background-color: color-mix(in oklab, var(--api-field, var(--api-post, var(--foreground))) 8%, transparent);\n border-radius: 0.25rem;\n padding: 0.0625rem 0.3rem;\n }\n /* A code block in a description (a JSON shape, `?order_by=`) is one\n full-width block, as Swagger UI shows it: the chip styling above,\n applied per line, read as a stack of separate highlights. */\n .api-description pre {\n overflow-x: auto;\n border-radius: 0.375rem;\n padding: 0.5rem 0.75rem;\n background-color: var(--code-background, color-mix(in oklab, var(--foreground) 6%, transparent));\n }\n .api-description pre code {\n display: block;\n padding: 0;\n border-radius: 0;\n background: none;\n white-space: pre;\n }\n .api-description a {\n color: var(--primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n }\n\n\n details[open] > summary [data-section-chevron] {\n transform: rotate(90deg);\n }\n\n\n details[open] > summary [data-property-chevron] {\n transform: rotate(90deg);\n }\n", "code-rich.css": '/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/ui code-rich.css. Do not edit. */\n/* CodeRich annotation styles \u2014 applied via CSS classes from Shiki transformers */\n\n/* \u2500\u2500 All lines \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line {\n /* inline-block, not inline-flex: a flex line makes each token span a flex item, and\n browsers then copy a hand-made selection with a line break between tokens. */\n display: inline-block;\n width: 100%;\n}\n\n/* \u2500\u2500 Gutter (single column: line number + diff marker) \u2500\u2500 */\n.code-rich-body .gutter {\n display: inline-block;\n min-width: 4ch;\n margin-right: 1.5ch;\n text-align: right;\n /* Theme-aware, and NO alpha. This was a fixed dark grey at 70%\n opacity: fine on a light code background, 1.3:1 against the dark\n one \u2014 line numbers were effectively invisible in dark mode.\n Opacity compounds it, since it blends toward whatever is behind.\n --muted-foreground already flips per theme (L 0.45 / 0.708). */\n color: var(--muted-foreground);\n user-select: none;\n flex-shrink: 0;\n}\n.code-rich-body .gutter.add {\n color: oklch(0.55 0.2 145);\n}\n.code-rich-body .gutter.remove {\n color: oklch(0.55 0.2 25);\n}\n\n/* Dark mode: the diff gutters sit on TINTED line backgrounds, not on\n the plain code background, and at L0.55 they measure 2.89:1 (add)\n and 2.63:1 (remove) there \u2014 both well under AA. Light mode is\n unaffected, so these are overrides rather than a changed base.\n Raised to L0.72 for headroom over the 4.5:1 floor. */\n.dark .code-rich-body .gutter.add {\n color: oklch(0.72 0.2 145);\n}\n.dark .code-rich-body .gutter.remove {\n color: oklch(0.72 0.14 25);\n}\n\n/* \u2500\u2500 Diff line backgrounds \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line.diff.add {\n background-color: oklch(0.75 0.18 145 / 0.15);\n}\n.code-rich-body .line.diff.remove {\n background-color: oklch(0.65 0.2 25 / 0.15);\n}\n\n/* \u2500\u2500 Focus \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body pre.has-focused .line:not(.focused) {\n opacity: 0.7;\n transition: opacity 0.3s;\n}\n.code-rich-body pre.has-focused:hover .line:not(.focused) {\n opacity: 0.9;\n}\n.code-rich-body pre.has-focused .line.focused {\n opacity: 1;\n}\n\n/* \u2500\u2500 Highlight (background only) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line.highlighted {\n background-color: oklch(0.7 0.1 250 / 0.08);\n}\n\n/* \u2500\u2500 Error / Warning / Info levels \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .line.highlighted.error {\n background-color: oklch(0.65 0.2 25 / 0.08);\n}\n.code-rich-body .line.highlighted.warning {\n background-color: oklch(0.75 0.18 65 / 0.08);\n}\n.code-rich-body .line.highlighted.info {\n background-color: oklch(0.7 0.15 250 / 0.08);\n}\n\n/* \u2500\u2500 Word highlight \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-rich-body .highlighted-word {\n background-color: oklch(0.7 0.1 250 / 0.25);\n border-radius: 3px;\n padding: 1px 4px;\n margin: 0 -1px;\n}\n\n/* \u2500\u2500 `collapse` fence option: line runs folded behind a toggle \u2500\u2500\n No script: a checkbox inside the label. Lines hide only where :has() works,\n so a browser without it shows every line rather than losing them. */\n.code-rich-body .code-collapse-label {\n display: inline-block;\n width: 100%;\n cursor: pointer;\n user-select: none;\n /* The code\'s own colour: a muted label fell under 4.5:1 on the code background */\n border-block: 1px dashed color-mix(in oklab, currentColor 35%, transparent);\n font-style: italic;\n}\n.code-rich-body .code-collapse-toggle {\n position: absolute;\n width: 1px;\n height: 1px;\n opacity: 0;\n}\n.code-rich-body .code-collapse-label:has(.code-collapse-toggle:focus-visible) {\n outline: 2px solid var(--ring);\n outline-offset: -2px;\n}\n/* The label stays when open, so focus stays on the checkbox and it folds again */\n.code-rich-body .code-collapse-label::before {\n content: "\u25B8 ";\n}\n.code-rich-body .code-collapse-label:has(.code-collapse-toggle:checked)::before {\n content: "\u25BE ";\n}\n.code-rich-body .code-collapse:has(.code-collapse-toggle:not(:checked)) > .code-collapse-lines {\n display: none;\n}\n', "docs.css": `/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/format-astro (generateGlobalCss). Do not edit. */
|
|
8
8
|
|
|
9
9
|
/* Custom elements have no user-agent style, so an unstyled one is
|
|
10
10
|
display:inline \u2014 on which w-full does nothing and a border paints
|
|
@@ -71,7 +71,10 @@ var THEME_CSS = { "api.css": "/* Generated by packages/render-html/scripts/sync-
|
|
|
71
71
|
& li > * + *:not(.dba-api *) { margin-top: 0.75rem; }
|
|
72
72
|
|
|
73
73
|
& ul:not(.dba-api *) { list-style: disc; padding-left: 1.5rem; margin: 0.75rem 0; }
|
|
74
|
-
|
|
74
|
+
/* Not a step list, nor a list inside one: Steps.astro draws their numbers as circles, and this
|
|
75
|
+
rule (one class and an element) outranked its .steps-list { list-style: none }, so each step
|
|
76
|
+
showed its "2." beside its circle */
|
|
77
|
+
& ol:not(.dba-api *):not(.steps-list, .sub-steps-list, .steps-list ol) { list-style: decimal; padding-left: 1.5rem; margin: 0.75rem 0; }
|
|
75
78
|
& li:not(.dba-api *) { margin: 0.25rem 0; }
|
|
76
79
|
& li > ul:not(.dba-api *), & li > ol:not(.dba-api *) { margin: 0.25rem 0; }
|
|
77
80
|
/* A file tree draws its own folder and file icons (files/markup.ts): the list rules above gave it bullets too */
|
|
@@ -220,7 +223,166 @@ var THEME_CSS = { "api.css": "/* Generated by packages/render-html/scripts/sync-
|
|
|
220
223
|
display: none;
|
|
221
224
|
}
|
|
222
225
|
}
|
|
223
|
-
`, "steps.css": '/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/ui Steps.astro, SubSteps.astro. Do not edit. */\n\n .steps-list {\n position: relative;\n padding-left: 1.75rem;\n counter-reset: step;\n list-style: none;\n margin: 0;\n }\n\n .steps-list > li {\n position: relative;\n padding-bottom: 1.5rem;\n counter-increment: step;\n }\n\n .steps-list > li:last-child {\n padding-bottom: 0;\n }\n\n /* Numbered circle */\n .steps-list > li::before {\n content: counter(step);\n position: absolute;\n left: -1.75rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 9999px;\n border: 2px solid var(--color-border);\n background: var(--color-background);\n color: var(--color-foreground);\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1;\n }\n\n /* Connector line */\n .steps-list > li:not(:last-child)::after {\n content: "";\n position: absolute;\n left: calc(-1.75rem + 0.6875rem);\n top: 1.75rem;\n bottom: 0;\n width: 1px;\n background: var(--color-border);\n }\n\n /* Sub-steps: nested ol inside li */\n .steps-list > li ol {\n position: relative;\n padding-left: 1.5rem;\n counter-reset: substep;\n list-style: none;\n margin: 0.75rem 0 0 0;\n }\n\n .steps-list > li ol > li {\n position: relative;\n padding-bottom: 1rem;\n counter-increment: substep;\n }\n\n .steps-list > li ol > li:last-child {\n padding-bottom: 0;\n }\n\n /* Lettered circle (a, b, c) */\n .steps-list > li ol > li::before {\n content: counter(substep, lower-alpha);\n position: absolute;\n left: -1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 9999px;\n border: 1.5px solid var(--color-border);\n background: var(--color-background);\n color: var(--color-muted-foreground, #737373);\n font-size: 0.625rem;\n font-weight: 600;\n line-height: 1;\n }\n\n /* Sub-step connector line */\n .steps-list > li ol > li:not(:last-child)::after {\n content: "";\n position: absolute;\n left: calc(-1.5rem + 0.5625rem);\n top: 1.5rem;\n bottom: 0;\n width: 1px;\n background: var(--color-border);\n opacity: 0.6;\n }\n\n\n .sub-steps-list {\n position: relative;\n padding-left: 1.5rem;\n counter-reset: substep;\n list-style: none;\n margin: 0.75rem 0 0 0;\n }\n\n .sub-steps-list > li {\n position: relative;\n padding-bottom: 1rem;\n counter-increment: substep;\n }\n\n .sub-steps-list > li:last-child {\n padding-bottom: 0;\n }\n\n /* Lettered circle (a, b, c) */\n .sub-steps-list > li::before {\n content: counter(substep, lower-alpha);\n position: absolute;\n left: -1.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 9999px;\n border: 1.5px solid var(--color-border);\n background: var(--color-background);\n color: var(--color-muted-foreground, #737373);\n font-size: 0.625rem;\n font-weight: 600;\n line-height: 1;\n }\n\n /* Connector line (thinner) */\n .sub-steps-list > li:not(:last-child)::after {\n content: "";\n position: absolute;\n left: calc(-1.5rem + 0.5625rem);\n top: 1.5rem;\n bottom: 0;\n width: 1px;\n background: var(--color-border);\n opacity: 0.6;\n }\n', "theme-default.css": '/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/format-astro (themeCss("default")). Do not edit. */\n@custom-variant dark (&:where(.dark, .dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n /* Sidebar */\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n /* Admonition colors */\n --color-note: var(--note);\n --color-note-foreground: var(--note-foreground);\n --color-abstract: var(--abstract);\n --color-info: var(--info);\n --color-tip: var(--tip);\n --color-success: var(--success);\n --color-question: var(--question);\n --color-warning: var(--warning);\n --color-failure: var(--failure);\n --color-danger: var(--danger);\n --color-bug: var(--bug);\n --color-example: var(--example);\n --color-quote: var(--quote);\n\n /* Code */\n --color-code-bg: var(--code-background);\n --color-code-fg: var(--code-foreground);\n\n /* API reference \u2014 HTTP method, type, status, role colors */\n --color-api-field: var(--api-field);\n --color-api-get: var(--api-get);\n --color-api-post: var(--api-post);\n --color-api-put: var(--api-put);\n --color-api-patch: var(--api-patch);\n --color-api-delete: var(--api-delete);\n --color-api-head: var(--api-head);\n --color-api-required: var(--api-required);\n --color-api-deprecated: var(--api-deprecated);\n --color-api-type-string: var(--api-type-string);\n --color-api-type-number: var(--api-type-number);\n --color-api-type-boolean: var(--api-type-boolean);\n --color-api-type-object: var(--api-type-object);\n --color-api-type-array: var(--api-type-array);\n --color-api-status-2xx: var(--api-status-2xx);\n --color-api-status-3xx: var(--api-status-3xx);\n --color-api-status-4xx: var(--api-status-4xx);\n --color-api-status-5xx: var(--api-status-5xx);\n\n /* Fonts */\n --font-sans: var(--font-sans);\n --font-mono: var(--font-code);\n --font-family-code: var(--font-code);\n}\n\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0.014 285.823);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0.014 285.823);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0.014 285.823);\n --primary: oklch(0.205 0.014 285.823);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.965 0.001 286.375);\n --secondary-foreground: oklch(0.205 0.014 285.823);\n --muted: oklch(0.965 0.001 286.375);\n --muted-foreground: oklch(0.45 0.014 285.938);\n --accent: oklch(0.965 0.001 286.375);\n --accent-foreground: oklch(0.205 0.014 285.823);\n --destructive: oklch(0.45 0.245 27.325);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.922 0.004 286.32);\n --input: oklch(0.922 0.004 286.32);\n --ring: oklch(0.708 0.014 285.823);\n --radius: 0.625rem;\n --note: oklch(0.637 0.174 259.126);\n --note-foreground: var(--foreground);\n --abstract: oklch(0.691 0.148 221.723);\n --info: oklch(0.722 0.128 207.084);\n --tip: oklch(0.731 0.112 178.627);\n --success: oklch(0.754 0.175 149.577);\n --question: oklch(0.809 0.19 126.526);\n --warning: oklch(0.74 0.175 62.778);\n --failure: oklch(0.614 0.194 21.602);\n --danger: oklch(0.577 0.245 16.439);\n --bug: oklch(0.548 0.258 349.761);\n --example: oklch(0.534 0.222 286.033);\n --quote: oklch(0.65 0 0);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0.014 285.823);\n --sidebar-primary: oklch(0.205 0.014 285.823);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.965 0.001 286.375);\n --sidebar-accent-foreground: oklch(0.205 0.014 285.823);\n --sidebar-border: oklch(0.922 0.004 286.32);\n --sidebar-ring: oklch(0.708 0.014 285.823);\n --code-background: oklch(0.965 0.004 264);\n --code-foreground: oklch(0.3 0.014 253.833);\n\n /* API reference \u2014 always-dark code panel */\n --api-panel-bg: oklch(0.145 0.014 253.833);\n --api-panel-fg: oklch(0.926 0.013 253.833);\n\n /* API semantic colors \u2014 HTTP methods, types, status codes */\n /* Light mode: darkened for WCAG AA on the 20%/10% tints. See .dark. */\n --api-get: oklch(0.435 0.095 162);\n --api-post: oklch(0.45 0.174 259);\n --api-put: oklch(0.455 0.105 63);\n --api-patch: oklch(0.455 0.13 45);\n --api-delete: oklch(0.45 0.179 22);\n --api-head: oklch(0.47 0.222 286);\n --api-required: oklch(0.45 0.179 22);\n --api-deprecated: oklch(0.455 0.105 63);\n /* A field name in an operation\'s description (`id`, `name`): the JSON\n key colour of the highlighted examples (github-light-default #0550ae). */\n --api-field: oklch(0.47 0.16 254);\n --api-type-string: oklch(0.435 0.095 162);\n --api-type-number: oklch(0.45 0.174 259);\n --api-type-boolean: oklch(0.455 0.105 63);\n --api-type-object: oklch(0.47 0.222 286);\n --api-type-array: oklch(0.455 0.13 45);\n --api-status-2xx: oklch(0.435 0.095 162);\n --api-status-3xx: oklch(0.45 0.174 259);\n --api-status-4xx: oklch(0.455 0.105 63);\n --api-status-5xx: oklch(0.45 0.179 22);\n\n --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n --font-heading: var(--font-sans);\n --font-code: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;\n}\n\n.dark {\n --background: oklch(0.145 0.014 285.823);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.145 0.014 285.823);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.145 0.014 285.823);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.985 0 0);\n --primary-foreground: oklch(0.205 0.014 285.823);\n --secondary: oklch(0.269 0.007 286.033);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0.007 286.033);\n --muted-foreground: oklch(0.708 0.014 285.823);\n --accent: oklch(0.269 0.007 286.033);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --destructive-foreground: oklch(0.145 0.014 285.823);\n --border: oklch(0.269 0.007 286.033);\n --input: oklch(0.269 0.007 286.033);\n --ring: oklch(0.439 0.01 286.375);\n --note-foreground: var(--foreground);\n --sidebar: oklch(0.205 0.014 285.823);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0.007 286.033);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.269 0.007 286.033);\n --sidebar-ring: oklch(0.439 0.01 286.375);\n --code-background: oklch(0.18 0.014 253.833);\n --code-foreground: oklch(0.926 0.013 253.833);\n\n /* API semantic colors \u2014 lightened for dark mode (AA on 20%/10% tints). */\n --api-get: oklch(0.720 0.135 162);\n --api-post: oklch(0.755 0.174 259);\n --api-put: oklch(0.745 0.15 63);\n --api-patch: oklch(0.725 0.18 45);\n --api-delete: oklch(0.805 0.194 22);\n --api-head: oklch(0.740 0.182 286);\n --api-required: oklch(0.805 0.194 22);\n --api-deprecated: oklch(0.745 0.15 63);\n --api-field: oklch(0.79 0.11 245); /* github-dark-default #79c0ff */\n --api-type-string: oklch(0.690 0.135 162);\n --api-type-number: oklch(0.725 0.174 259);\n --api-type-boolean: oklch(0.720 0.15 63);\n --api-type-object: oklch(0.740 0.182 286);\n --api-type-array: oklch(0.725 0.18 45);\n --api-status-2xx: oklch(0.720 0.135 162);\n --api-status-3xx: oklch(0.755 0.174 259);\n --api-status-4xx: oklch(0.770 0.15 63);\n --api-status-5xx: oklch(0.805 0.194 22);\n}\n\n@layer base {\n * { @apply border-border outline-ring/50; }\n body { @apply bg-background text-foreground font-sans; }\n}\n\n/* Shiki dual-theme: light by default, dark when .dark class is active */\n.shiki,\n.shiki span,\n.astro-code,\n.astro-code span {\n color: var(--shiki-light) !important;\n}\n.shiki,\n.astro-code {\n background-color: var(--shiki-light-bg) !important;\n}\n.dark .shiki,\n.dark .shiki span,\n.dark .astro-code,\n.dark .astro-code span {\n color: var(--shiki-dark) !important;\n}\n.dark .shiki,\n.dark .astro-code {\n background-color: var(--shiki-dark-bg) !important;\n}\n/* Fix comment color contrast for WCAG AA */\n.shiki span[style*="--shiki-light:#6E7781"],\n.astro-code span[style*="--shiki-light:#6E7781"] {\n --shiki-light: #576069 !important;\n}\n', "theme-mintlify.css": '/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/format-astro (themeCss("mintlify")). Do not edit. */\n@custom-variant dark (&:where(.dark, .dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n /* Sidebar */\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n /* Admonition colors */\n --color-note: var(--note);\n --color-note-foreground: var(--note-foreground);\n --color-abstract: var(--abstract);\n --color-info: var(--info);\n --color-tip: var(--tip);\n --color-success: var(--success);\n --color-question: var(--question);\n --color-warning: var(--warning);\n --color-failure: var(--failure);\n --color-danger: var(--danger);\n --color-bug: var(--bug);\n --color-example: var(--example);\n --color-quote: var(--quote);\n\n /* Code */\n --color-code-bg: var(--code-background);\n --color-code-fg: var(--code-foreground);\n\n /* API reference \u2014 HTTP method, type, status, role colors */\n --color-api-field: var(--api-field);\n --color-api-get: var(--api-get);\n --color-api-post: var(--api-post);\n --color-api-put: var(--api-put);\n --color-api-patch: var(--api-patch);\n --color-api-delete: var(--api-delete);\n --color-api-head: var(--api-head);\n --color-api-required: var(--api-required);\n --color-api-deprecated: var(--api-deprecated);\n --color-api-type-string: var(--api-type-string);\n --color-api-type-number: var(--api-type-number);\n --color-api-type-boolean: var(--api-type-boolean);\n --color-api-type-object: var(--api-type-object);\n --color-api-type-array: var(--api-type-array);\n --color-api-status-2xx: var(--api-status-2xx);\n --color-api-status-3xx: var(--api-status-3xx);\n --color-api-status-4xx: var(--api-status-4xx);\n --color-api-status-5xx: var(--api-status-5xx);\n\n /* Fonts */\n --font-sans: var(--font-sans);\n --font-mono: var(--font-code);\n --font-family-code: var(--font-code);\n}\n\n:root {\n --background: oklch(0.993 0.005 95);\n --foreground: oklch(0.15 0.01 260);\n --card: oklch(0.993 0.005 95);\n --card-foreground: oklch(0.15 0.01 260);\n --popover: oklch(0.993 0.005 95);\n --popover-foreground: oklch(0.15 0.01 260);\n --primary: oklch(0.15 0.01 260);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0.002 260);\n --secondary-foreground: oklch(0.15 0.01 260);\n --muted: oklch(0.97 0.002 260);\n --muted-foreground: oklch(0.45 0.01 260);\n --accent: oklch(0.97 0.002 260);\n --accent-foreground: oklch(0.15 0.01 260);\n --destructive: oklch(0.55 0.22 25);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.91 0.004 260);\n --input: oklch(0.91 0.004 260);\n --ring: oklch(0.7 0.01 260);\n --radius: 1rem;\n /* Callout colors \u2014 soft pastel backgrounds matching Mintlify */\n --note: oklch(0.62 0.18 260);\n --note-foreground: var(--foreground);\n --abstract: oklch(0.65 0.14 220);\n --info: oklch(0.65 0.14 230);\n --tip: oklch(0.65 0.16 155);\n --success: oklch(0.65 0.16 155);\n --question: oklch(0.7 0.15 270);\n --warning: oklch(0.7 0.15 75);\n --failure: oklch(0.6 0.2 25);\n --danger: oklch(0.55 0.22 25);\n --bug: oklch(0.55 0.22 350);\n --example: oklch(0.55 0.2 285);\n --quote: oklch(0.55 0 0);\n /* Sidebar */\n --sidebar: oklch(0.993 0.005 95);\n --sidebar-foreground: oklch(0.15 0.01 260);\n --sidebar-primary: oklch(0.15 0.01 260);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0.002 260);\n --sidebar-accent-foreground: oklch(0.15 0.01 260);\n --sidebar-border: oklch(0.93 0.004 260);\n --sidebar-ring: oklch(0.7 0.01 260);\n /* Code \u2014 light gray background, matching Mintlify\'s inline code */\n --code-background: oklch(0.96 0.003 260);\n --code-foreground: oklch(0.25 0.01 260);\n\n /* API reference \u2014 always-dark code panel */\n --api-panel-bg: oklch(0.145 0.014 253.833);\n --api-panel-fg: oklch(0.926 0.013 253.833);\n\n /* API semantic colors \u2014 HTTP methods, types, status codes */\n /* Light mode: darkened for WCAG AA on the 20%/10% tints. See .dark. */\n --api-get: oklch(0.435 0.095 162);\n --api-post: oklch(0.45 0.174 259);\n --api-put: oklch(0.455 0.105 63);\n --api-patch: oklch(0.455 0.13 45);\n --api-delete: oklch(0.45 0.179 22);\n --api-head: oklch(0.47 0.222 286);\n --api-required: oklch(0.45 0.179 22);\n --api-deprecated: oklch(0.455 0.105 63);\n /* A field name in an operation\'s description (`id`, `name`): the JSON\n key colour of the highlighted examples (github-light-default #0550ae). */\n --api-field: oklch(0.47 0.16 254);\n --api-type-string: oklch(0.435 0.095 162);\n --api-type-number: oklch(0.45 0.174 259);\n --api-type-boolean: oklch(0.455 0.105 63);\n --api-type-object: oklch(0.47 0.222 286);\n --api-type-array: oklch(0.455 0.13 45);\n --api-status-2xx: oklch(0.435 0.095 162);\n --api-status-3xx: oklch(0.45 0.174 259);\n --api-status-4xx: oklch(0.455 0.105 63);\n --api-status-5xx: oklch(0.45 0.179 22);\n\n /* Fonts \u2014 system sans for body, JetBrains Mono for code */\n --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n --font-heading: var(--font-sans);\n --font-code: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n}\n\n.dark {\n --background: oklch(0.16 0.01 260);\n --foreground: oklch(0.93 0.005 260);\n --card: oklch(0.18 0.01 260);\n --card-foreground: oklch(0.93 0.005 260);\n --popover: oklch(0.18 0.01 260);\n --popover-foreground: oklch(0.93 0.005 260);\n --primary: oklch(0.93 0.005 260);\n --primary-foreground: oklch(0.16 0.01 260);\n --secondary: oklch(0.22 0.008 260);\n --secondary-foreground: oklch(0.93 0.005 260);\n --muted: oklch(0.22 0.008 260);\n --muted-foreground: oklch(0.65 0.01 260);\n --accent: oklch(0.22 0.008 260);\n --accent-foreground: oklch(0.93 0.005 260);\n --destructive: oklch(0.65 0.2 25);\n --destructive-foreground: oklch(0.16 0.01 260);\n --border: oklch(0.28 0.008 260);\n --input: oklch(0.28 0.008 260);\n --ring: oklch(0.45 0.01 260);\n --note-foreground: var(--foreground);\n --sidebar: oklch(0.16 0.01 260);\n --sidebar-foreground: oklch(0.93 0.005 260);\n --sidebar-primary: oklch(0.55 0.2 260);\n --sidebar-primary-foreground: oklch(0.93 0.005 260);\n --sidebar-accent: oklch(0.22 0.008 260);\n --sidebar-accent-foreground: oklch(0.93 0.005 260);\n --sidebar-border: oklch(0.28 0.008 260);\n --sidebar-ring: oklch(0.45 0.01 260);\n --code-background: oklch(0.2 0.01 260);\n --code-foreground: oklch(0.9 0.01 260);\n\n /* API semantic colors \u2014 lightened for dark mode (AA on 20%/10% tints). */\n --api-get: oklch(0.720 0.135 162);\n --api-post: oklch(0.755 0.174 259);\n --api-put: oklch(0.745 0.15 63);\n --api-patch: oklch(0.725 0.18 45);\n --api-delete: oklch(0.805 0.194 22);\n --api-head: oklch(0.740 0.182 286);\n --api-required: oklch(0.805 0.194 22);\n --api-deprecated: oklch(0.745 0.15 63);\n --api-field: oklch(0.79 0.11 245); /* github-dark-default #79c0ff */\n --api-type-string: oklch(0.690 0.135 162);\n --api-type-number: oklch(0.725 0.174 259);\n --api-type-boolean: oklch(0.720 0.15 63);\n --api-type-object: oklch(0.740 0.182 286);\n --api-type-array: oklch(0.725 0.18 45);\n --api-status-2xx: oklch(0.720 0.135 162);\n --api-status-3xx: oklch(0.755 0.174 259);\n --api-status-4xx: oklch(0.770 0.15 63);\n --api-status-5xx: oklch(0.805 0.194 22);\n}\n\n@layer base {\n * { @apply border-border outline-ring/50; }\n body { @apply bg-background text-foreground font-sans; }\n}\n\n/* Shiki dual-theme: light by default, dark when .dark class is active */\n.shiki,\n.shiki span,\n.astro-code,\n.astro-code span {\n color: var(--shiki-light) !important;\n}\n.shiki,\n.astro-code {\n background-color: var(--shiki-light-bg) !important;\n}\n.dark .shiki,\n.dark .shiki span,\n.dark .astro-code,\n.dark .astro-code span {\n color: var(--shiki-dark) !important;\n}\n.dark .shiki,\n.dark .astro-code {\n background-color: var(--shiki-dark-bg) !important;\n}\n/* Fix comment color contrast for WCAG AA */\n.shiki span[style*="--shiki-light:#6E7781"],\n.astro-code span[style*="--shiki-light:#6E7781"] {\n --shiki-light: #576069 !important;\n}\n', "image-zoom.css": "/* Generated by scripts/sync-astro-styles.mjs from @dogsbay/plugin-image-zoom styles.css. Do not edit. */\n/**\n * Styles shipped by @dogsbay/plugin-image-zoom.\n *\n * Imported into the user's `src/styles/global.css` by `dogsbay\n * site build` via the plugin runtime emitter.\n */\n\n[data-zoomable] {\n cursor: zoom-in;\n transition: transform 200ms ease;\n}\n\n.medium-zoom-overlay {\n z-index: 100;\n}\n\n.medium-zoom-image {\n cursor: zoom-out;\n z-index: 101;\n}\n\n.medium-zoom--opened [data-zoomable] {\n cursor: default;\n}\n", "ssg.css": `/*
|
|
226
|
+
`, "steps.css": `/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/ui Steps.astro, SubSteps.astro. Do not edit. */
|
|
227
|
+
|
|
228
|
+
.steps-list {
|
|
229
|
+
position: relative;
|
|
230
|
+
padding-left: 1.75rem;
|
|
231
|
+
counter-reset: step;
|
|
232
|
+
list-style: none;
|
|
233
|
+
margin: 0;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.steps-list > li {
|
|
237
|
+
position: relative;
|
|
238
|
+
padding-bottom: 1.5rem;
|
|
239
|
+
counter-increment: step;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.steps-list > li:last-child {
|
|
243
|
+
padding-bottom: 0;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* Numbered circle */
|
|
247
|
+
.steps-list > li::before {
|
|
248
|
+
content: counter(step);
|
|
249
|
+
position: absolute;
|
|
250
|
+
left: -1.75rem;
|
|
251
|
+
display: flex;
|
|
252
|
+
align-items: center;
|
|
253
|
+
justify-content: center;
|
|
254
|
+
width: 1.5rem;
|
|
255
|
+
height: 1.5rem;
|
|
256
|
+
border-radius: 9999px;
|
|
257
|
+
border: 2px solid var(--color-border);
|
|
258
|
+
background: var(--color-background);
|
|
259
|
+
color: var(--color-foreground);
|
|
260
|
+
font-size: 0.75rem;
|
|
261
|
+
font-weight: 600;
|
|
262
|
+
line-height: 1;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* Connector line */
|
|
266
|
+
.steps-list > li:not(:last-child)::after {
|
|
267
|
+
content: "";
|
|
268
|
+
position: absolute;
|
|
269
|
+
left: calc(-1.75rem + 0.6875rem);
|
|
270
|
+
top: 1.75rem;
|
|
271
|
+
bottom: 0;
|
|
272
|
+
width: 1px;
|
|
273
|
+
background: var(--color-border);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/* Sub-steps: nested ol inside li */
|
|
277
|
+
.steps-list > li ol {
|
|
278
|
+
position: relative;
|
|
279
|
+
padding-left: 1.5rem;
|
|
280
|
+
counter-reset: substep;
|
|
281
|
+
list-style: none;
|
|
282
|
+
margin: 0.75rem 0 0 0;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.steps-list > li ol > li {
|
|
286
|
+
position: relative;
|
|
287
|
+
padding-bottom: 1rem;
|
|
288
|
+
counter-increment: substep;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.steps-list > li ol > li:last-child {
|
|
292
|
+
padding-bottom: 0;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/* Lettered circle (a, b, c) */
|
|
296
|
+
.steps-list > li ol > li::before {
|
|
297
|
+
content: counter(substep, lower-alpha);
|
|
298
|
+
position: absolute;
|
|
299
|
+
left: -1.5rem;
|
|
300
|
+
display: flex;
|
|
301
|
+
align-items: center;
|
|
302
|
+
justify-content: center;
|
|
303
|
+
width: 1.25rem;
|
|
304
|
+
height: 1.25rem;
|
|
305
|
+
border-radius: 9999px;
|
|
306
|
+
border: 1.5px solid var(--color-border);
|
|
307
|
+
background: var(--color-background);
|
|
308
|
+
color: var(--color-muted-foreground, #737373);
|
|
309
|
+
font-size: 0.625rem;
|
|
310
|
+
font-weight: 600;
|
|
311
|
+
line-height: 1;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/* Sub-step connector line */
|
|
315
|
+
.steps-list > li ol > li:not(:last-child)::after {
|
|
316
|
+
content: "";
|
|
317
|
+
position: absolute;
|
|
318
|
+
left: calc(-1.5rem + 0.5625rem);
|
|
319
|
+
top: 1.5rem;
|
|
320
|
+
bottom: 0;
|
|
321
|
+
width: 1px;
|
|
322
|
+
background: var(--color-border);
|
|
323
|
+
opacity: 0.6;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* A step's title on its own line, above its detail (format-astro and render-html mark it) */
|
|
327
|
+
.steps-list > li > .step-title {
|
|
328
|
+
display: block;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
.sub-steps-list {
|
|
333
|
+
position: relative;
|
|
334
|
+
padding-left: 1.5rem;
|
|
335
|
+
counter-reset: substep;
|
|
336
|
+
list-style: none;
|
|
337
|
+
margin: 0.75rem 0 0 0;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.sub-steps-list > li {
|
|
341
|
+
position: relative;
|
|
342
|
+
padding-bottom: 1rem;
|
|
343
|
+
counter-increment: substep;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.sub-steps-list > li:last-child {
|
|
347
|
+
padding-bottom: 0;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* Lettered circle (a, b, c) */
|
|
351
|
+
.sub-steps-list > li::before {
|
|
352
|
+
content: counter(substep, lower-alpha);
|
|
353
|
+
position: absolute;
|
|
354
|
+
left: -1.5rem;
|
|
355
|
+
display: flex;
|
|
356
|
+
align-items: center;
|
|
357
|
+
justify-content: center;
|
|
358
|
+
width: 1.25rem;
|
|
359
|
+
height: 1.25rem;
|
|
360
|
+
border-radius: 9999px;
|
|
361
|
+
border: 1.5px solid var(--color-border);
|
|
362
|
+
background: var(--color-background);
|
|
363
|
+
color: var(--color-muted-foreground, #737373);
|
|
364
|
+
font-size: 0.625rem;
|
|
365
|
+
font-weight: 600;
|
|
366
|
+
line-height: 1;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/* Connector line (thinner) */
|
|
370
|
+
.sub-steps-list > li:not(:last-child)::after {
|
|
371
|
+
content: "";
|
|
372
|
+
position: absolute;
|
|
373
|
+
left: calc(-1.5rem + 0.5625rem);
|
|
374
|
+
top: 1.5rem;
|
|
375
|
+
bottom: 0;
|
|
376
|
+
width: 1px;
|
|
377
|
+
background: var(--color-border);
|
|
378
|
+
opacity: 0.6;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/* A step's title on its own line, above its detail (format-astro and render-html mark it) */
|
|
382
|
+
.sub-steps-list > li > .step-title {
|
|
383
|
+
display: block;
|
|
384
|
+
}
|
|
385
|
+
`, "theme-default.css": '/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/format-astro (themeCss("default")). Do not edit. */\n@custom-variant dark (&:where(.dark, .dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n /* Sidebar */\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n /* Admonition colors */\n --color-note: var(--note);\n --color-note-foreground: var(--note-foreground);\n --color-abstract: var(--abstract);\n --color-info: var(--info);\n --color-tip: var(--tip);\n --color-success: var(--success);\n --color-question: var(--question);\n --color-warning: var(--warning);\n --color-failure: var(--failure);\n --color-danger: var(--danger);\n --color-bug: var(--bug);\n --color-example: var(--example);\n --color-quote: var(--quote);\n\n /* Code */\n --color-code-bg: var(--code-background);\n --color-code-fg: var(--code-foreground);\n\n /* API reference \u2014 HTTP method, type, status, role colors */\n --color-api-field: var(--api-field);\n --color-api-get: var(--api-get);\n --color-api-post: var(--api-post);\n --color-api-put: var(--api-put);\n --color-api-patch: var(--api-patch);\n --color-api-delete: var(--api-delete);\n --color-api-head: var(--api-head);\n --color-api-required: var(--api-required);\n --color-api-deprecated: var(--api-deprecated);\n --color-api-type-string: var(--api-type-string);\n --color-api-type-number: var(--api-type-number);\n --color-api-type-boolean: var(--api-type-boolean);\n --color-api-type-object: var(--api-type-object);\n --color-api-type-array: var(--api-type-array);\n --color-api-status-2xx: var(--api-status-2xx);\n --color-api-status-3xx: var(--api-status-3xx);\n --color-api-status-4xx: var(--api-status-4xx);\n --color-api-status-5xx: var(--api-status-5xx);\n\n /* Fonts */\n --font-sans: var(--font-sans);\n --font-mono: var(--font-code);\n --font-family-code: var(--font-code);\n}\n\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0.014 285.823);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0.014 285.823);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0.014 285.823);\n --primary: oklch(0.205 0.014 285.823);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.965 0.001 286.375);\n --secondary-foreground: oklch(0.205 0.014 285.823);\n --muted: oklch(0.965 0.001 286.375);\n --muted-foreground: oklch(0.45 0.014 285.938);\n --accent: oklch(0.965 0.001 286.375);\n --accent-foreground: oklch(0.205 0.014 285.823);\n --destructive: oklch(0.45 0.245 27.325);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.922 0.004 286.32);\n --input: oklch(0.922 0.004 286.32);\n --ring: oklch(0.708 0.014 285.823);\n --radius: 0.625rem;\n --note: oklch(0.637 0.174 259.126);\n --note-foreground: var(--foreground);\n --abstract: oklch(0.691 0.148 221.723);\n --info: oklch(0.722 0.128 207.084);\n --tip: oklch(0.731 0.112 178.627);\n --success: oklch(0.754 0.175 149.577);\n --question: oklch(0.809 0.19 126.526);\n --warning: oklch(0.74 0.175 62.778);\n --failure: oklch(0.614 0.194 21.602);\n --danger: oklch(0.577 0.245 16.439);\n --bug: oklch(0.548 0.258 349.761);\n --example: oklch(0.534 0.222 286.033);\n --quote: oklch(0.65 0 0);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0.014 285.823);\n --sidebar-primary: oklch(0.205 0.014 285.823);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.965 0.001 286.375);\n --sidebar-accent-foreground: oklch(0.205 0.014 285.823);\n --sidebar-border: oklch(0.922 0.004 286.32);\n --sidebar-ring: oklch(0.708 0.014 285.823);\n --code-background: oklch(0.965 0.004 264);\n --code-foreground: oklch(0.3 0.014 253.833);\n\n /* API reference \u2014 always-dark code panel */\n --api-panel-bg: oklch(0.145 0.014 253.833);\n --api-panel-fg: oklch(0.926 0.013 253.833);\n\n /* API semantic colors \u2014 HTTP methods, types, status codes */\n /* Light mode: darkened for WCAG AA on the 20%/10% tints. See .dark. */\n --api-get: oklch(0.435 0.095 162);\n --api-post: oklch(0.45 0.174 259);\n --api-put: oklch(0.455 0.105 63);\n --api-patch: oklch(0.455 0.13 45);\n --api-delete: oklch(0.45 0.179 22);\n --api-head: oklch(0.47 0.222 286);\n --api-required: oklch(0.45 0.179 22);\n --api-deprecated: oklch(0.455 0.105 63);\n /* A field name in an operation\'s description (`id`, `name`): the JSON\n key colour of the highlighted examples (github-light-default #0550ae). */\n --api-field: oklch(0.47 0.16 254);\n --api-type-string: oklch(0.435 0.095 162);\n --api-type-number: oklch(0.45 0.174 259);\n --api-type-boolean: oklch(0.455 0.105 63);\n --api-type-object: oklch(0.47 0.222 286);\n --api-type-array: oklch(0.455 0.13 45);\n --api-status-2xx: oklch(0.435 0.095 162);\n --api-status-3xx: oklch(0.45 0.174 259);\n --api-status-4xx: oklch(0.455 0.105 63);\n --api-status-5xx: oklch(0.45 0.179 22);\n\n --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n --font-heading: var(--font-sans);\n --font-code: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;\n}\n\n.dark {\n --background: oklch(0.145 0.014 285.823);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.145 0.014 285.823);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.145 0.014 285.823);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.985 0 0);\n --primary-foreground: oklch(0.205 0.014 285.823);\n --secondary: oklch(0.269 0.007 286.033);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0.007 286.033);\n --muted-foreground: oklch(0.708 0.014 285.823);\n --accent: oklch(0.269 0.007 286.033);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --destructive-foreground: oklch(0.145 0.014 285.823);\n --border: oklch(0.269 0.007 286.033);\n --input: oklch(0.269 0.007 286.033);\n --ring: oklch(0.439 0.01 286.375);\n --note-foreground: var(--foreground);\n --sidebar: oklch(0.205 0.014 285.823);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0.007 286.033);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.269 0.007 286.033);\n --sidebar-ring: oklch(0.439 0.01 286.375);\n --code-background: oklch(0.18 0.014 253.833);\n --code-foreground: oklch(0.926 0.013 253.833);\n\n /* API semantic colors \u2014 lightened for dark mode (AA on 20%/10% tints). */\n --api-get: oklch(0.720 0.135 162);\n --api-post: oklch(0.755 0.174 259);\n --api-put: oklch(0.745 0.15 63);\n --api-patch: oklch(0.725 0.18 45);\n --api-delete: oklch(0.805 0.194 22);\n --api-head: oklch(0.740 0.182 286);\n --api-required: oklch(0.805 0.194 22);\n --api-deprecated: oklch(0.745 0.15 63);\n --api-field: oklch(0.79 0.11 245); /* github-dark-default #79c0ff */\n --api-type-string: oklch(0.690 0.135 162);\n --api-type-number: oklch(0.725 0.174 259);\n --api-type-boolean: oklch(0.720 0.15 63);\n --api-type-object: oklch(0.740 0.182 286);\n --api-type-array: oklch(0.725 0.18 45);\n --api-status-2xx: oklch(0.720 0.135 162);\n --api-status-3xx: oklch(0.755 0.174 259);\n --api-status-4xx: oklch(0.770 0.15 63);\n --api-status-5xx: oklch(0.805 0.194 22);\n}\n\n@layer base {\n * { @apply border-border outline-ring/50; }\n body { @apply bg-background text-foreground font-sans; }\n}\n\n/* Shiki dual-theme: light by default, dark when .dark class is active */\n.shiki,\n.shiki span,\n.astro-code,\n.astro-code span {\n color: var(--shiki-light) !important;\n}\n.shiki,\n.astro-code {\n background-color: var(--shiki-light-bg) !important;\n}\n.dark .shiki,\n.dark .shiki span,\n.dark .astro-code,\n.dark .astro-code span {\n color: var(--shiki-dark) !important;\n}\n.dark .shiki,\n.dark .astro-code {\n background-color: var(--shiki-dark-bg) !important;\n}\n/* Fix comment color contrast for WCAG AA */\n.shiki span[style*="--shiki-light:#6E7781"],\n.astro-code span[style*="--shiki-light:#6E7781"] {\n --shiki-light: #576069 !important;\n}\n', "theme-mintlify.css": '/* Generated by packages/render-html/scripts/sync-sources.mjs from @dogsbay/format-astro (themeCss("mintlify")). Do not edit. */\n@custom-variant dark (&:where(.dark, .dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n /* Sidebar */\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n /* Admonition colors */\n --color-note: var(--note);\n --color-note-foreground: var(--note-foreground);\n --color-abstract: var(--abstract);\n --color-info: var(--info);\n --color-tip: var(--tip);\n --color-success: var(--success);\n --color-question: var(--question);\n --color-warning: var(--warning);\n --color-failure: var(--failure);\n --color-danger: var(--danger);\n --color-bug: var(--bug);\n --color-example: var(--example);\n --color-quote: var(--quote);\n\n /* Code */\n --color-code-bg: var(--code-background);\n --color-code-fg: var(--code-foreground);\n\n /* API reference \u2014 HTTP method, type, status, role colors */\n --color-api-field: var(--api-field);\n --color-api-get: var(--api-get);\n --color-api-post: var(--api-post);\n --color-api-put: var(--api-put);\n --color-api-patch: var(--api-patch);\n --color-api-delete: var(--api-delete);\n --color-api-head: var(--api-head);\n --color-api-required: var(--api-required);\n --color-api-deprecated: var(--api-deprecated);\n --color-api-type-string: var(--api-type-string);\n --color-api-type-number: var(--api-type-number);\n --color-api-type-boolean: var(--api-type-boolean);\n --color-api-type-object: var(--api-type-object);\n --color-api-type-array: var(--api-type-array);\n --color-api-status-2xx: var(--api-status-2xx);\n --color-api-status-3xx: var(--api-status-3xx);\n --color-api-status-4xx: var(--api-status-4xx);\n --color-api-status-5xx: var(--api-status-5xx);\n\n /* Fonts */\n --font-sans: var(--font-sans);\n --font-mono: var(--font-code);\n --font-family-code: var(--font-code);\n}\n\n:root {\n --background: oklch(0.993 0.005 95);\n --foreground: oklch(0.15 0.01 260);\n --card: oklch(0.993 0.005 95);\n --card-foreground: oklch(0.15 0.01 260);\n --popover: oklch(0.993 0.005 95);\n --popover-foreground: oklch(0.15 0.01 260);\n --primary: oklch(0.15 0.01 260);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0.002 260);\n --secondary-foreground: oklch(0.15 0.01 260);\n --muted: oklch(0.97 0.002 260);\n --muted-foreground: oklch(0.45 0.01 260);\n --accent: oklch(0.97 0.002 260);\n --accent-foreground: oklch(0.15 0.01 260);\n --destructive: oklch(0.55 0.22 25);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.91 0.004 260);\n --input: oklch(0.91 0.004 260);\n --ring: oklch(0.7 0.01 260);\n --radius: 1rem;\n /* Callout colors \u2014 soft pastel backgrounds matching Mintlify */\n --note: oklch(0.62 0.18 260);\n --note-foreground: var(--foreground);\n --abstract: oklch(0.65 0.14 220);\n --info: oklch(0.65 0.14 230);\n --tip: oklch(0.65 0.16 155);\n --success: oklch(0.65 0.16 155);\n --question: oklch(0.7 0.15 270);\n --warning: oklch(0.7 0.15 75);\n --failure: oklch(0.6 0.2 25);\n --danger: oklch(0.55 0.22 25);\n --bug: oklch(0.55 0.22 350);\n --example: oklch(0.55 0.2 285);\n --quote: oklch(0.55 0 0);\n /* Sidebar */\n --sidebar: oklch(0.993 0.005 95);\n --sidebar-foreground: oklch(0.15 0.01 260);\n --sidebar-primary: oklch(0.15 0.01 260);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0.002 260);\n --sidebar-accent-foreground: oklch(0.15 0.01 260);\n --sidebar-border: oklch(0.93 0.004 260);\n --sidebar-ring: oklch(0.7 0.01 260);\n /* Code \u2014 light gray background, matching Mintlify\'s inline code */\n --code-background: oklch(0.96 0.003 260);\n --code-foreground: oklch(0.25 0.01 260);\n\n /* API reference \u2014 always-dark code panel */\n --api-panel-bg: oklch(0.145 0.014 253.833);\n --api-panel-fg: oklch(0.926 0.013 253.833);\n\n /* API semantic colors \u2014 HTTP methods, types, status codes */\n /* Light mode: darkened for WCAG AA on the 20%/10% tints. See .dark. */\n --api-get: oklch(0.435 0.095 162);\n --api-post: oklch(0.45 0.174 259);\n --api-put: oklch(0.455 0.105 63);\n --api-patch: oklch(0.455 0.13 45);\n --api-delete: oklch(0.45 0.179 22);\n --api-head: oklch(0.47 0.222 286);\n --api-required: oklch(0.45 0.179 22);\n --api-deprecated: oklch(0.455 0.105 63);\n /* A field name in an operation\'s description (`id`, `name`): the JSON\n key colour of the highlighted examples (github-light-default #0550ae). */\n --api-field: oklch(0.47 0.16 254);\n --api-type-string: oklch(0.435 0.095 162);\n --api-type-number: oklch(0.45 0.174 259);\n --api-type-boolean: oklch(0.455 0.105 63);\n --api-type-object: oklch(0.47 0.222 286);\n --api-type-array: oklch(0.455 0.13 45);\n --api-status-2xx: oklch(0.435 0.095 162);\n --api-status-3xx: oklch(0.45 0.174 259);\n --api-status-4xx: oklch(0.455 0.105 63);\n --api-status-5xx: oklch(0.45 0.179 22);\n\n /* Fonts \u2014 system sans for body, JetBrains Mono for code */\n --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n --font-heading: var(--font-sans);\n --font-code: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n}\n\n.dark {\n --background: oklch(0.16 0.01 260);\n --foreground: oklch(0.93 0.005 260);\n --card: oklch(0.18 0.01 260);\n --card-foreground: oklch(0.93 0.005 260);\n --popover: oklch(0.18 0.01 260);\n --popover-foreground: oklch(0.93 0.005 260);\n --primary: oklch(0.93 0.005 260);\n --primary-foreground: oklch(0.16 0.01 260);\n --secondary: oklch(0.22 0.008 260);\n --secondary-foreground: oklch(0.93 0.005 260);\n --muted: oklch(0.22 0.008 260);\n --muted-foreground: oklch(0.65 0.01 260);\n --accent: oklch(0.22 0.008 260);\n --accent-foreground: oklch(0.93 0.005 260);\n --destructive: oklch(0.65 0.2 25);\n --destructive-foreground: oklch(0.16 0.01 260);\n --border: oklch(0.28 0.008 260);\n --input: oklch(0.28 0.008 260);\n --ring: oklch(0.45 0.01 260);\n --note-foreground: var(--foreground);\n --sidebar: oklch(0.16 0.01 260);\n --sidebar-foreground: oklch(0.93 0.005 260);\n --sidebar-primary: oklch(0.55 0.2 260);\n --sidebar-primary-foreground: oklch(0.93 0.005 260);\n --sidebar-accent: oklch(0.22 0.008 260);\n --sidebar-accent-foreground: oklch(0.93 0.005 260);\n --sidebar-border: oklch(0.28 0.008 260);\n --sidebar-ring: oklch(0.45 0.01 260);\n --code-background: oklch(0.2 0.01 260);\n --code-foreground: oklch(0.9 0.01 260);\n\n /* API semantic colors \u2014 lightened for dark mode (AA on 20%/10% tints). */\n --api-get: oklch(0.720 0.135 162);\n --api-post: oklch(0.755 0.174 259);\n --api-put: oklch(0.745 0.15 63);\n --api-patch: oklch(0.725 0.18 45);\n --api-delete: oklch(0.805 0.194 22);\n --api-head: oklch(0.740 0.182 286);\n --api-required: oklch(0.805 0.194 22);\n --api-deprecated: oklch(0.745 0.15 63);\n --api-field: oklch(0.79 0.11 245); /* github-dark-default #79c0ff */\n --api-type-string: oklch(0.690 0.135 162);\n --api-type-number: oklch(0.725 0.174 259);\n --api-type-boolean: oklch(0.720 0.15 63);\n --api-type-object: oklch(0.740 0.182 286);\n --api-type-array: oklch(0.725 0.18 45);\n --api-status-2xx: oklch(0.720 0.135 162);\n --api-status-3xx: oklch(0.755 0.174 259);\n --api-status-4xx: oklch(0.770 0.15 63);\n --api-status-5xx: oklch(0.805 0.194 22);\n}\n\n@layer base {\n * { @apply border-border outline-ring/50; }\n body { @apply bg-background text-foreground font-sans; }\n}\n\n/* Shiki dual-theme: light by default, dark when .dark class is active */\n.shiki,\n.shiki span,\n.astro-code,\n.astro-code span {\n color: var(--shiki-light) !important;\n}\n.shiki,\n.astro-code {\n background-color: var(--shiki-light-bg) !important;\n}\n.dark .shiki,\n.dark .shiki span,\n.dark .astro-code,\n.dark .astro-code span {\n color: var(--shiki-dark) !important;\n}\n.dark .shiki,\n.dark .astro-code {\n background-color: var(--shiki-dark-bg) !important;\n}\n/* Fix comment color contrast for WCAG AA */\n.shiki span[style*="--shiki-light:#6E7781"],\n.astro-code span[style*="--shiki-light:#6E7781"] {\n --shiki-light: #576069 !important;\n}\n', "image-zoom.css": "/* Generated by scripts/sync-astro-styles.mjs from @dogsbay/plugin-image-zoom styles.css. Do not edit. */\n/**\n * Styles shipped by @dogsbay/plugin-image-zoom.\n *\n * Imported into the user's `src/styles/global.css` by `dogsbay\n * site build` via the plugin runtime emitter.\n */\n\n[data-zoomable] {\n cursor: zoom-in;\n transition: transform 200ms ease;\n}\n\n.medium-zoom-overlay {\n z-index: 100;\n}\n\n.medium-zoom-image {\n cursor: zoom-out;\n z-index: 101;\n}\n\n.medium-zoom--opened [data-zoomable] {\n cursor: default;\n}\n", "ssg.css": `/*
|
|
224
386
|
* dogsbay-ssg additions to the Astro styles (docs.css, theme-*.css).
|
|
225
387
|
*
|
|
226
388
|
* Parts that elements create at run time (lazy nav rows, the select's
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The build. Pure and in-memory: files in, files out. Nothing here
|
|
3
|
+
* touches a filesystem, so the same code runs in Node, a browser and
|
|
4
|
+
* a Cloudflare Worker.
|
|
5
|
+
*
|
|
6
|
+
* Memory: pages are processed one at a time in two passes. Pass 1
|
|
7
|
+
* reads only front matter (titles for the nav); pass 2 templates,
|
|
8
|
+
* parses, renders and emits each page, then drops its tree. Only the
|
|
9
|
+
* search postings and a few short strings per page (for llms.txt, the
|
|
10
|
+
* sitemap and redirect checks) grow with the site.
|
|
11
|
+
*/
|
|
12
|
+
import { type ParseDiagnostic } from "@dogsbay/format-dogsbay-md/browser";
|
|
1
13
|
import { type DefaultTable } from "./canonical.js";
|
|
2
14
|
import type { TreeNode } from "@dogsbay/types";
|
|
3
15
|
import type { Highlighter } from "@dogsbay/highlight";
|
|
@@ -195,11 +207,69 @@ export interface BuildStats {
|
|
|
195
207
|
export interface BuildResult {
|
|
196
208
|
files: Map<string, OutputContent>;
|
|
197
209
|
warnings: string[];
|
|
210
|
+
/** The warnings as data, one per warning, in the same order. */
|
|
211
|
+
problems: BuildProblem[];
|
|
198
212
|
stats: BuildStats;
|
|
199
213
|
config: SiteConfig;
|
|
200
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* A warning as data (plans/playground-asks.md), for a host that shows it by its file: the
|
|
217
|
+
* playground's problem list. `text` is the warning as `warnings` has it and the CLI prints it.
|
|
218
|
+
*/
|
|
219
|
+
export interface BuildProblem {
|
|
220
|
+
/** Its kind: `template`, `parse`, `front-matter`, `link`, `nav`, `icon`… (stable, for filtering). */
|
|
221
|
+
code: string;
|
|
222
|
+
/** The unit's prefix (`/` for the root unit), for a unit's warning. */
|
|
223
|
+
unit?: string;
|
|
224
|
+
/** The project path of the file it is about (`content/guide/a.md`), when it is about one. */
|
|
225
|
+
file?: string;
|
|
226
|
+
/** 1-based, in `file`. */
|
|
227
|
+
line?: number;
|
|
228
|
+
column?: number;
|
|
229
|
+
/** The warning without its `[unit]` and file. */
|
|
230
|
+
message: string;
|
|
231
|
+
text: string;
|
|
232
|
+
}
|
|
233
|
+
/** Where a warning is, and its message when the text says more (a file first). */
|
|
234
|
+
type ProblemAt = Partial<Omit<BuildProblem, "code" | "text">>;
|
|
235
|
+
/** Adds a warning: its text to `warnings`, and the problem. */
|
|
236
|
+
export type Report = (code: string, text: string, at?: ProblemAt) => void;
|
|
237
|
+
/**
|
|
238
|
+
* What the parser recovered from on a page (an unclosed `:::`, an unknown directive), its front
|
|
239
|
+
* matter that does not parse, or its template error. `line` is 1-based in the page's file, front
|
|
240
|
+
* matter counted; none when it is not known (a problem only in text an include or a variable put
|
|
241
|
+
* there, or a template error).
|
|
242
|
+
*/
|
|
243
|
+
export interface PageDiagnostic {
|
|
244
|
+
code: string;
|
|
245
|
+
message: string;
|
|
246
|
+
line?: number;
|
|
247
|
+
/** The directive's name, without colons, on `unknown-container` and `unknown-inline`. */
|
|
248
|
+
name?: string;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* The parser's diagnostics on `parsed` (the body after templating) with lines in the file: `line`,
|
|
252
|
+
* and the lines its message names ("opened on line 3"). Untemplated, the body's lines are the file's
|
|
253
|
+
* after the front matter. Templated, lines can move: a diagnostic the body as written also has takes
|
|
254
|
+
* that one's lines; one only the templated text has has no `line`, and its message says the lines
|
|
255
|
+
* it names are the templated page's. Messages are detached (a session keeps them; some quote a line).
|
|
256
|
+
*/
|
|
257
|
+
export declare function linedDiagnostics(found: ParseDiagnostic[], raw: string, body: string, parsed: string): PageDiagnostic[];
|
|
201
258
|
/** A file's text, read now if it is lazy. */
|
|
202
259
|
export declare function readText(c: FileContent): Promise<string>;
|
|
260
|
+
/**
|
|
261
|
+
* Whether a file that is not a page is copied to the site: nothing under a dot folder and no dot
|
|
262
|
+
* file (`.env`, `.github/`), except under a `.gitbook/` folder, at any depth, where GitBook keeps a
|
|
263
|
+
* space's images (`.gitbook/assets/`). @dogsbay/detect and the playground's import make the same
|
|
264
|
+
* folder exception (detect also keeps dot files, such as `.gitbook.yaml`, which it reads).
|
|
265
|
+
*/
|
|
266
|
+
export declare const copiedPath: (p: string) => boolean;
|
|
267
|
+
/**
|
|
268
|
+
* Whether a file `copiedPath` lets through is copied: an untrusted build takes only passive files
|
|
269
|
+
* and no host configuration ("untrusted"), a sanitizing one no HTML, XML or script ("active").
|
|
270
|
+
* The dev session's changed assets go through it too.
|
|
271
|
+
*/
|
|
272
|
+
export declare function assetVerdict(p: string, c: FileContent, untrusted: boolean, sanitizing: boolean): Promise<"copy" | "untrusted" | "active">;
|
|
203
273
|
type Emit = (path: string, content: FileContent | TextStream) => Promise<void>;
|
|
204
274
|
/** A built unit, kept by a dev session to render its pages again. */
|
|
205
275
|
export interface UnitHandle {
|
|
@@ -230,9 +300,12 @@ export interface BuildContext {
|
|
|
230
300
|
highlighter: Highlighter;
|
|
231
301
|
emit: Emit;
|
|
232
302
|
warnings: string[];
|
|
303
|
+
problems: BuildProblem[];
|
|
304
|
+
report: Report;
|
|
233
305
|
phase: Record<string, number>;
|
|
234
306
|
theme: LoadedTheme;
|
|
235
307
|
state: SiteState;
|
|
308
|
+
diagnostics?: BuildHooks["diagnostics"];
|
|
236
309
|
}
|
|
237
310
|
/** Internal: a dev session's view of a build (see src/core/dev.ts). */
|
|
238
311
|
export interface BuildHooks {
|
|
@@ -241,6 +314,11 @@ export interface BuildHooks {
|
|
|
241
314
|
/** Render no content pages (they are rendered on request); implies keep. */
|
|
242
315
|
lazy?: boolean;
|
|
243
316
|
context?: (ctx: BuildContext) => void;
|
|
317
|
+
/**
|
|
318
|
+
* Parse each page with the parser's diagnostics, and hand them over as it renders: its project
|
|
319
|
+
* path, and the list (empty when it has none, so a fixed page clears).
|
|
320
|
+
*/
|
|
321
|
+
diagnostics?: (file: string, list: PageDiagnostic[]) => void;
|
|
244
322
|
unitBuilt?: (unit: BuildUnit, handle: UnitHandle, classes: Set<string>) => void;
|
|
245
323
|
}
|
|
246
324
|
/** Build one unit again without rendering its pages (they are rendered on request). */
|
|
@@ -21,18 +21,33 @@
|
|
|
21
21
|
* Node-free: the dev server (src/node/dev.ts) owns the file map and the
|
|
22
22
|
* watcher, and updates `input.files` before calling `change`.
|
|
23
23
|
*/
|
|
24
|
-
import { type BuildInput, type OutputContent } from "./build.js";
|
|
24
|
+
import { type BuildProblem, type PageDiagnostic, type BuildInput, type OutputContent } from "./build.js";
|
|
25
25
|
import { type SiteConfig } from "./config.js";
|
|
26
26
|
export interface DevSession {
|
|
27
27
|
config: SiteConfig;
|
|
28
28
|
/** A built file by its path in the site (`guide/install.html`), rendering it first when stale. */
|
|
29
29
|
get(path: string): Promise<OutputContent | undefined>;
|
|
30
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Paths (relative to the project) that changed, were added or were removed; `input.files` is
|
|
32
|
+
* already updated. It does not throw: a change that fails sets `buildError` (and `buildProblem`)
|
|
33
|
+
* and resolves `{ css: false }`, and the last good site stays served.
|
|
34
|
+
*/
|
|
31
35
|
change(paths: string[]): Promise<{
|
|
32
36
|
css: boolean;
|
|
33
37
|
}>;
|
|
34
38
|
/** Warnings not handed out yet (the start's, then those of each change and page render). */
|
|
35
39
|
takeWarnings(): string[];
|
|
40
|
+
/**
|
|
41
|
+
* The same warnings as data, not handed out yet (its own count: taking one kind leaves the other):
|
|
42
|
+
* the file each is about as a project path, with its line when known, and a code.
|
|
43
|
+
*/
|
|
44
|
+
takeProblems(): BuildProblem[];
|
|
45
|
+
/**
|
|
46
|
+
* A page's diagnostics, by its source file (a project path): what the parser recovered from, its
|
|
47
|
+
* front matter that does not parse, its template error, with lines in the file. A page not
|
|
48
|
+
* rendered since its last change is rendered first. Empty for a file that is no page.
|
|
49
|
+
*/
|
|
50
|
+
diagnostics(source: string): Promise<PageDiagnostic[]>;
|
|
36
51
|
/** The site path of the page built from a source file (relative to the project), if it is one. */
|
|
37
52
|
pageFor(source: string): string | undefined;
|
|
38
53
|
/** The source file (relative to the project) of a page, by its site path. */
|
|
@@ -44,6 +59,8 @@ export interface DevSession {
|
|
|
44
59
|
* whatever it is, so an edit elsewhere cannot hide the error.
|
|
45
60
|
*/
|
|
46
61
|
readonly buildError: string | undefined;
|
|
62
|
+
/** `buildError` as data: a config that does not parse names the config file, with its line and column. */
|
|
63
|
+
readonly buildProblem: BuildProblem | undefined;
|
|
47
64
|
}
|
|
48
65
|
/**
|
|
49
66
|
* By default every page is rendered at the start, as `build` does: search has its index and
|
|
@@ -20,6 +20,8 @@ export interface DiagramRenderer {
|
|
|
20
20
|
maxBatch?: number;
|
|
21
21
|
}
|
|
22
22
|
/** The renderers a host has, by engine (`content.diagrams` picks one). */
|
|
23
|
+
/** A diagram warning: the message, and the page it is on (its path in the unit), when it is one page's. */
|
|
24
|
+
export type DiagramWarn = (message: string, file?: string) => void;
|
|
23
25
|
export type DiagramRenderers = Partial<Record<DiagramEngine, DiagramRenderer>>;
|
|
24
26
|
/**
|
|
25
27
|
* The renderer a build uses: the configured engine's, else the other one the
|
|
@@ -81,9 +83,9 @@ export declare class DiagramStore {
|
|
|
81
83
|
* Pin the diagrams of pages that are built (`live`), and render those not
|
|
82
84
|
* rendered yet (for an earlier unit, say) in one call.
|
|
83
85
|
*/
|
|
84
|
-
flush(warn:
|
|
86
|
+
flush(warn: DiagramWarn, live: (file: string) => boolean): Promise<void>;
|
|
85
87
|
/** Before a page renders: keep its diagrams, and render those not in the store, in one call. */
|
|
86
|
-
ensure(codes: string[], file: string, warn:
|
|
88
|
+
ensure(codes: string[], file: string, warn: DiagramWarn): Promise<void>;
|
|
87
89
|
get(code: string): string | undefined;
|
|
88
90
|
private pin;
|
|
89
91
|
private put;
|
|
@@ -19,7 +19,7 @@ export declare function openDevSession(input: BuildInput & {
|
|
|
19
19
|
configText?: string;
|
|
20
20
|
}, o?: DevOptions): Promise<DevSession>;
|
|
21
21
|
export { prebuiltSiteCss };
|
|
22
|
-
export type { BuildInput, BuildResult, FileContent, OutputContent, SinkContent, SiteCssBuilder, BuiltPage, HighlightPool } from "../core/build.js";
|
|
22
|
+
export type { BuildInput, BuildResult, FileContent, OutputContent, SinkContent, SiteCssBuilder, BuiltPage, HighlightPool, BuildProblem, PageDiagnostic } from "../core/build.js";
|
|
23
23
|
export type { DevOptions, DevSession } from "../core/dev.js";
|
|
24
24
|
export { parseConfig, ConfigError, type SiteConfig, type DiagramEngine } from "../core/config.js";
|
|
25
25
|
export type { DiagramRenderer, DiagramRenderers, DiagramRequest, DiagramResult } from "../core/diagrams.js";
|