vantage-md 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","names":[],"sources":["../src/MarkdownViewer.tsx","../src/useLineAnchor.ts","../src/MermaidDiagram.tsx","../src/FrontmatterDisplay.tsx","../src/vantageDirectives.ts","../src/vantageFrontmatter.ts","../src/DocumentStatusChip.tsx","../src/renderMarkdown.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../src/rehypeSourceLines.ts","../src/pipeline.ts","../src/scrollToLineAnchor.ts","../src/lineAnchor.ts","../src/frontmatter.ts","../src/sanitize.ts","../src/renderMermaidBlocks.ts","../src/resolveLinks.ts"],"x_google_ignoreList":[8,9],"mappings":";;;;UAkBiB;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,cAAc;;qBA0MH,gBAAc,MAAA,qBAAA;;;;;;;;;;;;;;wBCzNX,cACd,cAAc,UAAU,qBACxB;;;;;UC+RQ;EACR;;qBAqPW,gBAAc,MAAA,qBAAA;;;UC/gBjB;EACR,aAAa;;qBAuIF,oBAAkB,MAAA,qBAAA;;;;;;;;;;cC9GlB;;;;;;;;;;;;;;qBCjBA;KAOD,oBAAoB;;qBAGnB;;;;;;;;;;qBAWA,kBAAkB,SAC7B,OAAO,mBAAmB;;;;;;;;KAehB;EACN;EAAqB;;EACrB;EAAqB;;EACrB;EAAmB;EAAa;EAAgB;;EAChD;EAA4B;;EAC5B;EAA+B,MAAM;EAAW;;UAErC;;EAEf,aAAa;;EAEb,QAAQ;;;wBAWM,YAAY,iBAAiB,SAAS;;;;;;;wBAsBtC,uBACd,aAAa,0BACZ;;;qBCjFU,oBAAkB,MAAA;EAZmB,QAAA;;;;;;;;UCXjC;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;UAGe;;EAEf;;EAEA,aAAa;;EAEb;;;;;;;;;;;;;;;;;;wBAmBoB,eACpB,iBACA,UAAS,gBACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;UCnCM;;;;UAKA;;;;EAIb;;;;EAKA;;;;EAIA;;;;;;;UAQa;;;;EAIb,OAAO;;;;EAKP,KAAK;;;;;;;;;;;;UA6BQ;;;;EAIb;;;;EAKA,OAAO;;;;;;;EAQP,WAAW;;;;;;;;;;;;;;;;;;;;;;;UChFE,aAAa;;;;UAKb;EACb;EACA,QAAQ;EACR;EACA,SAAS;EACT,gBAAgB;EAChB,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA,kBAAkB;EAClB;EACA;EACA,iBAAiB;EACjB;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,KAAK;EACL,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX,UAAU;EACV;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA,qBAAqB;EACrB,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EAClB;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;GACC,sEAAsE;;;;;;;;;KAW/D,iBAAiB,wBAAwB;;;;;;UAOpC;EACb,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;KASE,cAAc,qBAAqB;;;;;;;;;UAU9B;EACb,SAAS;EACT,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;;;;;;;;;UAsDO,aAAa;;;;EAI1B,OAAO;;;;;;;;;UAUM,gBAAgB;;;;EAI7B;;;;;;;;;UAUa,eAAe;;;;EAI5B,UAAU;;;;;;UAQG,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA;;;;EAIA,YAAY;;;;EAIZ,UAAU;;;;;EAKV,UAAU;;;;EAIV,OAAO;;;;;UAMM,oBAAoB;;;;;;;;UASpB,aAAa;;;;EAI1B;;;;EAIA,UAAU;;;;EAIV,OAAO;;;;;UAMM,iBAAiB;;;;UAKjB,aAAa;;;;EAI1B;;;;EAIA,OAAO;;;;;UAMM,iBAAiB;;;UCl3BjB;;;;;;;EAOf;;cAkBI,mBAAmB,QAAQ,4BAA4B;;;UCf5C;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;EAOA;;UAGe;EACf,eAAe;EACf,eAAe;;;;;;;;wBASD,mBACd,UAAS,kBACR;;;;;;;;;;;;;wBA+Ea,cAAc,UAAS,kBAAuB;;;;;;;;;;;;wBCrJ9C,0BAA0B,WAAW;;;;;;;;wBAarC,mBACd,WAAW,aACX;;;;;;;;;;;;;;;;wBCfc,gBACd;EACG;EAAe;;;;;;;;KCRR;;;;;;;;;;;;;;;;UAiBK;EACf;;EAEA;EACA;EACA;EACA;;UAGe;EACf,aAAa;EACb;EACA,QAAQ;;;;;;;;;;EAUR;;;;;;EAMA,UAAU;;;;;;wBAOI,iBAAiB,kBAAkB;;;KC3C9C,gBAAgB;;;;;;;;;;;;;qBAsLR,gBAAgB;;;;;;;;;;;;UC1LZ;;EAEf;;EAEA,WAAW,cAAc,OAAO;;;;;;;;;;;;;;;;;;;wBAoBZ,oBACpB,WAAW,aACX,UAAS,uBACR;;;;;;;;;;UChCc;;EAEf;;;;;;EAMA,YAAY,cAAc;;EAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2Bc,aACd,cACA,UAAS"}
1
+ {"version":3,"file":"react.d.ts","names":[],"sources":["../src/MarkdownViewer.tsx","../src/useLineAnchor.ts","../src/MermaidDiagram.tsx","../src/FrontmatterDisplay.tsx","../src/vantageDirectives.ts","../src/vantageFrontmatter.ts","../src/DocumentStatusChip.tsx","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../src/renderMarkdown.ts","../../../node_modules/@types/hast/index.d.ts","../src/rehypeSourceLines.ts","../src/pipeline.ts","../src/scrollToLineAnchor.ts","../src/lineAnchor.ts","../src/frontmatter.ts","../src/sanitize.ts","../src/renderMermaidBlocks.ts","../src/resolveLinks.ts"],"x_google_ignoreList":[7,8,10],"mappings":"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A;;EAEA;;EAEA;;;;;;;;;;;;;;;;;;;EAmBA,OAAO;;UAGQ;;EAEf;;EAEA,aAAa;;EAEb;;;;;;;;;;;;;;;;;;wBAmBoB,eACpB,iBACA,UAAS,gBACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;UCtDM,aAAa;;;;UAKb;EACb;EACA,QAAQ;EACR;EACA,SAAS;EACT,gBAAgB;EAChB,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA,kBAAkB;EAClB;EACA;EACA,iBAAiB;EACjB;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,KAAK;EACL,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX,UAAU;EACV;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA,qBAAqB;EACrB,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EAClB;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;GACC,sEAAsE;;;;;;;;;KAW/D,iBAAiB,wBAAwB;;;;;;UAOpC;EACb,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;KASE,cAAc,qBAAqB;;;;;;;;;UAU9B;EACb,SAAS;EACT,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;;;;;;;;;UAsDO,aAAa;;;;EAI1B,OAAO;;;;;;;;;UAUM,gBAAgB;;;;EAI7B;;;;;;;;;UAUa,eAAe;;;;EAI5B,UAAU;;;;;;UAQG,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA;;;;EAIA,YAAY;;;;EAIZ,UAAU;;;;;EAKV,UAAU;;;;EAIV,OAAO;;;;;UAMM,oBAAoB;;;;;;;;UASpB,aAAa;;;;EAI1B;;;;EAIA,UAAU;;;;EAIV,OAAO;;;;;UAMM,iBAAiB;;;;UAKjB,aAAa;;;;EAI1B;;;;EAIA,OAAO;;;;;UAMM,iBAAiB;;;UCl3BjB;;;;;;;EAOf;;cAkBI,mBAAmB,QAAQ,4BAA4B;;;UCf5C;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;EAOA;;UAGe;EACf,eAAe;EACf,eAAe;;;;;;;;wBASD,mBACd,UAAS,kBACR;;;;;;;;;;;;;wBA+Ea,cAAc,UAAS,kBAAuB;;;;;;;;;;;;wBCrJ9C,0BAA0B,WAAW;;;;;;;;wBAarC,mBACd,WAAW,aACX;;;;;;;;;;;;;;;;wBCfc,gBACd;EACG;EAAe;;;;;;;;KCRR;;;;;;;;;;;;;;;;UAiBK;EACf;;EAEA;EACA;EACA;EACA;;UAGe;EACf,aAAa;EACb;EACA,QAAQ;;;;;;;;;;EAUR;;;;;;EAMA,UAAU;;;;;;wBAOI,iBAAiB,kBAAkB;;;KC3C9C,gBAAgB;;;;;;;;;;;;;qBAsLR,gBAAgB;;;;;;;;;;;;UC1LZ;;EAEf;;EAEA,WAAW,cAAc,OAAO;;;;;;;;;;;;;;;;;;;wBAoBZ,oBACpB,WAAW,aACX,UAAS,uBACR;;;;;;;;;;UChCc;;EAEf;;;;;;EAMA,YAAY,cAAc;;EAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2Bc,aACd,cACA,UAAS"}
package/dist/react.js CHANGED
@@ -85,14 +85,14 @@ const rehypeSourceLines = (options) => {
85
85
  * `remark-gfm` does not implement alerts, so until this plugin existed a
86
86
  * `> [!WARNING]` rendered as an ordinary blockquote with the literal marker
87
87
  * visible as its first words. Worse than merely unstyled: `@tailwindcss/typography`
88
- * italicises blockquotes and draws `open-quote`/`close-quote` around the first
88
+ * italicizes blockquotes and draws `open-quote`/`close-quote` around the first
89
89
  * paragraph, so a callout came out as an italic *quotation* whose opening words
90
90
  * were `"[!WARNING]`. That was the "Known gaps" entry in
91
91
  * `docs/reference/inline-markup.md` and OQ-10, filed rather than fixed, while
92
92
  * `styleGuide.ts` went on telling every agent to write them.
93
93
  *
94
94
  * The tokens are deliberately the ones the `tone` vocabulary already resolves —
95
- * an alert *is* the six-colour light/dark treatment `tone` shipped, which is
95
+ * an alert *is* the six-color light/dark treatment `tone` shipped, which is
96
96
  * exactly what the gap entry said whoever fixed this should do rather than
97
97
  * building a second palette. `[!WARNING]` and `<!-- vantage: block tone=warning -->`
98
98
  * therefore agree by construction, and adding a theme still touches one
@@ -106,7 +106,7 @@ const rehypeSourceLines = (options) => {
106
106
  *
107
107
  * ## What it does not do
108
108
  *
109
- * It does not touch a blockquote that carries no marker, and an unrecognised
109
+ * It does not touch a blockquote that carries no marker, and an unrecognized
110
110
  * marker (`[!HINT]`) is left exactly as it was — visible literal text, which is
111
111
  * the honest rendering of something GitHub also would not style. Silently
112
112
  * swallowing it would hide a typo that reads as a callout on neither renderer.
@@ -328,7 +328,7 @@ VANTAGE_ANCHOR_TARGETS.filter((tag) => tag !== "pre" && tag !== "table");
328
328
  * file, and requiring it everywhere would fire on every single-doc sketch.
329
329
  *
330
330
  * Three consumers read it from here and none of them may re-spell it: the
331
- * plugin that stamps the anchor, the sanitiser that allowlists the value, and
331
+ * plugin that stamps the anchor, the sanitizer that allowlists the value, and
332
332
  * the checker's `vantage/oq-id-format`. A fourth copy is how the checker starts
333
333
  * calling a working anchor malformed.
334
334
  */
@@ -486,7 +486,7 @@ const HEADING_DEPTHS = /* @__PURE__ */ new Map([
486
486
  /**
487
487
  * Key → hast property, for the keys that treat a whole run.
488
488
  *
489
- * A camelCase hast property serialises to the kebab-case attribute, so
489
+ * A camelCase hast property serializes to the kebab-case attribute, so
490
490
  * `dataVantageTone` is `data-vantage-tone` in every renderer.
491
491
  *
492
492
  * `tone` and `emphasis` describe what a section *is* and how loud it is, so
@@ -521,11 +521,11 @@ const LEANING_PROPERTY = "dataVantageLeaning";
521
521
  * The id, carried as a `data-` attribute rather than written straight to `id`.
522
522
  *
523
523
  * This plugin runs *before* `rehypeSanitize` — it has to, it reads comments and
524
- * the sanitiser deletes them — and the sanitiser's default schema clobbers `id`
524
+ * the sanitizer deletes them — and the sanitizer's default schema clobbers `id`
525
525
  * with the prefix `user-content-`. A bare `id` set here would reach the page as
526
526
  * `user-content-OQ-4`, every `#OQ-4` link in every document would land nowhere,
527
527
  * and nothing would error. `rehypeVantageAnchors` promotes this to a real `id`
528
- * on the other side of the sanitiser, which is the same reason `rehypeSlug` is
528
+ * on the other side of the sanitizer, which is the same reason `rehypeSlug` is
529
529
  * registered there (`pipeline.ts`).
530
530
  */
531
531
  const OQ_ID_PROPERTY = "dataVantageOqId";
@@ -557,7 +557,7 @@ const MAX_LEANING = 500;
557
557
  * A whitespace-only `text` node always does — measured, with or without a blank
558
558
  * line in the source. Comments do too, and an unrelated `<!-- TODO -->` must not
559
559
  * break the chain: it is invisible in every renderer and deleted by the
560
- * sanitiser, so letting it change a directive's meaning would make behaviour
560
+ * sanitizer, so letting it change a directive's meaning would make behavior
561
561
  * depend on something no reader can see.
562
562
  */
563
563
  function isSkippable(node) {
@@ -609,7 +609,7 @@ function accepts(name, key, value) {
609
609
  * two stamped paragraphs — and the section's one continuous vertical rule is
610
610
  * drawn per member, so an unstamped member is a hole the height of the block
611
611
  * plus its margins. Measured over the real stylesheet: 44px for a one-line
612
- * `<figure>`, against the 40px a neighbour can bleed upward, and arbitrarily
612
+ * `<figure>`, against the 40px a neighbor can bleed upward, and arbitrarily
613
613
  * large for anything taller. `collapsed=true` had the same shape of bug the
614
614
  * other way round — it hid the paragraphs and left the figure on the page.
615
615
  *
@@ -791,7 +791,7 @@ function classNames(node) {
791
791
  * A `<pre>` `rehype-katex` will replace — its own condition, restated.
792
792
  *
793
793
  * `language-math` is the only class to test: `rehype-katex` keys the
794
- * pre-as-scope branch on it, and the sanitiser strips the `math-display` that
794
+ * pre-as-scope branch on it, and the sanitizer strips the `math-display` that
795
795
  * `remark-math` also emits (measured — a stamped fence arrives here with
796
796
  * `className: ["language-math"]` alone).
797
797
  */
@@ -945,7 +945,7 @@ const COLLAPSE_GROUP_ID = /^[0-9]+$/;
945
945
  * `false` — comments are not elements, so `tagNames` has nothing to do with it.
946
946
  * `rehypeVantageDirectives` relies on that deletion: it consumes a
947
947
  * `<!-- vantage: … -->` comment into attributes and deliberately leaves the node
948
- * for the sanitiser. Turning the switch on readmits every directive comment —
948
+ * for the sanitizer. Turning the switch on readmits every directive comment —
949
949
  * valid and malformed alike — into the rendered HTML, which breaks the carrier's
950
950
  * whole premise. `vantageDirectives.test.ts` ("leaves no comment in the rendered
951
951
  * markup") is the guard.
@@ -1172,6 +1172,49 @@ function currentMermaidTheme() {
1172
1172
  return typeof document !== "undefined" && document.documentElement.classList.contains("dark") ? "dark" : "default";
1173
1173
  }
1174
1174
  /**
1175
+ * The attribute on `<html>` naming the active color theme. Absent means the
1176
+ * built-in look. The app sets it only once the theme's stylesheet has loaded,
1177
+ * so a reader of this attribute can trust the theme's variables are in effect.
1178
+ */
1179
+ const COLOR_THEME_ATTRIBUTE = "data-vantage-theme";
1180
+ /**
1181
+ * The attribute on `<html>` saying where the active theme came from: `"user"`
1182
+ * for a stylesheet in the reader's themes directory, `"built-in"` for one the
1183
+ * app ships. Set with {@link COLOR_THEME_ATTRIBUTE}, and absent with it.
1184
+ *
1185
+ * It exists because an id alone is not a palette. A user theme may share a
1186
+ * built-in's id — that is how a reader tweaks one — and the app applies the
1187
+ * stored built-in synchronously, then swaps in the same-id user file once
1188
+ * /api/themes answers. Keyed on the id, the diagrams drawn in between kept the
1189
+ * built-in's colors: the key did not change, so neither the cache nor
1190
+ * `useSyncExternalStore` saw a reason to redraw.
1191
+ */
1192
+ const COLOR_THEME_SOURCE_ATTRIBUTE = "data-vantage-theme-source";
1193
+ /** The active color theme's id, or `""` for the built-in look. */
1194
+ function currentColorTheme() {
1195
+ if (typeof document === "undefined") return "";
1196
+ return document.documentElement.getAttribute("data-vantage-theme") ?? "";
1197
+ }
1198
+ /**
1199
+ * Everything a rendered diagram's colors depend on, as one string: the
1200
+ * light/dark mode, plus the color theme when one is active.
1201
+ *
1202
+ * A diagram is baked at render time, so anything that changes its colors has
1203
+ * to change this key — it is what the SVG cache and the loader's "configured
1204
+ * for" check compare. Under the built-in look it is exactly the mode name,
1205
+ * which is what both keyed on before color themes existed.
1206
+ */
1207
+ function currentMermaidPalette() {
1208
+ const theme = currentColorTheme();
1209
+ if (!theme) return currentMermaidTheme();
1210
+ const user = document.documentElement.getAttribute(COLOR_THEME_SOURCE_ATTRIBUTE) === "user";
1211
+ return `${currentMermaidTheme()} ${theme}${user ? " user" : ""}`;
1212
+ }
1213
+ /** The mermaid theme name a palette key was built from. */
1214
+ function mermaidThemeOf(palette) {
1215
+ return palette.startsWith("dark") ? "dark" : "default";
1216
+ }
1217
+ /**
1175
1218
  * Theme variables per theme. Mermaid derives most of its palette from these, so
1176
1219
  * the set is deliberately small: the surfaces, the ink, and the lines.
1177
1220
  */
@@ -1195,27 +1238,108 @@ const THEME_VARIABLES = {
1195
1238
  edgeLabelBackground: "#f8fafc"
1196
1239
  }
1197
1240
  };
1241
+ /**
1242
+ * Where each variable comes from under a color theme: the palette step the
1243
+ * built-in value was chosen from. The hex above IS that step in Tailwind's own
1244
+ * palette, so reading the step back out of the page gives the same diagram
1245
+ * under the built-in look and the theme's colors under any other.
1246
+ */
1247
+ const THEME_SOURCES = {
1248
+ dark: {
1249
+ background: "--color-slate-800",
1250
+ mainBkg: "--color-slate-700",
1251
+ nodeBorder: "--color-slate-400",
1252
+ nodeTextColor: "--color-slate-100",
1253
+ lineColor: "--color-slate-400",
1254
+ textColor: "--color-slate-200",
1255
+ edgeLabelBackground: "--color-slate-800"
1256
+ },
1257
+ default: {
1258
+ background: "--color-slate-50",
1259
+ mainBkg: "--color-slate-100",
1260
+ nodeBorder: "--color-slate-500",
1261
+ nodeTextColor: "--color-slate-900",
1262
+ lineColor: "--color-slate-500",
1263
+ textColor: "--color-slate-800",
1264
+ edgeLabelBackground: "--color-slate-50"
1265
+ }
1266
+ };
1198
1267
  function mermaidThemeVariables(theme) {
1199
- return THEME_VARIABLES[theme];
1268
+ const fixed = THEME_VARIABLES[theme];
1269
+ if (!currentColorTheme()) return fixed;
1270
+ const out = {};
1271
+ for (const [key, hex] of Object.entries(fixed)) out[key] = resolveCssColor(THEME_SOURCES[theme][key]) ?? hex;
1272
+ return out;
1273
+ }
1274
+ /**
1275
+ * A custom property's color as `#rrggbb`, or `null` when it cannot be read.
1276
+ *
1277
+ * Mermaid wants hex at `initialize()` time, and a theme's value can be any CSS
1278
+ * color — `oklch()`, `color-mix()`, a `var()` of another variable. So the
1279
+ * browser does the work: a probe element resolves the property to a computed
1280
+ * color, and a 1×1 canvas turns that into sRGB bytes whatever syntax it came
1281
+ * back in. No canvas (jsdom, a locked-down embed) is `null`, and the caller
1282
+ * falls back to the built-in value.
1283
+ *
1284
+ * A property nobody declared is `null` too, and has to be checked for up
1285
+ * front: `color: var(--unset)` is invalid at computed-value time, so the probe
1286
+ * *inherits* its color instead — the page's text color, which the canvas
1287
+ * would dutifully turn into a plausible hex and mermaid would paint every node
1288
+ * box with.
1289
+ */
1290
+ function resolveCssColor(property) {
1291
+ if (typeof document === "undefined") return null;
1292
+ if (!getComputedStyle(document.documentElement).getPropertyValue(property).trim()) return null;
1293
+ const probe = document.createElement("span");
1294
+ probe.style.display = "none";
1295
+ probe.style.color = `var(${property})`;
1296
+ document.documentElement.appendChild(probe);
1297
+ const computed = getComputedStyle(probe).color;
1298
+ probe.remove();
1299
+ if (!computed) return null;
1300
+ const ctx = pixelContext();
1301
+ if (!ctx) return null;
1302
+ ctx.fillStyle = computed;
1303
+ ctx.fillRect(0, 0, 1, 1);
1304
+ const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;
1305
+ return `#${[
1306
+ r,
1307
+ g,
1308
+ b
1309
+ ].map((v) => v.toString(16).padStart(2, "0")).join("")}`;
1310
+ }
1311
+ /** A 1×1 2D context to read a color back from, or `null` where there is none. */
1312
+ function pixelContext() {
1313
+ try {
1314
+ const canvas = document.createElement("canvas");
1315
+ canvas.width = canvas.height = 1;
1316
+ return canvas.getContext("2d", { willReadFrequently: true });
1317
+ } catch {
1318
+ return null;
1319
+ }
1200
1320
  }
1201
1321
  //#endregion
1202
1322
  //#region src/mermaidCache.ts
1203
1323
  const svgCache = /* @__PURE__ */ new Map();
1204
- const cacheKey = (code, theme) => `${theme}${code}`;
1324
+ const cacheKey = (code, theme) => `${theme}\u0000${code}`;
1205
1325
  /** The SVG for this fence in the theme the page is currently asking for. */
1206
- function getCachedSvg(code, theme = currentMermaidTheme()) {
1326
+ function getCachedSvg(code, theme = currentMermaidPalette()) {
1207
1327
  return svgCache.get(cacheKey(code, theme));
1208
1328
  }
1209
- function setCachedSvg(code, svg, theme = currentMermaidTheme()) {
1329
+ function setCachedSvg(code, svg, theme = currentMermaidPalette()) {
1210
1330
  svgCache.set(cacheKey(code, theme), svg);
1211
1331
  }
1212
1332
  //#endregion
1213
1333
  //#region src/mermaidLoader.ts
1214
1334
  let mermaidInstance = null;
1215
1335
  let mermaidLoading = null;
1216
- /** The theme the loaded instance was last configured for, `null` until loaded. */
1336
+ /**
1337
+ * The palette key (`currentMermaidPalette`) the loaded instance was last
1338
+ * configured for, `null` until loaded.
1339
+ */
1217
1340
  let configuredTheme = null;
1218
- function configure(m, theme) {
1341
+ function configure(m, palette) {
1342
+ const theme = mermaidThemeOf(palette);
1219
1343
  m.initialize({
1220
1344
  startOnLoad: false,
1221
1345
  theme,
@@ -1223,7 +1347,7 @@ function configure(m, theme) {
1223
1347
  securityLevel: "strict",
1224
1348
  suppressErrorRendering: true
1225
1349
  });
1226
- configuredTheme = theme;
1350
+ configuredTheme = palette;
1227
1351
  }
1228
1352
  /**
1229
1353
  * The mermaid module, configured for the theme the page is asking for *now*.
@@ -1237,19 +1361,19 @@ function configure(m, theme) {
1237
1361
  * served instead (`mermaidCache.ts`).
1238
1362
  */
1239
1363
  async function getMermaid() {
1240
- const theme = currentMermaidTheme();
1364
+ const theme = currentMermaidPalette();
1241
1365
  if (mermaidInstance) {
1242
1366
  if (configuredTheme !== theme) configure(mermaidInstance, theme);
1243
1367
  return mermaidInstance;
1244
1368
  }
1245
1369
  if (!mermaidLoading) mermaidLoading = import("mermaid").then((mod) => {
1246
1370
  const m = mod.default;
1247
- configure(m, currentMermaidTheme());
1371
+ configure(m, currentMermaidPalette());
1248
1372
  mermaidInstance = m;
1249
1373
  return m;
1250
1374
  });
1251
1375
  const loaded = await mermaidLoading;
1252
- const wanted = currentMermaidTheme();
1376
+ const wanted = currentMermaidPalette();
1253
1377
  if (configuredTheme !== wanted) configure(loaded, wanted);
1254
1378
  return loaded;
1255
1379
  }
@@ -1552,7 +1676,7 @@ function DiagramModal({ isOpen, onClose, children }) {
1552
1676
  }
1553
1677
  /**
1554
1678
  * The palette the page is asking for, re-read whenever `<html>`'s class list
1555
- * changes.
1679
+ * or its color-theme attribute changes.
1556
1680
  *
1557
1681
  * A diagram is an SVG baked at render time, so unlike everything else on the
1558
1682
  * page it does not restyle when the theme flips — it has to be drawn again. The
@@ -1569,14 +1693,19 @@ function subscribeToTheme(onChange) {
1569
1693
  const observer = new MutationObserver(onChange);
1570
1694
  observer.observe(document.documentElement, {
1571
1695
  attributes: true,
1572
- attributeFilter: ["class"]
1696
+ attributeFilter: [
1697
+ "class",
1698
+ COLOR_THEME_ATTRIBUTE,
1699
+ COLOR_THEME_SOURCE_ATTRIBUTE
1700
+ ]
1573
1701
  });
1574
1702
  return () => observer.disconnect();
1575
1703
  }
1576
1704
  /** Server render has no `<html>` to read, and no diagram to draw either. */
1577
1705
  const serverTheme = () => "default";
1706
+ /** The palette key the page is asking for (see `currentMermaidPalette`). */
1578
1707
  function useMermaidTheme() {
1579
- return useSyncExternalStore(subscribeToTheme, currentMermaidTheme, serverTheme);
1708
+ return useSyncExternalStore(subscribeToTheme, currentMermaidPalette, serverTheme);
1580
1709
  }
1581
1710
  const MermaidDiagramInner = ({ code }) => {
1582
1711
  const theme = useMermaidTheme();
@@ -1718,7 +1847,7 @@ const DOC_STATUSES = [
1718
1847
  /** Every key this build knows under `vantage:`. Closed. */
1719
1848
  const VANTAGE_FRONTMATTER_KEYS = ["status-chip"];
1720
1849
  /**
1721
- * Which tone each status borrows its colours from.
1850
+ * Which tone each status borrows its colors from.
1722
1851
  *
1723
1852
  * The chip has no palette of its own: it reuses the tone chips
1724
1853
  * (`.vantage-chip--<tone>` in `styles/directives.css`), which is also what makes
@@ -1837,7 +1966,7 @@ function readStatusChip(frontmatter, raw, issues) {
1837
1966
  *
1838
1967
  * Styling comes entirely from `styles/directives.css` — `.vantage-chip` for the
1839
1968
  * geometry, shared by selector list with the `badge=` pseudo-element, and
1840
- * `.vantage-chip--<tone>` for the colours. No Tailwind utility appears here, so
1969
+ * `.vantage-chip--<tone>` for the colors. No Tailwind utility appears here, so
1841
1970
  * the chip survives in a consumer that does not run Tailwind and no class name
1842
1971
  * has to be discovered by a content scan.
1843
1972
  */
@@ -1952,7 +2081,7 @@ const FrontmatterDisplay = memo(FrontmatterDisplayInner);
1952
2081
  *
1953
2082
  * Split out from scrollToLineAnchor.ts so that non-browser consumers — the
1954
2083
  * `vantage-check` CLI, which validates `#L42` links against the file on disk —
1955
- * can share the *same* syntax the viewer honours instead of reimplementing it
2084
+ * can share the *same* syntax the viewer honors instead of reimplementing it
1956
2085
  * and drifting.
1957
2086
  */
1958
2087
  /**
@@ -2269,10 +2398,6 @@ const MarkdownViewer = memo(MarkdownViewerInner, (prevProps, nextProps) => prevP
2269
2398
  //#endregion
2270
2399
  //#region src/renderMarkdown.ts
2271
2400
  /**
2272
- * Framework-agnostic markdown -> HTML rendering pipeline.
2273
- * Uses the same remark/rehype chain as the Vantage viewer.
2274
- */
2275
- /**
2276
2401
  * Render a markdown string to HTML using the full Vantage pipeline.
2277
2402
  *
2278
2403
  * Features (all enabled by default):
@@ -2289,7 +2414,7 @@ const MarkdownViewer = memo(MarkdownViewerInner, (prevProps, nextProps) => prevP
2289
2414
  * Use the React `<MarkdownViewer>` component for client-side mermaid rendering.
2290
2415
  */
2291
2416
  async function renderMarkdown(content, options = {}) {
2292
- const { gfm = true, math = true, highlight = true, sourceLines = true, sanitize = true, frontmatter: parseFm = true } = options;
2417
+ const { gfm = true, math = true, highlight = true, sourceLines = true, sanitize = true, frontmatter: parseFm = true, tree } = options;
2293
2418
  let parsed;
2294
2419
  if (parseFm) parsed = parseFrontmatter(content);
2295
2420
  else parsed = {
@@ -2306,7 +2431,8 @@ async function renderMarkdown(content, options = {}) {
2306
2431
  sanitize,
2307
2432
  bodyLineOffset: parsed.bodyLineOffset
2308
2433
  });
2309
- const result = await unified().use(remarkParse).use(remarkPlugins).use(remarkRehype, { allowDangerousHtml: true }).use(rehypePlugins).use(rehypeStringify).process(parsed.body);
2434
+ const processor = unified().use(remarkParse).use(remarkPlugins).use(remarkRehype, { allowDangerousHtml: true }).use(rehypePlugins).use(rehypeStringify);
2435
+ const result = tree === void 0 ? String(await processor.process(parsed.body)) : processor.stringify(await processor.run(tree, parsed.body), parsed.body);
2310
2436
  return {
2311
2437
  html: String(result),
2312
2438
  frontmatter: parsed.frontmatter,