diff --git a/README.md b/README.md index ec178b0..d98d029 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ΣDOCS · Simba Robotics -黑龙江大学 Simba 战队的文档站,基于 Astro 7 与 Starlight。首页复用 Simba 主站的黑红视觉、机器人实拍、Logo 和小组图标;文章页保留 Starlight 的侧栏、页内目录、搜索、浅色 / 深色主题与语言切换。 +黑龙江大学 Simba 战队的文档站,基于 Astro 7 与 Starlight。首页与文章统一使用 Starlight 默认文档框架,保留侧栏、页内目录、搜索、代码复制、深浅主题与语言切换。 ## 本地运行 @@ -12,46 +12,47 @@ npm run astro -- dev logs npm run astro -- dev stop ``` -中文首页:`http://localhost:4321/zh-cn/`,英文首页:`/en/`,根路径跳转到中文首页。 +中文首页:`http://localhost:4321/zh-cn/`,英文首页:`/en/`。根路径跳转到中文首页。 -生产构建使用 `npm run build`,产物在 `dist/`。`npm run preview` 可验证生产版本与 Pagefind 搜索;开发模式中的搜索由 Starlight 显示开发提示。正式部署时,在 `astro.config.mjs` 设置实际 `site` 域名,以生成 sitemap。 +`npm run build` 生成 `dist/`,`npm run preview` 验证生产版本和 Pagefind 搜索。正式部署时,在 `astro.config.mjs` 设置实际 `site` 域名,以生成 sitemap。 -## 从哪里修改 +## 编写与维护 + +文档支持 `.md` 与 `.mdx`:普通文章可以直接使用 Markdown;需要组件时使用 MDX,在 frontmatter 后导入 Starlight 或项目内的 Astro 组件。可按内容使用卡片、步骤、标签页等任意组件,使用其他前端框架的组件前需安装对应的 Astro 集成。提示信息也可直接使用 `:::note` / `:::tip` / `:::caution` / `:::danger` 语法。 | 内容 | 文件 / 目录 | | --- | --- | -| 首页布局与中英文文案 | `src/components/Home.astro` | -| 首页卡片、描述和链接 | `src/data/home.ts` | -| 首页样式 | `src/styles/home.css` | -| 文档主题与品牌 | `src/styles/custom.css`、`src/components/SiteTitle.astro` | -| 分类和顺序 | `astro.config.mjs`、页面 frontmatter 中的 `sidebar.order` | +| 中文 / 英文首页 | `src/content/docs/zh-cn/index.mdx`、`src/content/docs/en/index.mdx` | +| 分类和顺序 | `astro.config.mjs`、页面 frontmatter 的 `sidebar.order` | +| 全局字体、红色强调与深灰背景 | `src/styles/custom.css` | | 入门与写作示例 | `src/content/docs/zh-cn/guides/` | | 技术方向 | `src/content/docs/zh-cn/{mest,elct,vsag,pram}/` | | 校内赛规则 | `src/content/docs/zh-cn/competition/` | | 原始规则附件 | `public/downloads/rmic-2026-original-draft.md` | -新增 `.md` 或 `.mdx` 页面后,侧栏按目录自动生成。技术示例的页首有“示例内容”提示,替换为经过确认的内容后再调整该提示。原有视觉组导论保留,未改写。 +各分类按目录自动生成。技术示例在页首标注,替换为经过确认的内容后再调整提示。原有视觉组导论正文保留。英文未翻译文章使用 Starlight 默认语言回退。 -英文首页已提供,未翻译文章使用 Starlight 默认语言回退并显示提示。首页入口直达现有中文文章,避免空页面。 +## 公式与 Mermaid + +- 行内公式使用 `$…$`,独立公式使用 `$$…$$`(分行包裹)。`remark-math` 和 `rehype-katex` 在构建时渲染,KaTeX 的样式和字体随站点打包。 +- 以上公式写法和 Mermaid 均支持 `.md` 与 `.mdx`,不需要逐页导入组件。 +- 图表使用标准的 Mermaid 围栏代码块。`src/plugins/remark-mermaid.mjs` 保留源码,`src/scripts/mermaid.ts` 在有图表的页面按需加载 Mermaid 并渲染 SVG,随深浅主题切换重新绘制。宽图默认适应宽度,点击“放大查看”后可滚动阅读,无 JavaScript 或图表错误时仍可阅读源码。 +- 除数学公式外,正文、导航、代码块、表单和图表文字均为无衬线字体。KaTeX 保留数学字体。 +- `Head.astro` 仅增加图表渲染脚本,文档框架沿用 Starlight 默认实现。页眉 Logo 通过 Starlight 配置加载;搜索、导航、主题和语言切换保留原有行为。 + +写法和预览见 `src/content/docs/zh-cn/guides/contributing.mdx`。 ## 校内赛规则 -规则被整理为概览、赛前考核、开源审查、对抗赛、制作规范、裁判系统、待确认事项七章。使用 Starlight 提示栏、步骤、卡片、标签页、表格和自适应赛程示意。没有额外引入 Mermaid 客户端依赖;原始 Mermaid 源码保留在下载附件,网页以阶段示意与完整晋级关系表展示同一赛程。 +手册按概览、赛前考核、开源审查、对抗赛、制作规范、裁判系统、待确认事项拆为七章。比赛流程使用原始附件的 Mermaid 源码,不另写 Astro 流程组件;数学表达使用原有美元符号公式语法。 -`pending.md` 记录原稿缺失或有歧义的条款。正式发布前,应补齐报名入口、场地信息、同分规则、尺寸孔位图等,并同步各章节。所有页面当前标记为规则预览版;原始附件保持不变。 +`pending.md` 记录原稿缺失或有歧义的条款。正式发布前应补齐报名入口、场地信息、同分规则、尺寸孔位图等,并同步各章节。原始下载附件保持不变。 -## 主站素材 +## 主站与仓库 -素材于 2026-09-23 从 `https://simba-robotics.com` 复用并保存到 `public/simba/`,页面加载不依赖主站在线。素材属于战队原有资产,不因本次复用改变授权。 +- [Simba 主站](https://simba-robotics.com) +- [文档仓库](https://git.simba-robotics.com/PRAM/simba_docs) -| 本地文件 | 主站来源路径 | 用途 | -| --- | --- | --- | -| `logo.svg` | `/logo.svg` | 品牌图标、favicon | -| `logo_with_char.webp` | `/logo_with_char.webp` | 页脚 Logo | -| `header.webp` | `/header.webp` | 首页机器人背景 | -| `mest.svg` | `/icons/mest.svg` | 机械架构入口 | -| `elct.svg` | `/icons/elct.svg` | 电传测控入口 | -| `vsag.svg` | `/icons/vsag.svg` | 视觉算法入口 | -| `pram.svg` | `/icons/pram.svg` | 宣传筹划入口 | +`public/simba/` 中的 Logo、图片与小组图标由主站复用。Logo 用于页眉与 favicon;此前用于展示首页的素材保留,供后续文章使用。来源为主站同名路径(小组图标来自 `/icons/`),下载日期 2026-09-23,授权不因复用而改变。 参考:[Astro 文档](https://docs.astro.build)、[Starlight 文档](https://starlight.astro.build)。 diff --git a/astro.config.mjs b/astro.config.mjs index 32128ec..ce40c6c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,9 +1,19 @@ // @ts-check import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; +import { unified } from '@astrojs/markdown-remark'; +import remarkMath from 'remark-math'; +import rehypeKatex from 'rehype-katex'; +import remarkMermaid from './src/plugins/remark-mermaid.mjs'; export default defineConfig({ redirects: { '/': '/zh-cn/' }, + markdown: { + processor: unified({ + remarkPlugins: [remarkMath, remarkMermaid], + rehypePlugins: [rehypeKatex], + }), + }, integrations: [starlight({ title: 'ΣDOCS', description: 'Simba Robotics / 黑龙江大学 602 创新实验室的工程知识库与校内赛手册。', @@ -13,15 +23,22 @@ export default defineConfig({ en: { label: 'English', lang: 'en' }, }, favicon: '/simba/logo.svg', - customCss: ['./src/styles/custom.css'], - components: { - Header: './src/components/Header.astro', - Hero: './src/components/Hero.astro', - SiteTitle: './src/components/SiteTitle.astro', - Footer: './src/components/Footer.astro', + logo: { src: './public/simba/logo.svg', alt: 'Simba Robotics' }, + customCss: ['katex/dist/katex.min.css', './src/styles/custom.css'], + components: { Head: './src/components/Head.astro' }, + expressiveCode: { + styleOverrides: { + codeFontFamily: 'var(--sl-font)', + uiFontFamily: 'var(--sl-font)', + codeBackground: 'var(--sl-color-bg-nav)', + }, }, - social: [{ icon: 'github', label: 'Simba Git · 文档仓库', href: 'https://git.simba-robotics.com/PRAM/simba_docs' }], + social: [ + { icon: 'external', label: 'Simba 战队主站', href: 'https://simba-robotics.com' }, + { icon: 'github', label: '文档仓库', href: 'https://git.simba-robotics.com/PRAM/simba_docs' }, + ], sidebar: [ + { label: '文档首页', translations: { en: 'Documentation home' }, slug: 'index' }, { label: '开始阅读', translations: { en: 'Start here' }, items: [{ autogenerate: { directory: 'guides' } }] }, { label: '2026 校内赛 · RMIC', translations: { en: '2026 Campus Competition' }, items: [{ autogenerate: { directory: 'competition' } }] }, { label: '机械架构 · MEST', translations: { en: 'Mechanical Engineering' }, items: [{ autogenerate: { directory: 'mest' } }] }, diff --git a/package-lock.json b/package-lock.json index 7091bcd..b8f6851 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,33 +8,14 @@ "name": "simba-docs", "version": "0.0.1", "dependencies": { + "@astrojs/markdown-remark": "7.2.0", "@astrojs/starlight": "^0.41.1", "astro": "^7.0.2", - "sharp": "^0.34.5", - "starlight-ion-theme": "^2.4.0", - "starlight-theme-obsidian": "^0.4.1" - } - }, - "node_modules/@antfu/install-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", - "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", - "license": "MIT", - "dependencies": { - "package-manager-detector": "^1.3.0", - "tinyexec": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", - "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" + "katex": "^0.16.47", + "mermaid": "^12.0.0", + "rehype-katex": "^7.0.1", + "remark-math": "^6.0.0", + "sharp": "^0.34.5" } }, "node_modules/@astrojs/compiler-binding": { @@ -264,13 +245,13 @@ } }, "node_modules/@astrojs/mdx": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-7.0.0.tgz", - "integrity": "sha512-LKwNA8nnLtEM0auoP6OfH/UnlKe1Ub59qZjbcYkZjPBGw6PkJewWkA/1qwLpECvV6gMDd6TR6eqV9p/VYZrcrQ==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-7.0.8.tgz", + "integrity": "sha512-RNuwq2ccTSi7NX9YqlR0noaWoVdOrZuJvdfWXotAzdhMVB0b0zEMLnNU+xar7le0GwTMlTObD/QAu8jeHA/3nA==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.10.0", - "@astrojs/markdown-remark": "7.2.0", + "@astrojs/internal-helpers": "0.10.4", + "@astrojs/markdown-remark": "7.2.4", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.16.0", "es-module-lexer": "^2.0.0", @@ -288,8 +269,8 @@ "node": ">=22.12.0" }, "peerDependencies": { - "@astrojs/markdown-satteri": "^0.3.1-alpha.0", - "astro": "^7.0.0-alpha.0" + "@astrojs/markdown-satteri": "^0.3.1", + "astro": "^7.0.0" }, "peerDependenciesMeta": { "@astrojs/markdown-satteri": { @@ -297,6 +278,47 @@ } } }, + "node_modules/@astrojs/mdx/node_modules/@astrojs/internal-helpers": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.4.tgz", + "integrity": "sha512-nozZSy/mKYLqe4YrqbKtdOszedAfXYCtw3wZ0d+CAjz4GqQ4L9rl1ltIL5BlgwmYVinJg/RZ0MgGuWOdlyRZlA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.3.0", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/mdx/node_modules/@astrojs/markdown-remark": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.4.tgz", + "integrity": "sha512-MvspGMynWKAjTe4/lTUdmBPHIFKNVLTCF6UlyWGogTGzNrTvjD+D4n48k7h8swxsEPKHK2TwxkZO7uoaCv1Pow==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.10.4", + "@astrojs/prism": "4.0.2", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.1.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, "node_modules/@astrojs/prism": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz", @@ -415,15 +437,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", @@ -437,6 +450,12 @@ "node": ">=6.9.0" } }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" + }, "node_modules/@bruits/satteri-darwin-arm64": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.9.2.tgz", @@ -562,6 +581,45 @@ "node": ">=18" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", + "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.1.2", + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", + "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", + "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", + "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "license": "Apache-2.0" + }, "node_modules/@clack/core": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.4.2.tgz", @@ -591,9 +649,9 @@ } }, "node_modules/@ctrl/tinycolor": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", - "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.1.tgz", + "integrity": "sha512-Vh5uy9Y1JBMId6J1f68TMXnZrTCvNdo9Fu2k0d1YnJngR+sM5kWTKl441c/3TFs+cG0NWOjRWgQ/iaWhbYx+7A==", "license": "MIT", "engines": { "node": ">=14" @@ -1047,9 +1105,9 @@ } }, "node_modules/@expressive-code/core": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.44.0.tgz", - "integrity": "sha512-xgiF2P6tYUbrhi3+x0S8xHZWT1t3Bvb3U91tAtRbLb9HLejLvYc5GZUqKICKLaUN4iSGhhNJu2fM/aH8e5yCMg==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.44.2.tgz", + "integrity": "sha512-Yw5KonQCD1HoOO2P89y4wifqS9qrJcGVY0LkVMUsVZjhi++bhz4WwQ37inenKFNOEVo50P7cjoVsCdaVnUbq8w==", "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.0.4", @@ -1064,101 +1122,31 @@ } }, "node_modules/@expressive-code/plugin-frames": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.44.0.tgz", - "integrity": "sha512-V6M6+zVc1GzqCvXkQHc2m5rcFOIVzJgMq5gnfrMnVf2gwtj/sg4H93c1f/mGeqHycubwkHFUDyParAOiGeDZeA==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.44.2.tgz", + "integrity": "sha512-gVLm6TQMNIRWIaM7o+mCtxkGNjLZY5/2faSTLoXeo9wv/Pkj/0QAtZyXPVPrRsPARqiipATNFmfvQFLJudxPHQ==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.44.0" + "@expressive-code/core": "^0.44.2" } }, "node_modules/@expressive-code/plugin-shiki": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.44.0.tgz", - "integrity": "sha512-RZsdaqlbGqyAQKuoX4myQXxjmiE2l5KBpJ/gKPh62tCdIdpWyjbzVqSo8+5XsezZxkfi8AJ/J6EUaBTPROFX/Q==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.44.2.tgz", + "integrity": "sha512-ebWIvCDzXvjyD8rH6T6DfytYJw1GoArLR4nusIAE4VxXrCQf3d+owytiv010KU/dUg+SRLZskDn0N+HaFXeuSg==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.44.0", + "@expressive-code/core": "^0.44.2", "shiki": "^4.0.2" } }, "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.44.0.tgz", - "integrity": "sha512-0/m3A5b+lz2upyNq+wzZ1S69HRoJmyFs5LsR42lVZ9pmGRlBiSBYQpvqlji4DBj1+Riamxc0AvcCr5kuzOQeWA==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.44.2.tgz", + "integrity": "sha512-SNI7EgUSiADqbqUzzMbj1ZeC/r2pa5eg3KyFOGAd3a7EsIA4qzjXQLp+ODWQtHVDKFCdGs4J3ovSJUqvKIK96g==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.44.0" - } - }, - "node_modules/@iconify/tools": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@iconify/tools/-/tools-4.2.0.tgz", - "integrity": "sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA==", - "license": "MIT", - "dependencies": { - "@iconify/types": "^2.0.0", - "@iconify/utils": "^2.3.0", - "cheerio": "^1.1.2", - "domhandler": "^5.0.3", - "extract-zip": "^2.0.1", - "local-pkg": "^1.1.2", - "pathe": "^2.0.3", - "svgo": "^3.3.2", - "tar": "^7.5.2" - } - }, - "node_modules/@iconify/tools/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@iconify/tools/node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/@iconify/tools/node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "license": "CC0-1.0" - }, - "node_modules/@iconify/tools/node_modules/svgo": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", - "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", - "license": "MIT", - "dependencies": { - "commander": "^7.2.0", - "css-select": "^5.1.0", - "css-tree": "^2.3.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.0.0", - "sax": "^1.5.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" + "@expressive-code/core": "^0.44.2" } }, "node_modules/@iconify/types": { @@ -1167,22 +1155,6 @@ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", "license": "MIT" }, - "node_modules/@iconify/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", - "license": "MIT", - "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@antfu/utils": "^8.1.0", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.14.0", - "kolorist": "^1.8.0", - "local-pkg": "^1.0.0", - "mlly": "^1.7.4" - } - }, "node_modules/@img/colour": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", @@ -1648,18 +1620,6 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", @@ -1703,6 +1663,18 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@mermaid-js/parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.0.tgz", + "integrity": "sha512-K8BeapFUfrfxbRAUQAG5oBOCwo1+bNWzaVnPxTCutkfrTBn6T/j91FIhqxWJ32SUeQ9T3iy1zcmPZ5ROZEvDrg==", + "license": "MIT", + "dependencies": { + "@chevrotain/types": "~11.1.2" + }, + "engines": { + "node": ">=22.12.0" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", @@ -2219,19 +2191,11 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/chroma-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-3.1.2.tgz", - "integrity": "sha512-YBTQqArPN8A0niHXCwrO1z5x++a+6l0mLBykncUpr23oIPW7L4h39s6gokdK/bDrPmSh8+TjMmrhBPnyiaWPmQ==", - "license": "MIT", - "peer": true - }, "node_modules/@types/d3": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -2269,15 +2233,13 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-selection": "*" } @@ -2287,7 +2249,6 @@ "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-selection": "*" } @@ -2296,22 +2257,19 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -2321,22 +2279,19 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-dispatch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-selection": "*" } @@ -2345,22 +2300,19 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-dsv": "*" } @@ -2369,22 +2321,19 @@ "version": "3.0.10", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-format": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/geojson": "*" } @@ -2393,15 +2342,13 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-color": "*" } @@ -2410,36 +2357,31 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-random": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-time": "*" } @@ -2448,22 +2390,19 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-shape": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-path": "*" } @@ -2472,29 +2411,25 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-selection": "*" } @@ -2504,7 +2439,6 @@ "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "license": "MIT", - "peer": true, "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" @@ -2538,8 +2472,7 @@ "version": "7946.0.16", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", @@ -2556,6 +2489,12 @@ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "license": "MIT" }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -2604,32 +2543,39 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz", "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==", "license": "ISC" }, + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, "node_modules/acorn": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -2715,19 +2661,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/astring": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", @@ -2825,29 +2758,18 @@ } }, "node_modules/astro-expressive-code": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.44.0.tgz", - "integrity": "sha512-b1wN/ZvbJprzxlGKIpIes2kQrCY5KRLwys2tWbZAZyjGZcW5ZtgneZnBwzNRiBna9/48d4mQl19KLjcRuhO1hw==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.44.2.tgz", + "integrity": "sha512-avop7nZcRwC7quvIxVguhwEZ9Tp6IoTzKUCLwP30Fb7+er+pWQgcysP01dcuzRIJo81kLGg30q/YAI2Yb1Sdzg==", "license": "MIT", "dependencies": { - "rehype-expressive-code": "^0.44.0", + "rehype-expressive-code": "^0.44.2", "url-extras": "^0.1.0" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0" } }, - "node_modules/astro-icon": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/astro-icon/-/astro-icon-1.1.5.tgz", - "integrity": "sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==", - "license": "MIT", - "dependencies": { - "@iconify/tools": "^4.0.5", - "@iconify/types": "^2.0.0", - "@iconify/utils": "^2.1.30" - } - }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -2898,28 +2820,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -2970,46 +2870,18 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/cheerio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", - "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", - "license": "MIT", + "node_modules/chevrotain": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", + "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "license": "Apache-2.0", "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.1.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.19.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "@chevrotain/cst-dts-gen": "11.1.2", + "@chevrotain/gast": "11.1.2", + "@chevrotain/regexp-to-ast": "11.1.2", + "@chevrotain/types": "11.1.2", + "@chevrotain/utils": "11.1.2", + "lodash-es": "4.17.23" } }, "node_modules/chokidar": { @@ -3027,22 +2899,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/chroma-js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.2.0.tgz", - "integrity": "sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==", - "license": "(BSD-3-Clause AND Apache-2.0)", - "peer": true - }, "node_modules/ci-info": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", @@ -3105,12 +2961,6 @@ "node": ">= 18" } }, - "node_modules/confbox": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", - "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", - "license": "MIT" - }, "node_modules/cookie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", @@ -3130,6 +2980,15 @@ "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", "license": "MIT" }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/crossws": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", @@ -3241,12 +3100,59 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, + "node_modules/cytoscape": { + "version": "3.34.3", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.3.tgz", + "integrity": "sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "license": "ISC", - "peer": true, "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -3288,7 +3194,6 @@ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "license": "ISC", - "peer": true, "dependencies": { "internmap": "1 - 2" }, @@ -3301,7 +3206,6 @@ "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3311,7 +3215,6 @@ "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "license": "ISC", - "peer": true, "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -3328,7 +3231,6 @@ "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", "license": "ISC", - "peer": true, "dependencies": { "d3-path": "1 - 3" }, @@ -3341,7 +3243,6 @@ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3351,7 +3252,6 @@ "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", "license": "ISC", - "peer": true, "dependencies": { "d3-array": "^3.2.0" }, @@ -3364,7 +3264,6 @@ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", "license": "ISC", - "peer": true, "dependencies": { "delaunator": "5" }, @@ -3377,7 +3276,6 @@ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3387,7 +3285,6 @@ "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "license": "ISC", - "peer": true, "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -3401,7 +3298,6 @@ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "license": "ISC", - "peer": true, "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -3427,7 +3323,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", - "peer": true, "engines": { "node": ">= 10" } @@ -3437,7 +3332,6 @@ "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=12" } @@ -3447,7 +3341,6 @@ "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", "license": "ISC", - "peer": true, "dependencies": { "d3-dsv": "1 - 3" }, @@ -3460,7 +3353,6 @@ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "license": "ISC", - "peer": true, "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -3475,7 +3367,6 @@ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3485,7 +3376,6 @@ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", "license": "ISC", - "peer": true, "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -3498,7 +3388,6 @@ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3508,7 +3397,6 @@ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "license": "ISC", - "peer": true, "dependencies": { "d3-color": "1 - 3" }, @@ -3521,7 +3409,6 @@ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3531,7 +3418,6 @@ "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3541,7 +3427,6 @@ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3551,17 +3436,55 @@ "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", "license": "ISC", - "peer": true, "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -3578,7 +3501,6 @@ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "license": "ISC", - "peer": true, "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -3592,7 +3514,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3602,7 +3523,6 @@ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", "license": "ISC", - "peer": true, "dependencies": { "d3-path": "^3.1.0" }, @@ -3615,7 +3535,6 @@ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "license": "ISC", - "peer": true, "dependencies": { "d3-array": "2 - 3" }, @@ -3628,7 +3547,6 @@ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "license": "ISC", - "peer": true, "dependencies": { "d3-time": "1 - 3" }, @@ -3641,7 +3559,6 @@ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -3651,7 +3568,6 @@ "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", "license": "ISC", - "peer": true, "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -3671,7 +3587,6 @@ "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", "license": "ISC", - "peer": true, "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -3683,6 +3598,22 @@ "node": ">=12" } }, + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -3724,7 +3655,6 @@ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", "license": "ISC", - "peer": true, "dependencies": { "robust-predicates": "^3.0.2" } @@ -3847,6 +3777,15 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.15.tgz", + "integrity": "sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", @@ -3870,27 +3809,11 @@ "node": ">=4" } }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } + "node_modules/elkjs": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", + "license": "EPL-2.0" }, "node_modules/entities": { "version": "6.0.1", @@ -3910,6 +3833,18 @@ "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "license": "MIT" }, + "node_modules/es-toolkit": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.52.0.tgz", + "integrity": "sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks", + "tests/types", + "tests/browser-compat" + ] + }, "node_modules/esast-util-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", @@ -3995,20 +3930,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/estree-util-attach-comments": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", @@ -4049,9 +3970,9 @@ } }, "node_modules/estree-util-scope": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", - "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.1.tgz", + "integrity": "sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -4107,62 +4028,23 @@ "license": "MIT" }, "node_modules/expressive-code": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.44.0.tgz", - "integrity": "sha512-JXVWVNCKlLuZLMQH8cOiDUSosT0Bb+elwE/dbAkpwFwDFmyFyWlECoWZIohh2FkIF1iI67TQJ+Ts9k7oNDh2qA==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.44.2.tgz", + "integrity": "sha512-MLNghkvhyFgVW4oCD5DxBuYnnTXIf0PygzGmfT6OZeOOYWh/D4sH1j931biElkA5RG/J9wY/iuSMGAPF5vzHOg==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.44.0", - "@expressive-code/plugin-frames": "^0.44.0", - "@expressive-code/plugin-shiki": "^0.44.0", - "@expressive-code/plugin-text-markers": "^0.44.0" + "@expressive-code/core": "^0.44.2", + "@expressive-code/plugin-frames": "^0.44.2", + "@expressive-code/plugin-shiki": "^0.44.2", + "@expressive-code/plugin-text-markers": "^0.44.2" } }, - "node_modules/exsolve": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.0.tgz", - "integrity": "sha512-D+42+T12DdIlJM3uepa55qGiL3sYdLBOxIl2ifQCzCHz4c7eiolaHsi3BIqEr7JxBzxv2pYZQX9kw16ziMcEmw==", - "license": "MIT" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/fast-string-truncated-width": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", @@ -4187,15 +4069,6 @@ "fast-string-width": "^3.0.2" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -4213,19 +4086,6 @@ } } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/flattie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", @@ -4270,21 +4130,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-tsconfig": { "version": "5.0.0-beta.4", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz", @@ -4306,58 +4151,6 @@ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", "license": "ISC" }, - "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/h3": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", @@ -4375,6 +4168,12 @@ "uncrypto": "^0.1.3" } }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, "node_modules/hast-util-embedded": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", @@ -4408,6 +4207,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-html": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", @@ -4426,6 +4240,22 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", @@ -4766,37 +4596,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", @@ -4843,6 +4642,16 @@ "node": ">=0.10.0" } }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/inline-style-parser": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", @@ -4854,7 +4663,6 @@ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -4917,16 +4725,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-hexadecimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", @@ -4970,16 +4768,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -5008,9 +4796,9 @@ } }, "node_modules/js-yaml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", - "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", "funding": [ { "type": "github", @@ -5035,16 +4823,36 @@ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "license": "MIT" }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/katex": { + "version": "0.16.47", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", + "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" } }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "node_modules/klona": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", @@ -5054,10 +4862,10 @@ "node": ">= 8" } }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", "license": "MIT" }, "node_modules/lightningcss": { @@ -5309,22 +5117,11 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/local-pkg": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz", - "integrity": "sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==", - "license": "MIT", - "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.3.0", - "quansync": "^0.2.11" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" }, "node_modules/longest-streak": { "version": "3.1.0", @@ -5387,6 +5184,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/mdast-util-definitions": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", @@ -5564,6 +5373,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-mdx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", @@ -5716,6 +5544,64 @@ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "license": "CC0-1.0" }, + "node_modules/mermaid": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.0.0.tgz", + "integrity": "sha512-/wQXC9iBxoGV8p3erbvaXs9h77VyLDBH6GdayVjj3hEcSQhFU4N1WUhUppotCEqlIxI2pRMwjwBSwTB1MfZBgQ==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.2", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^2.0.0", + "@types/d3": "^7.4.3", + "@upsetjs/venn.js": "^2.0.0", + "chevrotain": "~11.1.2", + "cytoscape": "^3.34.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.21", + "dompurify": "^3.4.12", + "elkjs": "^0.9.3", + "es-toolkit": "^1.45.1", + "katex": "^0.16.47", + "khroma": "^2.1.0", + "marked": "^16.3.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/mermaid/node_modules/@antfu/install-pkg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-2.1.0.tgz", + "integrity": "sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.8.0", + "tinyexec": "^1.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/mermaid/node_modules/@iconify/utils": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.7.tgz", + "integrity": "sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^2.0.1", + "@iconify/types": "^2.0.0", + "import-meta-resolve": "^4.2.0" + } + }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -5925,6 +5811,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", @@ -6452,83 +6357,6 @@ ], "license": "MIT" }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mlly": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", - "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", - "license": "MIT", - "dependencies": { - "acorn": "^8.16.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.3" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -6647,15 +6475,6 @@ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", "license": "MIT" }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/oniguruma-parser": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", @@ -6717,9 +6536,9 @@ } }, "node_modules/package-manager-detector": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", - "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz", + "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==", "license": "MIT" }, "node_modules/pagefind": { @@ -6795,41 +6614,10 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", "license": "MIT" }, "node_modules/piccolore": { @@ -6856,15 +6644,20 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-types": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", - "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", "license": "MIT", "dependencies": { - "confbox": "^0.2.4", - "exsolve": "^1.0.8", - "pathe": "^2.0.3" + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" } }, "node_modules/postcss": { @@ -6961,32 +6754,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/quansync": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", - "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, "node_modules/radix3": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", @@ -7006,33 +6773,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/recast": { - "version": "0.23.11", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", - "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/recma-build-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", @@ -7141,12 +6881,12 @@ } }, "node_modules/rehype-expressive-code": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.44.0.tgz", - "integrity": "sha512-5r74C5F2sMR3X+QJH8OKWgZBO/cqRw5W1fLT6GVlSfLqepk+4j8tGFkyPqZYWjwntsBHzKPDH2zI68sZ7ScLfA==", + "version": "0.44.2", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.44.2.tgz", + "integrity": "sha512-jvjQpsfWKBquDrEl5YQA3CJybRRIuDOYsui1BJTs5oKDUK8pPkJSSxY8FjxNlIFIdtgrTjC1zuahuY4Cc1j9SQ==", "license": "MIT", "dependencies": { - "expressive-code": "^0.44.0" + "expressive-code": "^0.44.2" } }, "node_modules/rehype-format": { @@ -7163,6 +6903,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-parse": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", @@ -7257,6 +7016,22 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-mdx": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", @@ -7408,8 +7183,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", - "license": "Unlicense", - "peer": true + "license": "Unlicense" }, "node_modules/rolldown": { "version": "1.1.3", @@ -7444,12 +7218,23 @@ "@rolldown/binding-win32-x64-msvc": "1.1.3" } }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -7488,20 +7273,6 @@ "node": ">=11.0.0" } }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "license": "MIT", - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/semver": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", @@ -7642,317 +7413,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/starlight-ion-theme": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/starlight-ion-theme/-/starlight-ion-theme-2.4.0.tgz", - "integrity": "sha512-7iydgTqjjLW9Gh39DSgVLqz8uHCFiqmMfHQQg3bELTkX4eLUvmqi9TOsOEoGRmeAdY9/rhcVMm78b3KHGESE5g==", - "dependencies": { - "@astrojs/starlight": "^0.38", - "@iconify/tools": "^4.1.1", - "@iconify/utils": "^2.2.1", - "@shikijs/themes": "^1.26.1", - "astro-icon": "^1.1.5", - "pathe": "^2.0.1" - }, - "peerDependencies": { - "@astrojs/starlight": "^0.38", - "astro": "^6.0.0" - } - }, - "node_modules/starlight-ion-theme/node_modules/@astrojs/internal-helpers": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.9.1.tgz", - "integrity": "sha512-1pWuARqYom/TzuU3+0ZugsTrKlUydWKuULmDqSMTuonY+9IRDUEGKX/8PXQ1nBxRq3w85uGtd9q9SXfqEldMIQ==", - "license": "MIT", - "dependencies": { - "picomatch": "^4.0.4" - } - }, - "node_modules/starlight-ion-theme/node_modules/@astrojs/markdown-remark": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.1.2.tgz", - "integrity": "sha512-caXZ4Dc2St2dW8luEg22GlP0gupLdztCTQE4EzZOxW1pqWXz9mbeJEuHUkgDYcKWW8tjIHkydYDhWLVoxJ327Q==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.9.1", - "@astrojs/prism": "4.0.2", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "js-yaml": "^4.1.1", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "retext-smartypants": "^6.2.0", - "shiki": "^4.0.0", - "smol-toml": "^1.6.0", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.1.0", - "unist-util-visit-parents": "^6.0.2", - "vfile": "^6.0.3" - } - }, - "node_modules/starlight-ion-theme/node_modules/@astrojs/mdx": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-5.0.6.tgz", - "integrity": "sha512-4dKe0ZMmqujofPNDHahzClkwinn9f8jHPcaXcgdGvPAlboD2mjzkUCofli2cBnxYAkdfhC6d50gBJ8i/cH8gHw==", - "license": "MIT", - "dependencies": { - "@astrojs/markdown-remark": "7.1.2", - "@mdx-js/mdx": "^3.1.1", - "acorn": "^8.16.0", - "es-module-lexer": "^2.0.0", - "estree-util-visit": "^2.0.0", - "hast-util-to-html": "^9.0.5", - "piccolore": "^0.1.3", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "remark-smartypants": "^3.0.2", - "source-map": "^0.7.6", - "unist-util-visit": "^5.1.0", - "vfile": "^6.0.3" - }, - "engines": { - "node": ">=22.12.0" - }, - "peerDependencies": { - "astro": "^6.0.0" - } - }, - "node_modules/starlight-ion-theme/node_modules/@astrojs/starlight": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.38.5.tgz", - "integrity": "sha512-35xLSOtZDAMAilHG2zAEZoJ4AaPb+doYOvxuuRTAnmIBSOvujffOAHv3/rr6W/LJtkhBU38PjRDJ4i8QT1uGVw==", - "license": "MIT", - "dependencies": { - "@astrojs/markdown-remark": "^7.1.1", - "@astrojs/mdx": "^5.0.4", - "@astrojs/sitemap": "^3.7.2", - "@pagefind/default-ui": "^1.3.0", - "@types/hast": "^3.0.4", - "@types/js-yaml": "^4.0.9", - "@types/mdast": "^4.0.4", - "astro-expressive-code": "^0.42.0", - "bcp-47": "^2.1.0", - "hast-util-from-html": "^2.0.3", - "hast-util-select": "^6.0.4", - "hast-util-to-string": "^3.0.1", - "hastscript": "^9.0.1", - "i18next": "^23.11.5", - "js-yaml": "^4.1.1", - "klona": "^2.0.6", - "magic-string": "^0.30.21", - "mdast-util-directive": "^3.1.0", - "mdast-util-to-markdown": "^2.1.2", - "mdast-util-to-string": "^4.0.0", - "pagefind": "^1.3.0", - "rehype": "^13.0.2", - "rehype-format": "^5.0.1", - "remark-directive": "^4.0.0", - "ultrahtml": "^1.6.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.1.0", - "vfile": "^6.0.3" - }, - "peerDependencies": { - "astro": "^6.0.0" - } - }, - "node_modules/starlight-ion-theme/node_modules/@expressive-code/core": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.42.0.tgz", - "integrity": "sha512-MN11+9nfmaC7sYu2BZJXAXqwkBRt8t1xTSqP+Ti1NfTEskgl6xUnzDxoaiQkg0BMzpglA0pys4dpDKquP/cyIw==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^4.0.4", - "hast-util-select": "^6.0.2", - "hast-util-to-html": "^9.0.1", - "hast-util-to-text": "^4.0.1", - "hastscript": "^9.0.0", - "postcss": "^8.4.38", - "postcss-nested": "^6.0.1", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1" - } - }, - "node_modules/starlight-ion-theme/node_modules/@expressive-code/plugin-frames": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.42.0.tgz", - "integrity": "sha512-XtkPm+941Uta7Y+81Acv+OA/20F1NJmJhCX6UYGKpqEIGqplNh3PTOhcURp6tcruhlzJcWcvpWy6Oigz3SrjqA==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.42.0" - } - }, - "node_modules/starlight-ion-theme/node_modules/@expressive-code/plugin-shiki": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.42.0.tgz", - "integrity": "sha512-PMKey/kLmewttAHQezL+Y5Fx3vVssfDi3+FJOYQQS2mXP3tQspFELtKKAfsXfmSXdToZYgwoO69HJndqfE+09g==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.42.0", - "shiki": "^4.0.2" - } - }, - "node_modules/starlight-ion-theme/node_modules/@expressive-code/plugin-text-markers": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.42.0.tgz", - "integrity": "sha512-l59lUx8fq1v5g6SpmbDjiU0+7IdfbiWnAyRmtTVSpfhyq+nZMN4UcmYyu2b9Mynhzt7Gr+O+cXyEPDNb2AVWVQ==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.42.0" - } - }, - "node_modules/starlight-ion-theme/node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/starlight-ion-theme/node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/starlight-ion-theme/node_modules/astro-expressive-code": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.42.0.tgz", - "integrity": "sha512-aiTePi2Cn0mJPYWZSzP1GcxCinX9mNtJyCCshVVPSg1yRwM7ADvFJOx0FnS440M9t65hp8JH//dc2qr22Bm4ag==", - "license": "MIT", - "dependencies": { - "rehype-expressive-code": "^0.42.0" - }, - "peerDependencies": { - "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta" - } - }, - "node_modules/starlight-ion-theme/node_modules/expressive-code": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.42.0.tgz", - "integrity": "sha512-V5DtJLEKuj4wf9O6IRtPtRObkMVy2ggR+S0MdjrTw6m58krZnDioyhW1si3Y04c5YPeooP4nd85Yq9NwEVHS4g==", - "license": "MIT", - "dependencies": { - "@expressive-code/core": "^0.42.0", - "@expressive-code/plugin-frames": "^0.42.0", - "@expressive-code/plugin-shiki": "^0.42.0", - "@expressive-code/plugin-text-markers": "^0.42.0" - } - }, - "node_modules/starlight-ion-theme/node_modules/i18next": { - "version": "23.16.8", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", - "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==", - "funding": [ - { - "type": "individual", - "url": "https://locize.com" - }, - { - "type": "individual", - "url": "https://locize.com/i18next.html" - }, - { - "type": "individual", - "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" - } - ], - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.2" - } - }, - "node_modules/starlight-ion-theme/node_modules/rehype-expressive-code": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.42.0.tgz", - "integrity": "sha512-8rp/1YMEVVSYbtz+bFBx+uSx3vA4i4T8RwRm5Q/IWbucQnnQqQ0hDqtmKOr8tv+59Cik6cu5aH3WPo0I7csuTA==", - "license": "MIT", - "dependencies": { - "expressive-code": "^0.42.0" - } - }, - "node_modules/starlight-site-graph": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/starlight-site-graph/-/starlight-site-graph-0.5.0.tgz", - "integrity": "sha512-/FYCXDg+JwQGtxaDy1X/Lhhc5CYAF0ThOWvzBH3VmJSRlpAhqWgoUS/mGUNSy+QqGns+een+VDma+dkfBVWggA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/chroma-js": "^3.1.1", - "@types/d3": "^7.4.3", - "astro-integration-kit": "^0.18.0", - "chroma-js": "^3.1.2", - "d3": "^7.9.0", - "gray-matter": "^4.0.3", - "htmlparser2": "^10.0.0", - "micromatch": "^4.0.8" - }, - "peerDependencies": { - "@astrojs/starlight": ">=0.33.0", - "astro": ">=5.5.0", - "pixi-stats": "^1.3.10" - }, - "peerDependenciesMeta": { - "@astrojs/starlight": { - "optional": true - }, - "pixi-stats": { - "optional": true - } - } - }, - "node_modules/starlight-site-graph/node_modules/astro-integration-kit": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/astro-integration-kit/-/astro-integration-kit-0.18.0.tgz", - "integrity": "sha512-Z0QW5IQjosuKQDEGYYkvUX6EhEtrmE4/oViqWz23QveV8U7AuyFsTdg00WRNPevWZl/5a4lLUeDpv4bCRynRRg==", - "deprecated": "Check the migration guide: https://astro-integration-kit.netlify.app/migration-guide/", - "license": "MIT", - "peer": true, - "dependencies": { - "pathe": "^1.1.2", - "recast": "^0.23.7" - }, - "peerDependencies": { - "astro": "^4.12.0 || ^5.0.0" - } - }, - "node_modules/starlight-site-graph/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "license": "MIT", - "peer": true - }, - "node_modules/starlight-theme-obsidian": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/starlight-theme-obsidian/-/starlight-theme-obsidian-0.4.1.tgz", - "integrity": "sha512-O+/+JgozYi4dqijntitELDTUa1dgpnbwiOd4KvLmoEXsZiWsAFQmMKc/v5KJeSjpfjeXLPqbWrC3UQ6zEHkXGQ==", - "license": "MIT", - "peerDependencies": { - "@astrojs/starlight": ">=0.33.0", - "astro": ">=5.5.0", - "starlight-site-graph": "^0.5.0" - } - }, "node_modules/stream-replace-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", @@ -7973,16 +7433,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/style-to-js": { "version": "1.1.21", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", @@ -8001,6 +7451,12 @@ "inline-style-parser": "0.2.7" } }, + "node_modules/stylis": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz", + "integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==", + "license": "MIT" + }, "node_modules/svgo": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", @@ -8026,35 +7482,12 @@ "url": "https://opencollective.com/svgo" } }, - "node_modules/tar": { - "version": "7.5.17", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.17.tgz", - "integrity": "sha512-wPEBwzapC+2PaTYPH6e2L+cNOEE227S47wUYFqlegcs8zlLLmeb9Fcff1HVZY4Fwku/1Eyv38n7GYwB2aaS71g==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "license": "MIT" }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT", - "peer": true - }, "node_modules/tinyclip": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.15.tgz", @@ -8065,9 +7498,9 @@ } }, "node_modules/tinyexec": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz", + "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==", "license": "MIT", "engines": { "node": ">=18" @@ -8089,19 +7522,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -8122,11 +7542,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-dedent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.3.0.tgz", + "integrity": "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "optional": true }, "node_modules/ufo": { "version": "1.6.4", @@ -8146,15 +7576,6 @@ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", "license": "MIT" }, - "node_modules/undici": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", - "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, "node_modules/undici-types": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", @@ -8441,6 +7862,19 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/uuid": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.2.tgz", + "integrity": "sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -8589,28 +8023,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/which-pm-runs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", @@ -8620,27 +8032,12 @@ "node": ">=4" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, "node_modules/xxhash-wasm": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", "license": "MIT" }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/yargs-parser": { "version": "22.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", @@ -8650,16 +8047,6 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "node_modules/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", diff --git a/package.json b/package.json index 10fc1cb..32bc0a4 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,13 @@ "astro": "astro" }, "dependencies": { + "@astrojs/markdown-remark": "7.2.0", "@astrojs/starlight": "^0.41.1", "astro": "^7.0.2", - "sharp": "^0.34.5", - "starlight-ion-theme": "^2.4.0", - "starlight-theme-obsidian": "^0.4.1" + "katex": "^0.16.47", + "mermaid": "^12.0.0", + "rehype-katex": "^7.0.1", + "remark-math": "^6.0.0", + "sharp": "^0.34.5" } } diff --git a/src/components/Footer.astro b/src/components/Footer.astro deleted file mode 100644 index f522f7f..0000000 --- a/src/components/Footer.astro +++ /dev/null @@ -1,4 +0,0 @@ ---- -import DefaultFooter from '@astrojs/starlight/components/Footer.astro'; ---- -{!/^\/(?:zh-cn|en)\/?$/.test(Astro.url.pathname) && } diff --git a/src/components/Head.astro b/src/components/Head.astro new file mode 100644 index 0000000..3724434 --- /dev/null +++ b/src/components/Head.astro @@ -0,0 +1,8 @@ +--- +import DefaultHead from '@astrojs/starlight/components/Head.astro'; +--- + + + diff --git a/src/components/Header.astro b/src/components/Header.astro deleted file mode 100644 index 52923ff..0000000 --- a/src/components/Header.astro +++ /dev/null @@ -1,20 +0,0 @@ ---- -import DefaultHeader from '@astrojs/starlight/components/Header.astro'; -import Search from '@astrojs/starlight/components/Search.astro'; -import LanguageSelect from '@astrojs/starlight/components/LanguageSelect.astro'; -import SiteTitle from './SiteTitle.astro'; -const home = /^\/(?:zh-cn|en)\/?$/.test(Astro.url.pathname); -const en = Astro.locals.starlightRoute.lang === 'en'; ---- -{home ? ( - -) : } diff --git a/src/components/Hero.astro b/src/components/Hero.astro deleted file mode 100644 index 45eb9e7..0000000 --- a/src/components/Hero.astro +++ /dev/null @@ -1,6 +0,0 @@ ---- -import DefaultHero from '@astrojs/starlight/components/Hero.astro'; -import Home from './Home.astro'; -const home = /^\/(?:zh-cn|en)\/?$/.test(Astro.url.pathname); ---- -{home ? : } diff --git a/src/components/Home.astro b/src/components/Home.astro deleted file mode 100644 index 9ded39e..0000000 --- a/src/components/Home.astro +++ /dev/null @@ -1,73 +0,0 @@ ---- -import { disciplines, reading } from '../data/home'; -import '../styles/home.css'; -const en = Astro.locals.starlightRoute.lang === 'en'; ---- -
-
- - -
-
HLJU · 602 LABTHE SIMBA KNOWLEDGE BASE
-

BUILD.LEARN.ITERATE.

-
-

{en ? 'Every iteration deserves to be documented.' : '让每一次迭代,都有迹可循。'}

-

{en ? 'Engineering notes, shared experience and competition guides from Simba Robotics.' : '从第一行代码到赛场上的每一次突破。'}
{en ? 'Build on what we learn. Make the next robot better.' : '这里是 Simba 战队的知识库,也是你的工程起点。'}

-
- - -
-
-
04{en ? 'DISCIPLINES' : '专业方向'}
-
01{en ? 'SHARED KNOWLEDGE BASE' : '开放知识库'}
-
BUILD · TEST · DOCUMENT · REPEAT
- {en ? 'EXPLORE THE DOCS' : '向下探索知识库'} -
-
-
- - RMIC 2026 - {en ? 'Build your first competition robot.' : '你的第一台参赛机器人,从这里出发。'}{en ? 'Campus competition · Sep 23 – Nov 1 · Preview rules' : '黑龙江大学 RoboMaster 校内赛 · 09.23—11.01 · 规则预览版'} - {en ? 'Read the guide' : '查看参赛手册'} - -
-
01 KNOWLEDGE BASE
-

{en ? 'Find your next direction.' : '从热爱出发,向工程进阶。'}

{en ? 'Four disciplines. One robot. A shared place to learn.' : '四个方向,一台机器人。'}
{en ? 'Chinese guides with clearly marked sample content.' : '把零散的经验,连接成可复用的知识。'}

- -
-
-
02 START EXPLORING
-

{en ? 'A good place to begin.' : '不止于阅读,从动手开始。'}

{en ? 'Explore the guide' : '查看入门指南'}
- -
-
-
KNOWLEDGE IS BUILT TOGETHER.

{en ? 'Your next discovery belongs here.' : '你踩过的坑,值得成为下一条路。'}

{en ? 'A debugging note, a build log, or a better explanation. Start small.' : '一份调试记录、一次方案复盘、一段更清楚的解释。知识库的下一页,由你来写。'}

- {en ? 'Contribute a document' : '参与文档共建'} -
-
- - -
diff --git a/src/components/SiteTitle.astro b/src/components/SiteTitle.astro deleted file mode 100644 index fdc2d12..0000000 --- a/src/components/SiteTitle.astro +++ /dev/null @@ -1,8 +0,0 @@ ---- -const { siteTitleHref } = Astro.locals.starlightRoute; ---- - - - ΣDOCSSIMBA ROBOTICS - - diff --git a/src/components/TournamentFlow.astro b/src/components/TournamentFlow.astro deleted file mode 100644 index 89bb1be..0000000 --- a/src/components/TournamentFlow.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -const stages = [ - { number: '01', title: '16 → 8', format: '双败阶段 · BO3', detail: '首轮 → 胜者组 / 败者组两轮', result: '胜者组 4 队 + 败者组 4 队' }, - { number: '02', title: '8 → 4', format: '双败阶段 · BO3', detail: '胜者组 → 败者组两轮', result: '胜者组 2 队 + 败者组 2 队' }, - { number: '03', title: '四强 → 冠军', format: '单败阶段 · BO5', detail: '半决赛 → 冠军战 / 季军战', result: '决出冠军、亚军、季军、殿军' }, -]; ---- -
- {stages.map(stage =>
{stage.number} / {stage.format}{stage.title}

{stage.detail}

{stage.result}
)} -
- - diff --git a/src/content/docs/en/index.mdx b/src/content/docs/en/index.mdx index b9cc0c7..3fc9d6b 100644 --- a/src/content/docs/en/index.mdx +++ b/src/content/docs/en/index.mdx @@ -1,7 +1,31 @@ --- -title: ΣDOCS · Simba Robotics Knowledge Base -description: Engineering notes, shared experience and campus competition guides from Simba Robotics at Heilongjiang University. -template: splash -hero: - title: BUILD. LEARN. ITERATE. +title: ΣDOCS Documentation +description: Technical guides, engineering notes, and campus competition rules from Simba Robotics. --- + +import { CardGrid, LinkCard } from '@astrojs/starlight/components'; + +Welcome to **ΣDOCS**, the documentation site for Simba Robotics and the 602 Innovation Lab at Heilongjiang University. + +[Simba main site](https://simba-robotics.com) · [Documentation repository](https://git.simba-robotics.com/PRAM/simba_docs) + +## Start here + + + + + + + +## Documentation + +| Discipline | Guide | +| --- | --- | +| Mechanical engineering | [From sketch to assembly](/en/mest/getting-started/) | +| Electronics and control | [A first control development loop](/en/elct/getting-started/) | +| Vision and algorithms | [Introduction](/en/vsag/intro/) | +| Operations and media | [Documenting engineering work](/en/pram/getting-started/) | + +:::note[Work in progress] +Technical guides currently use Chinese fallback content. New sample articles are marked, and the campus competition rules remain a preview pending organizer confirmation. +::: diff --git a/src/content/docs/zh-cn/competition/index.mdx b/src/content/docs/zh-cn/competition/index.mdx index 2cf89ca..215b207 100644 --- a/src/content/docs/zh-cn/competition/index.mdx +++ b/src/content/docs/zh-cn/competition/index.mdx @@ -8,6 +8,7 @@ sidebar: text: 预览版 variant: caution --- + import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components'; :::caution[规则预览版 · 尚未最终定稿] @@ -77,12 +78,11 @@ import { CardGrid, LinkCard, Steps } from '@astrojs/starlight/components'; - + ## 原始附件 -下载《比赛规则草稿》原始 Markdown +[下载《比赛规则草稿》原始 Markdown](/downloads/rmic-2026-original-draft.md) 原始附件保持原文,便于与整理后的章节对照。原稿中的 Mermaid 赛程源码也包含在附件中。 - diff --git a/src/content/docs/zh-cn/competition/matches.mdx b/src/content/docs/zh-cn/competition/matches.md similarity index 55% rename from src/content/docs/zh-cn/competition/matches.mdx rename to src/content/docs/zh-cn/competition/matches.md index 2affa09..5f14781 100644 --- a/src/content/docs/zh-cn/competition/matches.mdx +++ b/src/content/docs/zh-cn/competition/matches.md @@ -4,8 +4,6 @@ description: 单局流程、训练安排、决赛晋级关系与奖项限制。 sidebar: order: 4 --- -import { Steps } from '@astrojs/starlight/components'; -import TournamentFlow from '../../../../components/TournamentFlow.astro'; :::caution[预览版] 本章保留原稿的赛制与奖励表述。平局、同分、奖项名额及赛程执行细节尚待组委会确认。 @@ -13,8 +11,6 @@ import TournamentFlow from '../../../../components/TournamentFlow.astro'; ## 单局比赛流程 - - 1. **检录与安装裁判系统** 验证机器人符合[制作规范](/zh-cn/competition/robot-spec/),并安装[裁判系统](/zh-cn/competition/referee-system/)。 @@ -31,8 +27,6 @@ import TournamentFlow from '../../../../components/TournamentFlow.astro'; 血量先减为 0 的一方落败;或在 **3 分钟比赛时间**耗尽后,血量较多的一方胜出。 - - :::note[准备时间与对抗时间分开计算] 三分钟准备后,再进行最多三分钟的单局对抗。原稿尚未说明双方同时归零或时间结束时血量相同的处理办法。 ::: @@ -60,22 +54,83 @@ import TournamentFlow from '../../../../components/TournamentFlow.astro'; ### 晋级流程 - +```mermaid +flowchart TD + Note["比赛顺序说明:
• 第一场前16队抽签编号1~16
• 同一组内按编号从小到大依次两两比赛
• 不同组按前文顺序进行
• 每场编号小为红方,编号大为蓝方"] -下表将原稿的 Mermaid 流程图转为可直接查阅的晋级关系。**每一行是一轮比赛,不是一场单局。** + subgraph P1["第一阶段:16进8(双败淘汰,BO3)"] + R1["首轮 16进8
16队 / 8场 BO3
按编号:1v2, 3v4, ..., 15v16"] + W1["16进8胜者组
8队 / 4场 BO3"] + L1_1["16进8败者组第一轮
8队 / 4场 BO3"] + L1_2["16进8败者组第二轮
8队 / 4场 BO3"] + end -| 轮次 | 队伍 / 场次 | 赛制 | 胜者去向 | 败者去向 | -| --- | --- | --- | --- | --- | -| 首轮 16 进 8 | 16 队 / 8 场,1v2、3v4…15v16 | BO3 | 8 队 → 16 进 8 胜者组 | 8 队 → 16 进 8 败者组第一轮 | -| 16 进 8 胜者组 | 8 队 / 4 场 | BO3 | 4 队 → 8 进 4 胜者组 | 4 队 → 16 进 8 败者组第二轮 | -| 16 进 8 败者组第一轮 | 8 队 / 4 场 | BO3 | 4 队 → 16 进 8 败者组第二轮 | 淘汰 | -| 16 进 8 败者组第二轮 | 8 队 / 4 场 | BO3 | 4 队 → 8 进 4 败者组第一轮 | 淘汰 | -| 8 进 4 胜者组 | 4 队 / 2 场 | BO3 | 2 队 → 半决赛 | 2 队 → 8 进 4 败者组第二轮 | -| 8 进 4 败者组第一轮 | 4 队 / 2 场 | BO3 | 2 队 → 8 进 4 败者组第二轮 | 淘汰 | -| 8 进 4 败者组第二轮 | 4 队 / 2 场 | BO3 | 2 队 → 半决赛 | 淘汰 | -| 半决赛 | 4 队 / 2 场 | BO5 | 2 队 → 冠军争夺战 | 2 队 → 季军争夺战 | -| 季军争夺战 | 2 队 / 1 场 | BO5 | 季军 | 殿军 | -| 冠军争夺战 | 2 队 / 1 场 | BO5 | 冠军 | 亚军 | + subgraph P2["第二阶段:8进4(双败淘汰,BO3)"] + W2["8进4胜者组
4队 / 2场 BO3"] + L2_1["8进4败者组第一轮
4队 / 2场 BO3"] + L2_2["8进4败者组第二轮
4队 / 2场 BO3"] + end + + subgraph P3["第三阶段:总决赛(单败淘汰,BO5)"] + SF["半决赛
4队 / 2场 BO5"] + Bronze["季军争夺战
1场 BO5"] + Final["冠军争夺战
1场 BO5"] + Champion["冠军"] + RunnerUp["亚军"] + Third["季军"] + Fourth["殿军"] + end + + E1["淘汰"] + E2["淘汰"] + E3["淘汰"] + E4["淘汰"] + + Note -.-> R1 + + R1 -->|"胜者 8队"| W1 + R1 -->|"败者 8队"| L1_1 + + W1 -->|"胜者 4队"| W2 + W1 -->|"败者 4队"| L1_2 + + L1_1 -->|"胜者 4队"| L1_2 + L1_1 -->|"败者"| E1 + + L1_2 -->|"胜者 4队"| L2_1 + L1_2 -->|"败者"| E2 + + W2 -->|"胜者 2队"| SF + W2 -->|"败者 2队"| L2_2 + + L2_1 -->|"胜者 2队"| L2_2 + L2_1 -->|"败者"| E3 + + L2_2 -->|"胜者 2队"| SF + L2_2 -->|"败者"| E4 + + SF -->|"胜者 2队"| Final + SF -->|"败者 2队"| Bronze + + Bronze -->|"胜者"| Third + Bronze -->|"败者"| Fourth + + Final -->|"胜者"| Champion + Final -->|"败者"| RunnerUp + + classDef stage fill:#e3f2fd,stroke:#1565c0,color:#000; + classDef finalStage fill:#fff8e1,stroke:#f9a825,color:#000; + classDef win fill:#e8f5e9,stroke:#2e7d32,color:#000; + classDef lose fill:#ffebee,stroke:#c62828,color:#000; + classDef note fill:#f5f5f5,stroke:#999,color:#000; + + class R1,W1,L1_1,L1_2,W2,L2_1,L2_2 stage; + class SF,Bronze,Final finalStage; + class Champion,RunnerUp,Third,Fourth win; + class E1,E2,E3,E4 lose; + class Note note; + +``` :::note[赛制边界] 前两个阶段为原稿所述的双败阶段,四强起改为单败阶段。跨轮重排、回避重复对阵等未在原稿中明确,请等待正式对阵表。 @@ -90,14 +145,14 @@ import TournamentFlow from '../../../../components/TournamentFlow.astro'; 排名指标依次为: -1. **主要指标:** 冠军 > 亚军 > 季军 > 殿军 > 8 强 > 16 强。 +1. **主要指标:** $\text{冠军}>\text{亚军}>\text{季军}>\text{殿军}>8\text{强}>16\text{强}$。 2. **次要指标:** 队伍总造成伤害数。 :::caution[开源审查影响奖项分配] A 类作品最高获得一等奖,B 类最高获得二等奖,C 类最高获得三等奖。若队伍获得超出限制的奖项,奖项位次按原稿顺延调整。 ::: -原稿示例:被评为 **B 类(非充分再设计)**的队伍取得冠军,则调整至二等奖第一名位置,原二等奖第一名进入一等奖名单。 +原稿示例:被评为 **B 类(非充分再设计)** 的队伍取得冠军,则调整至二等奖第一名位置,原二等奖第一名进入一等奖名单。 :::note[比赛名次与奖项位次待区分] 原稿未明确该调整是否影响冠军头衔、奖杯或八强资格。请勿据此自行推定;详见[待确认事项](/zh-cn/competition/pending/)。 @@ -119,4 +174,3 @@ A 类作品最高获得一等奖,B 类最高获得二等奖,C 类最高获 :::note[内容待发布] 原稿仅包含赛事标题,尚无参赛条件、赛制与评分规则。本页不补设规则。 ::: - diff --git a/src/content/docs/zh-cn/competition/open-source.mdx b/src/content/docs/zh-cn/competition/open-source.mdx index 65abb4f..32ef1e8 100644 --- a/src/content/docs/zh-cn/competition/open-source.mdx +++ b/src/content/docs/zh-cn/competition/open-source.mdx @@ -4,6 +4,7 @@ description: 作品报告、现场答辩、再设计分类与获奖限制。 sidebar: order: 3 --- + import { Tabs, TabItem } from '@astrojs/starlight/components'; :::caution[预览版] @@ -95,7 +96,7 @@ import { Tabs, TabItem } from '@astrojs/starlight/components'; ## 分类优先级与获奖上限 -满足某类的一条即可认定为该类,按最高分类,优先级为 **A > B > C**。例如满足 A 类 1 条、B 类 2 条,认定为 A 类。 +满足某类的一条即可认定为该类,按最高分类,优先级为 $A>B>C$。例如满足 A 类 1 条、B 类 2 条,认定为 A 类。 | 类别 | 再设计程度 | 获奖上限 | | --- | --- | --- | @@ -104,4 +105,3 @@ import { Tabs, TabItem } from '@astrojs/starlight/components'; | C | 无效再设计 | 三等奖 | 若比赛结果对应奖项超出类别上限,按[奖项评定规则](/zh-cn/competition/matches/#奖项评定)调整奖项位次。 - diff --git a/src/content/docs/zh-cn/competition/pending.md b/src/content/docs/zh-cn/competition/pending.md index 3200390..18e0e2c 100644 --- a/src/content/docs/zh-cn/competition/pending.md +++ b/src/content/docs/zh-cn/competition/pending.md @@ -50,12 +50,12 @@ sidebar: - 按参赛流程拆分章节,增加站内索引和跳转。 - 将关键数值集中到表格,使用提示栏突出禁止事项与缺失信息。 - 修正“陈宗座机器人”等明显笔误和重复编号,统一单位排版。 -- 将 Mermaid 赛程图整理为阶段示意与完整晋级关系表。 +- 直接使用原稿的 Mermaid 源码绘制赛程图,并恢复美元符号包裹的数学公式。 - 保留原稿的赛事日期、人数、费用、评分、数值限制及奖励表述。 ## 对照原始附件 -下载《比赛规则草稿》原始 Markdown +[下载《比赛规则草稿》原始 Markdown](/downloads/rmic-2026-original-draft.md) 原始附件未改写;包含完整原文及 Mermaid 源码。后续规则更新建议同时记录发布日期、修改条款和生效范围。 diff --git a/src/content/docs/zh-cn/competition/preparation.mdx b/src/content/docs/zh-cn/competition/preparation.md similarity index 94% rename from src/content/docs/zh-cn/competition/preparation.mdx rename to src/content/docs/zh-cn/competition/preparation.md index a4d21b6..c7622b8 100644 --- a/src/content/docs/zh-cn/competition/preparation.mdx +++ b/src/content/docs/zh-cn/competition/preparation.md @@ -4,7 +4,6 @@ description: 报名、规则测评、完整形态考察与晋级资格。 sidebar: order: 2 --- -import { Steps } from '@astrojs/starlight/components'; :::caution[预览版] 本章来自赛事规则草稿。道路宽度、旋转半径等未给出的判定参数,见[待确认事项](/zh-cn/competition/pending/)。 @@ -14,14 +13,10 @@ import { Steps } from '@astrojs/starlight/components'; 报名时间为 **2026 年 9 月 23 日至 10 月 9 日**。每队 3 人,每人仅可参加一队,报名费为 50 元 / 队。 - - 1. **联系队友并确认资格。** 所有选手均须为黑龙江大学本科生。 2. **加入赛事官方 QQ 群。** 后续通知将第一时间在群内发布。 3. **共同填写报名信息。** QQ 群二维码与报名链接待组委会补充。 - - ## 规则测评 | 项目 | 规定 | @@ -51,7 +46,7 @@ import { Steps } from '@astrojs/starlight/components'; | 底盘 | 全向移动 | 不旋转车体,相对地面完成前、后、左、右平移 | 15 | | 云台 | 枪口俯仰 | 使用任意方法,使水弹发射机构绕某一与地面平行的轴转动超过 30° | 15 | | 云台 | 发射水弹 | 以不大于 1 s 的发射间隔连续发射 10 s,不卡弹 | 15 | -| 云台 | 定点击打 | 30 s 内,命中 1 m 外面积为 100 cm² 的固定靶 5 次以上 | 15 | +| 云台 | 定点击打 | 30 s 内,命中 1 m 外面积为 $100cm^2$ 的固定靶 5 次以上 | 15 | | 其他 | 有助于对战的功能 | 内容不限 | 10 | :::note[评分细则待补充] @@ -71,4 +66,3 @@ import { Steps } from '@astrojs/starlight/components'; ## 同日开源审查 作品报告必须在完整形态考察前提交;考察通过后,当天接受实物审查。材料清单与获奖限制详见[开源审查](/zh-cn/competition/open-source/)。 - diff --git a/src/content/docs/zh-cn/competition/robot-spec.md b/src/content/docs/zh-cn/competition/robot-spec.md index 97c00b3..21a46ee 100644 --- a/src/content/docs/zh-cn/competition/robot-spec.md +++ b/src/content/docs/zh-cn/competition/robot-spec.md @@ -14,8 +14,8 @@ sidebar: | --- | --- | | 运动控制 | 能通过遥控装置或裁判系统控制运动 | | 发射器数量 | **有且仅有 1 个**水弹发射器 | -| 初始尺寸(包覆盒) | **小于 350 × 350 × 350 mm** | -| 伸展尺寸 | **小于 400 × 400 × 400 mm** | +| 初始尺寸(包覆盒) | **小于 $350\times350\times350(mm)$** | +| 伸展尺寸 | **小于 $400\times400\times400(mm)$** | | 裁判系统安装位 | 4 个装甲板模块和 1 个图传模块;平衡车构型例外见下文 | **初始尺寸**指机器人至少有一个状态小于规定尺寸;**伸展尺寸**指机器人在任何状态下都必须小于规定尺寸。 @@ -64,11 +64,11 @@ sidebar: 1. 线缆应整齐且不外露;无法避免的外露线材应使用束线管、理线器等保护。 2. 避免使用明显影响美观的材料,如塑料袋、床单、快递气垫膜。 3. 禁止刻意设计或使用尖锐结构,以免破坏场地或伤害人员。 -4. 禁止出现面积大于 **30 × 30 mm²** 的接近纯红色或纯蓝色外观涂装。 +4. 禁止出现面积大于 **$30\times30mm^2$** 的接近纯红色或纯蓝色外观涂装。 5. 禁止其他违背赛事精神的外观设计。 :::note[涂装面积口径待确认] -“30 × 30 mm²”沿用原稿写法。面积阈值、计算方式及“接近纯红 / 纯蓝”的判定需组委会明确。 +“$30\times30mm^2$”沿用原稿写法。面积阈值、计算方式及“接近纯红 / 纯蓝”的判定需组委会明确。 ::: ## 发射机构 @@ -88,26 +88,26 @@ sidebar: ### 机体坐标系 -采用标准 **X、Y、Z 笛卡尔坐标系**: +采用标准 **$X,Y,Z$ 笛卡尔坐标系**: - 原点:机器人质量中心。 -- X 轴:底盘构型最大效率方向;存在多个方向时可任选其一。 -- Z 轴:指向地心。 +- $X$ 轴:底盘构型最大效率方向;存在多个方向时可任选其一。 +- $Z$ 轴:指向地心。 - 机器人运动学方程也需建立在此坐标系下。 ### 安装角度与方向 -1. 装甲模块与支撑架稳固连接,支撑架底部连接面与 XY 平面平行。 -2. 受力面所在平面的法向量所在直线,与 Z 轴负方向所在直线的锐角为 **75°**。 -3. 装甲模块不含侧灯的两条边,与 XY 平面的夹角 **小于 5°**。 -4. 取受击面法向量中与 Z 轴负方向成锐角的一支,其在 XY 平面上的投影为装甲模块的**方向向量**。 -5. 四块装甲的方向向量分别对应 **+X、−X、+Y、−Y**,与对应坐标轴的角度误差 **不超过 5°**。 +1. 装甲模块与支撑架稳固连接,支撑架底部连接面与 $XY$ 平面平行。 +2. 受力面所在平面的法向量所在直线,与 $Z$ 轴负方向所在直线的锐角为 **$75°$**。 +3. 装甲模块不含侧灯的两条边,与 $XY$ 平面的夹角 **小于 $5°$**。 +4. 取受击面法向量中与 $Z$ 轴负方向成锐角的一支,其在 $XY$ 平面上的投影为装甲模块的**方向向量**。 +5. 四块装甲的方向向量分别对应 $+X,-X,+Y,-Y$,与对应坐标轴的角度误差 **不超过 $5°$**。 ### 参考坐标与位置 - 装甲安装方式应与机器人的结构特性或运动学特性共享同一参考坐标系。 -- X 轴上两块装甲的几何中心连线,与 Y 轴上两块装甲的几何中心连线互相垂直。 -- 装甲模块相对于机器人几何中心的偏移量,在 X 轴或 Y 轴上的分量 **不得超过 30 mm**。 +- $X$ 轴上两块装甲的几何中心连线,与 $Y$ 轴上两块装甲的几何中心连线互相垂直。 +- 装甲模块相对于机器人几何中心的偏移量,在 $X$ 轴或 $Y$ 轴上的分量 **不得超过 $30mm$**。 :::note[偏移量的测量对象待确认] 上述偏移限制保留原稿表述。具体是指单块装甲、成对装甲中心还是安装轴线,应结合组委会补充图示确认后制作。 @@ -117,7 +117,7 @@ sidebar: 支撑架可采用官方设计或自制,安装后的装甲模块、支撑架必须与底盘刚性连接;比赛中不可与底盘发生相对移动。 -**判定方法:** 在装甲模块下边缘中点施加竖直向上的 **20 N** 力,受击面角度 α 的变化 **不得大于 5°**。 +**判定方法:** 在装甲模块下边缘中点施加竖直向上的 **$20N$** 力,受击面角度 $\alpha$ 的变化 **不得大于 $5°$**。 :::note[示意图待补充] 原稿提及刚性连接示意图,但附件未包含图片。本章保留文字定义,不补绘可能影响判定的尺寸图。 @@ -125,15 +125,15 @@ sidebar: ### 平衡车构型例外 -**90% 的时间仅有两轮接地**的底盘定义为平衡车构型,只需安装 **+X 与 −X** 方向的装甲板模块。 +**90% 的时间仅有两轮接地**的底盘定义为平衡车构型,只需安装 $+X$ 与 $-X$ 方向的装甲板模块。 ## 变形约束 | 项目 | 约束 | | --- | --- | -| 装甲运动 | 不可相对底盘连续、往复快速移动;快速移动定义为速度超过 **0.5 m/s** | -| 下边缘高度差 | 任意两块装甲板下边缘高度差 **不超过 50 mm** | -| 离地高度 | 比赛中任意装甲板下边缘必须保持在 **30—200 mm(含端点)** | +| 装甲运动 | 不可相对底盘连续、往复快速移动;快速移动定义为速度超过 **$0.5m/s$** | +| 下边缘高度差 | 任意两块装甲板下边缘高度差 **不超过 $50mm$** | +| 离地高度 | 比赛中任意装甲板下边缘必须保持在 **$[30,200]mm$(含端点)** | | 安装孔位 | 设计时考虑避免装甲板受撞击 | :::caution[装甲板破损不能通过检录] diff --git a/src/content/docs/zh-cn/guides/contributing.mdx b/src/content/docs/zh-cn/guides/contributing.mdx index aa0397f..1b5b3aa 100644 --- a/src/content/docs/zh-cn/guides/contributing.mdx +++ b/src/content/docs/zh-cn/guides/contributing.mdx @@ -1,32 +1,19 @@ --- title: 文档共建指南 -description: 用 Markdown 与 Starlight 组件记录工程经验。 +description: 使用 Markdown、组件、数学公式和 Mermaid 记录工程经验。 sidebar: order: 2 --- -import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +import { Tabs, TabItem } from '@astrojs/starlight/components'; :::note[协作规范示例] 本页是一份可修改的文档写作模板。审核人、分支策略和发布流程需按战队实际约定补充。 ::: -## 一篇文档回答什么 +## 使用 Markdown 编写 -| 部分 | 要回答的问题 | -| --- | --- | -| 目标 | 读者要解决什么问题? | -| 前提 | 适用的硬件、软件版本和基础知识是什么? | -| 步骤 | 如何复现?关键参数为什么这样选? | -| 验证 | 用什么现象或数据证明完成? | -| 排错 | 常见失败有哪些?如何定位? | -| 参考 | 来源、许可证和相关文档在哪里? | - -## 选择页面格式 - - - - -普通文章使用 `.md`,适合标题、表格、代码块和提示栏。 +在对应分类目录中新增 `.md` 或 `.mdx` 文件即可。首页与普通文章使用相同的 Starlight 文档框架;纯文字内容可使用 Markdown,需要卡片、步骤、标签页或自定义组件时使用 MDX。两种格式都支持提示栏、数学公式与 Mermaid。 ```md --- @@ -40,24 +27,45 @@ sidebar: 写清楚这次要验证的行为。 +## 操作步骤 + +1. 记录环境。 +2. 执行操作。 +3. 核对结果。 +``` + +## 按内容选择组件 + +可以使用任意 Starlight 组件和项目内的 Astro 组件;需要 React、Vue 等框架组件时,先为项目配置对应的 Astro 集成。在 `.mdx` 文件的 frontmatter 后导入组件,再与 Markdown 正文一起使用。本页的标签页就是一个示例: + + + + +适合笔记、规则条款、表格和参考链接。保存为 `.md` 即可,不需要组件导入。 + +```md +## 调试记录 + +1. 记录环境与接线。 +2. 完成实验并保存结果。 + :::tip[复现提示] -注明固件版本与接线方式。 +注明固件版本与关键参数。 ::: ``` - + -需要卡片、步骤和标签页时使用 `.mdx`。组件从 Starlight 导入: +保存为 `.mdx`,即可将组件与 Markdown 混排。例如用 `Steps` 展示顺序操作: ```mdx import { Steps } from '@astrojs/starlight/components'; -1. 记录环境。 -2. 执行操作。 -3. 核对结果。 +1. 记录环境与接线。 +2. 完成实验并保存结果。 ``` @@ -65,7 +73,70 @@ import { Steps } from '@astrojs/starlight/components'; -## 提示栏如何选 +组件示例可参考[首页卡片](/zh-cn/)、[入门步骤](/zh-cn/guides/getting-started/)和[开源审查分类](/zh-cn/competition/open-source/)。完整用法见 [Starlight 组件文档](https://starlight.astro.build/zh-cn/components/using-components/)。 + +## 一篇文档回答什么 + +| 部分 | 要回答的问题 | +| --- | --- | +| 目标 | 读者要解决什么问题? | +| 前提 | 适用的硬件、软件版本和基础知识是什么? | +| 步骤 | 如何复现?关键参数为什么这样选? | +| 验证 | 用什么现象或数据证明完成? | +| 排错 | 常见失败有哪些?如何定位? | +| 参考 | 来源、许可证和相关文档在哪里? | + +## 数学公式 + +行内公式使用 `$…$`,独立公式使用单独成行的 `$$` 包裹。延续原始规则草稿的 LaTeX 写法: + +```tex +初始尺寸小于 $350\times350\times350(mm)$。 + +$$ +v = \frac{\Delta x}{\Delta t} +$$ +``` + +显示效果:初始尺寸小于 $350\times350\times350(mm)$。 + +$$ +v = \frac{\Delta x}{\Delta t} +$$ + +正文、导航、代码与图表标签统一采用无衬线字体,数学公式保留 KaTeX 数学字体。 + +## Mermaid 流程图 + +使用标记为 `mermaid` 的围栏代码块,直接维护图的源码。 + +````md +```mermaid +flowchart LR + A[记录问题] --> B[复现实验] + B --> C[核对结果] +``` +```` + +显示效果: + +```mermaid +flowchart LR + A[记录问题] --> B[复现实验] + B --> C[核对结果] +``` + +流程图随 Starlight 深浅主题切换。宽图默认适应正文宽度,可点击“放大查看”后滚动阅读细节;没有 JavaScript 时保留可读源码。[比赛赛程](/zh-cn/competition/matches/#晋级流程)直接使用原始附件中的 Mermaid 定义。 + +## 提示栏 + +保留 Starlight 的提示栏语法,不需要组件导入: + +```md +:::tip[复现提示] +注明固件版本与接线方式。 +::: +``` :::note[补充背景] 说明适用范围、版本或尚未确认的内容。 @@ -85,14 +156,9 @@ import { Steps } from '@astrojs/starlight/components'; ## 发布前检查 - - 1. **核实内容。** 区分正式规则、经验建议、示例与待确认项。 2. **检查链接。** 使用完整站内路径,如 `/zh-cn/competition/`。 3. **构建预览。** 执行 `npm run build`;开发预览使用 `npm run dev -- --background`。 -4. **人工复核。** 检查手机排版、表格、提示栏及引用来源。 - - - -代码位于 [Simba 文档仓库](https://git.simba-robotics.com/PRAM/simba_docs)。各分类由目录自动生成,首页入口在 `src/data/home.ts` 中维护。 +4. **人工复核。** 检查手机排版、表格、数学公式、流程图与提示栏。 +代码位于 [Simba 文档仓库](https://git.simba-robotics.com/PRAM/simba_docs)。各分类按目录自动生成,首页内容直接在 `src/content/docs/zh-cn/index.mdx` 中维护。 diff --git a/src/content/docs/zh-cn/guides/getting-started.mdx b/src/content/docs/zh-cn/guides/getting-started.mdx index 73e8a32..0b7206f 100644 --- a/src/content/docs/zh-cn/guides/getting-started.mdx +++ b/src/content/docs/zh-cn/guides/getting-started.mdx @@ -4,7 +4,8 @@ description: 认识 ΣDOCS,选择一个方向,完成第一次工程实践。 sidebar: order: 1 --- -import { Steps, CardGrid, LinkCard } from '@astrojs/starlight/components'; + +import { Steps } from '@astrojs/starlight/components'; 欢迎来到 **ΣDOCS**。这里整理 Simba 战队在机械、电控、视觉与团队协作中的知识,也收录校内赛参赛手册。 @@ -13,11 +14,8 @@ import { Steps, CardGrid, LinkCard } from '@astrojs/starlight/components'; ::: ## 先找到你的入口 - - - - - +- [准备参加校内赛](/zh-cn/competition/):先读参赛资格、赛事日程和机器人制作规范。 +- [准备贡献文档](/zh-cn/guides/contributing/):了解页面结构、提示栏和发布前检查。 ## 一次入门实践 @@ -44,4 +42,3 @@ import { Steps, CardGrid, LinkCard } from '@astrojs/starlight/components'; :::tip[先完成一个小闭环] “跑起来”只是第一步。能够解释为什么、说明适用条件,并让别人复现,才是一份有用的工程记录。 ::: - diff --git a/src/content/docs/zh-cn/index.mdx b/src/content/docs/zh-cn/index.mdx index 9f160c0..4585fba 100644 --- a/src/content/docs/zh-cn/index.mdx +++ b/src/content/docs/zh-cn/index.mdx @@ -1,7 +1,32 @@ --- -title: ΣDOCS · Simba 战队知识库 -description: 黑龙江大学 Simba Robotics 战队的开放知识库,汇集机械、电控、视觉、团队协作与 2026 RoboMaster 校内赛手册。 -template: splash -hero: - title: BUILD. LEARN. ITERATE. +title: ΣDOCS 文档站 +description: 黑龙江大学 Simba 机器人战队的技术文档、学习笔记与校内赛参赛手册。 --- + +import { CardGrid, LinkCard } from '@astrojs/starlight/components'; + +欢迎来到 **ΣDOCS**,黑龙江大学 602 创新实验室 / Simba 机器人战队的文档站。这里记录机械、电控、视觉与团队协作中的知识,供队员学习、查阅和共同完善。 + +[Simba 战队主站](https://simba-robotics.com) · [文档仓库](https://git.simba-robotics.com/PRAM/simba_docs) + +## 从这里开始 + + + + + + + +## 文档目录 + +| 方向 | 内容入口 | +| --- | --- | +| 机械架构 · MEST | [从草图到装配](/zh-cn/mest/getting-started/) | +| 电传测控 · ELCT | [电控开发的第一个闭环](/zh-cn/elct/getting-started/) | +| 视觉算法 · VSAG | [视觉组导论](/zh-cn/vsag/intro/)、[视觉任务链路](/zh-cn/vsag/pipeline/) | +| 宣传筹划 · PRAM | [把工程故事记录下来](/zh-cn/pram/getting-started/) | +| 2026 校内赛 · RMIC | [赛事概览与日程](/zh-cn/competition/)、[机器人制作规范](/zh-cn/competition/robot-spec/) | + +:::note[内容建设中] +新增技术示例已在各页标注,后续可替换为经过验证的实际内容。校内赛手册仍为规则预览版,缺失信息集中列于[待确认事项](/zh-cn/competition/pending/)。 +::: diff --git a/src/data/home.ts b/src/data/home.ts deleted file mode 100644 index a6507f9..0000000 --- a/src/data/home.ts +++ /dev/null @@ -1,13 +0,0 @@ -// 首页示例入口集中在这里维护;文章正文位于 src/content/docs/。 -export const disciplines = [ - { code: 'MEST', title: '机械架构', en: 'Mechanical engineering', description: '从第一张草图,到能上场的机器人。', enDescription: 'From the first sketch to a robot in the arena.', tags: 'CAD / 结构设计 / 加工装配', href: '/zh-cn/mest/getting-started/', icon: 'mest' }, - { code: 'ELCT', title: '电传测控', en: 'Electronics & control', description: '连接电路与代码,让每一次运动可控。', enDescription: 'Connect circuits and code. Make every motion count.', tags: 'STM32 / 嵌入式 / 运动控制', href: '/zh-cn/elct/getting-started/', icon: 'elct' }, - { code: 'VSAG', title: '视觉算法', en: 'Vision & algorithms', description: '感知赛场,理解目标,做出下一步决策。', enDescription: 'Perceive the field. Understand the next move.', tags: 'OpenCV / 目标检测 / 自主决策', href: '/zh-cn/vsag/intro/', icon: 'vsag' }, - { code: 'PRAM', title: '宣传筹划', en: 'Operations & media', description: '记录每一次迭代,让工程故事被看见。', enDescription: 'Document every iteration. Share the engineering story.', tags: '视觉设计 / 内容创作 / 团队协作', href: '/zh-cn/pram/getting-started/', icon: 'pram' }, -]; -export const reading = [ - { code: 'START HERE', title: '新队员,从这里开始', en: 'Your first steps with Simba', description: '认识知识库,选择方向,完成第一次实践。', enDescription: 'Find your discipline and start a first project.', href: '/zh-cn/guides/getting-started/', label: '入门指南', enLabel: 'GETTING STARTED' }, - { code: 'BUILD TOGETHER', title: '把经验写成下一份文档', en: 'Turn experience into documentation', description: '使用统一的结构,记录问题、过程与验证结果。', enDescription: 'Capture the problem, process and verification.', href: '/zh-cn/guides/contributing/', label: '协作规范 · 示例', enLabel: 'CONTRIBUTING · SAMPLE' }, - { code: 'FIELD NOTES', title: '一次视觉任务的完整链路', en: 'Inside a vision pipeline', description: '从图像输入到控制输出,拆解模块与接口。', enDescription: 'Trace a frame from camera input to control output.', href: '/zh-cn/vsag/pipeline/', label: '技术笔记 · 示例', enLabel: 'TECHNICAL NOTE · SAMPLE' }, -]; - diff --git a/src/plugins/remark-mermaid.mjs b/src/plugins/remark-mermaid.mjs new file mode 100644 index 0000000..b330642 --- /dev/null +++ b/src/plugins/remark-mermaid.mjs @@ -0,0 +1,31 @@ +/** Render standard fenced Mermaid blocks without requiring MDX components. */ +export default function remarkMermaid() { + return (tree) => { + const visit = (parent) => { + if (!parent.children) return; + parent.children = parent.children.map((node) => { + if (node.type === 'code' && node.lang === 'mermaid') { + // HAST data works in both Markdown and MDX, without injecting raw HTML. + // Text nodes safely preserve the source as the no-JavaScript fallback. + return { + type: 'paragraph', + children: [], + data: { + hName: 'div', + hProperties: { className: ['mermaid-diagram'], 'data-pagefind-ignore': true }, + hChildren: [{ + type: 'element', + tagName: 'pre', + properties: { className: ['mermaid-source'] }, + children: [{ type: 'text', value: node.value }], + }], + }, + }; + } + visit(node); + return node; + }); + }; + visit(tree); + }; +} diff --git a/src/scripts/mermaid.ts b/src/scripts/mermaid.ts new file mode 100644 index 0000000..d60e413 --- /dev/null +++ b/src/scripts/mermaid.ts @@ -0,0 +1,113 @@ +// Only diagram pages load Mermaid. Authors use ordinary fenced code blocks. +const sources = new WeakMap(); +let running = false; +let pending = false; +let sequence = 0; + +async function renderDiagrams() { + if (running) { + pending = true; + return; + } + const diagrams = [...document.querySelectorAll('.mermaid-diagram')]; + if (!diagrams.length) return; + running = true; + try { + const { default: mermaid } = await import('mermaid'); + const dark = document.documentElement.dataset.theme === 'dark'; + mermaid.initialize({ + startOnLoad: false, + securityLevel: 'strict', + theme: 'base', + themeVariables: { + darkMode: dark, + background: dark ? '#1a1a1a' : '#ffffff', + primaryColor: dark ? '#401820' : '#ffeaed', + primaryTextColor: dark ? '#eeeeee' : '#292929', + primaryBorderColor: dark ? '#d65a70' : '#c21932', + lineColor: dark ? '#c4c4c4' : '#5c5c5c', + secondaryColor: dark ? '#303030' : '#f4f4f4', + tertiaryColor: dark ? '#242424' : '#fafafa', + clusterBkg: dark ? '#242424' : '#fafafa', + clusterBorder: dark ? '#5c5c5c' : '#b8b8b8', + edgeLabelBackground: dark ? '#242424' : '#ffffff', + }, + fontFamily: getComputedStyle(document.documentElement).getPropertyValue('--sl-font').trim(), + flowchart: { htmlLabels: false, useMaxWidth: false }, + suppressErrorRendering: true, + }); + for (const diagram of diagrams) { + if (!diagram.isConnected) continue; + const source = sources.get(diagram) ?? diagram.querySelector('.mermaid-source')?.textContent; + if (!source) continue; + sources.set(diagram, source); + try { + const { svg } = await mermaid.render(`mermaid-diagram-${++sequence}`, source); + if (!diagram.isConnected) continue; + const previousCanvas = diagram.querySelector('.mermaid-canvas'); + const position = { left: previousCanvas?.scrollLeft ?? 0, top: previousCanvas?.scrollTop ?? 0 }; + const chinese = document.documentElement.lang.startsWith('zh'); + const canvas = document.createElement('div'); + canvas.className = 'mermaid-canvas'; + canvas.innerHTML = svg; + canvas.setAttribute('role', 'region'); + canvas.setAttribute('aria-label', chinese ? 'Mermaid 流程图,可滚动查看' : 'Mermaid diagram, scroll to explore'); + canvas.tabIndex = 0; + const width = canvas.querySelector('svg')?.viewBox.baseVal.width; + if (width) canvas.style.setProperty('--mermaid-width', `${width}px`); + + const zoom = document.createElement('button'); + zoom.type = 'button'; + zoom.className = 'mermaid-zoom'; + const updateButton = () => { + const expanded = diagram.dataset.zoomed === 'true'; + zoom.textContent = chinese ? (expanded ? '适应宽度' : '放大查看') : (expanded ? 'Fit to width' : 'Enlarge diagram'); + zoom.setAttribute('aria-pressed', String(expanded)); + }; + updateButton(); + zoom.addEventListener('click', () => { + diagram.dataset.zoomed = String(diagram.dataset.zoomed !== 'true'); + updateButton(); + canvas.scrollTop = 0; + canvas.scrollLeft = 0; + if (diagram.dataset.zoomed === 'true') { + // Start at the topmost node, even when a wide bracket is asymmetric. + const firstNode = [...canvas.querySelectorAll('.node')] + .map((node) => node.getBoundingClientRect()) + .sort((a, b) => a.top - b.top || a.left - b.left)[0]; + canvas.scrollLeft = firstNode + ? firstNode.left + firstNode.width / 2 - canvas.getBoundingClientRect().left - canvas.clientWidth / 2 + : (canvas.scrollWidth - canvas.clientWidth) / 2; + } + }); + diagram.replaceChildren(zoom, canvas); + canvas.scrollLeft = position.left; + canvas.scrollTop = position.top; + diagram.dataset.rendered = 'true'; + } catch (error) { + // Preserve the original text if a contributor's diagram cannot be parsed. + const fallback = document.createElement('pre'); + fallback.className = 'mermaid-source'; + fallback.textContent = source; + diagram.replaceChildren(fallback); + diagram.dataset.rendered = 'error'; + console.error('Unable to render Mermaid diagram:', error); + } + } + } catch (error) { + console.error('Unable to load Mermaid:', error); + } finally { + running = false; + if (pending) { + pending = false; + void renderDiagrams(); + } + } +} + +void renderDiagrams(); +document.addEventListener('astro:page-load', renderDiagrams); +new MutationObserver(() => void renderDiagrams()).observe(document.documentElement, { + attributes: true, + attributeFilter: ['data-theme'], +}); diff --git a/src/styles/custom.css b/src/styles/custom.css index 1eda380..126e859 100644 --- a/src/styles/custom.css +++ b/src/styles/custom.css @@ -1,24 +1,63 @@ :root { - --sl-font: 'Segoe UI', 'Microsoft YaHei', system-ui, sans-serif; - --sl-font-mono: 'Cascadia Code', Consolas, monospace; + --sl-font: 'Segoe UI', 'Microsoft YaHei', 'Noto Sans', Arial, sans-serif; + --sl-font-mono: var(--sl-font); + --sl-font-system-mono: var(--sl-font); --sl-color-accent-low: #401820; --sl-color-accent: #d91c3a; --sl-color-accent-high: #ffb3bd; } +:root[data-theme='dark'], [data-theme='dark'] ::backdrop { + --sl-color-white: #fafafa; + --sl-color-gray-1: #eeeeee; + --sl-color-gray-2: #c4c4c4; + --sl-color-gray-3: #929292; + --sl-color-gray-4: #5c5c5c; + --sl-color-gray-5: #383838; + --sl-color-gray-6: #242424; + --sl-color-black: #1a1a1a; + --sl-color-bg: #1a1a1a; + --sl-color-bg-nav: #222222; + --sl-color-bg-sidebar: #202020; + --sl-color-text-accent: #ff8fa1; + --sl-color-backdrop-overlay: rgb(18 18 18 / 66%); +} :root[data-theme='light'] { --sl-color-accent-low: #ffeaed; --sl-color-accent: #c21932; --sl-color-accent-high: #891328; } -.docs-brand { display: inline-flex; align-items: center; gap: 11px; color: var(--sl-color-white); text-decoration: none; white-space: nowrap; } -.brand-icon { background: #090a0c; padding: 5px; display: flex; border-radius: 2px; } -.brand-name { font-size: 25px; line-height: 1.1; font-weight: 800; letter-spacing: -.04em; } -.brand-name small { display: block; margin-top: 5px; font: 8px/1.2 var(--sl-font-mono); letter-spacing: .14em; color: var(--sl-color-gray-2); } -:focus-visible { outline: 2px solid var(--sl-color-text-accent); outline-offset: 5px; } -.sl-markdown-content :is(h2, h3) { scroll-margin-top: 1rem; } -.sl-markdown-content table { font-size: .9rem; } -.sl-markdown-content details { padding: 1rem 1.2rem; border: 1px solid var(--sl-color-hairline); border-radius: 4px; } -.sl-markdown-content summary { cursor: pointer; font-weight: 600; } -.starlight-aside { border-radius: 0 4px 4px 0; } -@media print { .docs-brand { color: black; } } +/* Includes navigation, form controls, code, and diagram labels. KaTeX keeps its math fonts. */ +body, button, input, select, textarea, code, pre, kbd, samp { + font-family: var(--sl-font); +} +.site-title img { + padding: .25rem; + border-radius: .25rem; + background: #222222; +} +:root[data-theme='dark'] .sidebar-pane a[aria-current='page'] { + color: #ffffff; + background-color: #b91e36; +} +.katex-display { overflow-x: auto; overflow-y: hidden; padding-block: .5rem; } +.mermaid-diagram { + max-width: 100%; + margin-block: 1.5rem; + padding: 1rem; + border: 1px solid var(--sl-color-hairline); + border-radius: .25rem; +} +.mermaid-canvas { max-height: 75vh; overflow: auto; margin-top: .75rem; } +.mermaid-diagram svg { display: block; width: 100%; height: auto; margin-inline: auto; } +.mermaid-diagram[data-zoomed='true'] svg { width: var(--mermaid-width); max-width: none; } +.mermaid-zoom { padding: .35rem .75rem; border: 1px solid var(--sl-color-gray-5); border-radius: .25rem; color: var(--sl-color-text); background: var(--sl-color-bg); cursor: pointer; } +.mermaid-zoom:hover { border-color: var(--sl-color-text-accent); } +.mermaid-diagram svg :is(text, tspan, foreignObject, span, p) { font-family: var(--sl-font) !important; } +.mermaid-source { white-space: pre; } +@media print { + .mermaid-diagram { overflow: visible; padding: 0; border: 0; } + .mermaid-zoom { display: none; } + .mermaid-canvas { max-height: none; overflow: visible; } + .mermaid-diagram svg, .mermaid-diagram[data-zoomed='true'] svg { width: 100%; height: auto; } +} diff --git a/src/styles/home.css b/src/styles/home.css deleted file mode 100644 index 6e8e0d4..0000000 --- a/src/styles/home.css +++ /dev/null @@ -1,179 +0,0 @@ -/* Only splash pages use the main site's fixed dark palette. Articles keep both themes. */ -:root:has(.docs-home) { - color-scheme: dark; - --sl-color-bg: #090a0c; --sl-color-bg-nav: #090a0c; - --sl-color-white: #f4f1ea; --sl-color-black: #090a0c; - --sl-color-gray-1: #e6e3df; --sl-color-gray-2: #c2c2c3; - --sl-color-gray-3: #96979c; --sl-color-gray-4: #565a60; - --sl-color-gray-5: #292c31; --sl-color-gray-6: #15171b; --sl-color-gray-7: #101216; - --sl-color-accent: #ff3047; --sl-color-accent-low: #401820; --sl-color-accent-high: #ffb3bd; - --sl-color-text: #c2c2c3; --sl-color-text-accent: #ff8998; - --sl-color-hairline: #ffffff1c; --sl-color-hairline-shade: #ffffff1c; - --sl-color-bg-inline-code: #181b20; --sl-nav-height: 5rem; -} -:root:has(.docs-home) .content-panel { padding: 0; } -:root:has(.docs-home) .sl-container { max-width: none; } -:root:has(.docs-home) .sl-container > * + * { margin-top: 0; } -:root:has(.docs-home) main { padding: 0; } -:root:has(.docs-home) .header { border-bottom: 1px solid #ffffff1c; } -.home-header { display: flex; align-items: center; justify-content: space-between; height: 100%; gap: 24px; max-width: 1440px; margin: auto; } -.home-header nav { display: flex; align-items: stretch; height: calc(var(--sl-nav-height) - 1px); } -.home-header nav a { display: flex; align-items: center; gap: 8px; padding: 0 19px; color: #c2c2c3; text-decoration: none; font-size: 13px; border-bottom: 2px solid transparent; } -.home-header nav a span { color: #ff5a6d; font: 10px var(--sl-font-mono); } -.home-header nav a:hover, .home-header nav a.active { background: #ffffff04; color: #fff; border-color: #ff3047; } -.home-tools { display: flex; align-items: center; gap: 18px; } -.home-tools site-search button[data-open-modal] { width: 40px; height: 40px; justify-content: center; background: transparent; border: 1px solid #ffffff22; padding: 0; } -.home-tools site-search button[data-open-modal] > :not(svg) { display: none; } -.docs-home { --red: #ff3047; --paper: #f4f1ea; --muted: #96979c; --line: #ffffff1c; color: var(--paper); background: #090a0c; font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif; } -.docs-home a { text-decoration: none; } -.docs-home a:focus-visible { outline: 2px solid #ff8998; outline-offset: 5px; } -.home-hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); } -.hero-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 65% center; opacity: .55; } -.home-hero::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, #090a0cf5 5%, #090a0ccc 35%, #090a0c15 75%), linear-gradient(0deg, #090a0c 2%, transparent 45%); pointer-events: none; } -.hero-grid { position: absolute; inset: 0; background-image: linear-gradient(#ffffff05 1px, transparent 1px), linear-gradient(90deg, #ffffff05 1px, transparent 1px); background-size: 80px 80px; } -.hero-shell { position: relative; z-index: 1; max-width: 1320px; margin: auto; padding: 64px 48px 50px; } -.eyebrow { display: flex; align-items: center; gap: 13px; font: 10px var(--sl-font-mono); letter-spacing: .1em; } -.eyebrow > span { background: var(--red); color: white; padding: 7px 10px; } -.eyebrow b { font-weight: 500; color: #c2c2c3; } -.home-hero h1 { font-family: 'Arial Black', 'Segoe UI', sans-serif; font-size: clamp(64px, 7.8vw, 108px); letter-spacing: -.065em; line-height: .97; font-weight: 900; margin: 30px 0 24px; } -.home-hero h1 > span { display: block; } -.home-hero .outline { -webkit-text-stroke: 1px #a4a4a7; color: transparent; margin-left: .58em; } -.red { color: var(--red); } -.hero-copy h2 { font-size: clamp(19px, 2vw, 25px); letter-spacing: .04em; font-weight: 650; } -.hero-copy p { font-size: 13px; color: #b6b7bc; line-height: 1.9; margin-top: 12px; } -.hero-actions { display: flex; gap: 12px; margin-top: 27px; flex-wrap: wrap; } -.home-button { display: inline-flex; min-height: 48px; align-items: center; justify-content: space-between; gap: 40px; padding: 0 22px; border: 1px solid #ffffff38; color: var(--paper); font-size: 13px; font-weight: 600; transition: background .2s, border-color .2s; } -.home-button span { font-size: 20px; font-weight: 400; } -.home-button.primary { background: var(--red); border-color: var(--red); color: white; } -.home-button:hover { border-color: var(--red); background: #ff304720; } -.home-button.primary:hover { background: #da1b34; } -.image-caption { position: absolute; right: 48px; bottom: 55px; padding: 14px 16px; border: 1px solid #ffffff26; background: #090a0cbb; font: 9px/2 var(--sl-font-mono); letter-spacing: .08em; color: #c2c2c3; } -.image-caption > span:last-child { color: #878a90; padding-left: 13px; } -.signal { display: inline-block; width: 5px; height: 5px; background: #66e6a4; margin-right: 6px; vertical-align: middle; } -.hero-bottom { position: relative; z-index: 1; max-width: 1224px; padding: 23px 0; margin: auto; border-top: 1px solid var(--line); display: flex; align-items: center; gap: 36px; } -.hero-bottom > div { display: flex; align-items: baseline; gap: 10px; } -.hero-bottom strong { font: 600 27px/1 var(--sl-font-mono); } -.hero-bottom span { font-size: 11px; color: var(--muted); } -.hero-bottom .hero-motto { color: #858991; font: 9px var(--sl-font-mono); letter-spacing: .09em; margin-left: auto; } -.hero-bottom > a { display: flex; align-items: center; gap: 20px; font-size: 10px; color: #c2c2c3; } -.hero-bottom > a span { color: var(--red); font-size: 21px; } -.home-inner { max-width: 1320px; padding: 0 48px; margin: auto; } -.competition-notice { margin-top: 32px; display: flex; align-items: center; gap: 24px; background: linear-gradient(100deg, #ff304710, #111316 70%); border: 1px solid #ff304738; border-left: 3px solid var(--red); padding: 22px 26px; color: var(--paper); } -.notice-tag { font: 11px var(--sl-font-mono); color: #ff7a8b; letter-spacing: .04em; white-space: nowrap; } -.notice-copy { display: flex; flex-direction: column; gap: 6px; } -.notice-copy strong { font-size: 14px; font-weight: 600; } -.notice-copy > span { color: var(--muted); font-size: 11px; } -.notice-link { display: flex; align-items: center; gap: 24px; margin-left: auto; font-size: 11px; white-space: nowrap; } -.notice-link b { font-size: 20px; font-weight: 400; color: var(--red); } -.competition-notice:hover { border-color: var(--red); } -.knowledge-section { padding-top: 78px; scroll-margin-top: 7rem; } -.section-eyebrow { display: flex; align-items: center; gap: 12px; color: #989ca4; font: 10px/1.5 var(--sl-font-mono); letter-spacing: .13em; } -.section-eyebrow > span { color: var(--red); } -.section-eyebrow i { width: 60px; height: 1px; background: var(--line); } -.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin: 16px 0 30px; } -.section-heading h2 { font-size: clamp(24px, 2.6vw, 33px); letter-spacing: -.04em; font-weight: 650; } -.section-heading p { color: var(--muted); font-size: 12px; line-height: 1.9; } -.discipline-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); } -.discipline-card { color: var(--paper); background: #101215; border: 1px solid var(--line); padding: 26px 22px 18px; min-width: 0; transition: background .2s, border-color .2s; } -.discipline-card + .discipline-card { border-left: 0; } -.card-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 28px; } -.card-top span { font: 10px var(--sl-font-mono); color: #a7aab0; } -.card-top img { opacity: .9; } -.discipline-card h3 { font-size: 21px; font-weight: 650; } -.discipline-card p { color: var(--muted); font-size: 12px; line-height: 1.9; margin-top: 13px; min-height: 46px; } -.card-bottom { display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); padding-top: 20px; margin-top: 25px; gap: 6px; } -.card-bottom span { font-size: 9px; color: #b0b1b7; } -.card-bottom b { color: var(--red); font-size: 20px; font-weight: 400; } -.discipline-card:hover { background: #19171c; box-shadow: inset 0 2px var(--red); } -.reading-section { padding-top: 76px; } -.text-link { color: #dddde0; font-size: 12px; white-space: nowrap; } -.text-link span { color: var(--red); margin-left: 14px; } -.reading-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } -.reading-card { border-top: 1px solid #ffffff35; padding: 24px 0; color: var(--paper); } -.reading-index { display: flex; gap: 18px; font: 11px var(--sl-font-mono); color: var(--red); } -.reading-index b { font-size: 9px; color: #878b93; font-weight: 400; letter-spacing: .08em; } -.reading-card h3 { font-size: 17px; margin-top: 20px; font-weight: 600; } -.reading-card p { color: var(--muted); font-size: 12px; margin-top: 11px; line-height: 1.9; } -.reading-card > div { display: flex; align-items: center; justify-content: space-between; margin-top: 26px; color: #a3a6af; font-size: 10px; } -.reading-card > div > b { color: var(--red); font-size: 21px; font-weight: 400; } -.reading-card:hover { border-color: var(--red); } -.contribute-panel { display: flex; justify-content: space-between; align-items: center; gap: 30px; border: 1px solid var(--line); background: #101215; padding: 38px; margin: 45px 0 72px; } -.contribute-panel .section-eyebrow { color: #ff7a8b; font-size: 9px; } -.contribute-panel h2 { font-size: 23px; margin-top: 13px; font-weight: 600; } -.contribute-panel p { font-size: 12px; color: var(--muted); margin-top: 12px; line-height: 1.8; } -.contribute-panel .home-button { flex-shrink: 0; } -.home-ticker { border-block: 1px solid var(--line); padding: 15px 24px; overflow: hidden; white-space: nowrap; color: #b4b6bd; font: 10px var(--sl-font-mono); letter-spacing: .17em; text-align: center; } -.home-ticker span { color: var(--red); margin: 0 28px; } -.home-footer { max-width: 1320px; padding: 48px 48px 22px; margin: auto; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 36px; } -.home-footer img { object-fit: contain; object-position: left; } -.home-footer p { font-size: 11px; color: var(--muted); line-height: 1.9; margin-top: 16px; } -.footer-links { display: flex; gap: 35px; } -.footer-links a { color: #c2c2c3; font-size: 11px; } -.footer-links a:hover { color: #ff7a8b; } -.footer-bottom { width: 100%; border-top: 1px solid var(--line); padding-top: 22px; display: flex; justify-content: space-between; gap: 16px; color: #8c9098; font: 8px var(--sl-font-mono); letter-spacing: .06em; flex-wrap: wrap; } -@media (min-width: 1440px) { .hero-backdrop { object-position: center 43%; } } -@media (max-width: 1100px) { - .home-header nav a { padding-inline: 12px; } - .home-tools { gap: 10px; } - .hero-bottom { margin-inline: 48px; } - .hero-bottom .hero-motto { display: none; } - .hero-bottom > a { margin-left: auto; } - .image-caption { display: none; } - .discipline-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } - .discipline-card + .discipline-card { border-left: 1px solid var(--line); } -} -@media (max-width: 760px) { - :root:has(.docs-home) { --sl-nav-height: 4.5rem; } - .home-header { gap: 12px; } - .home-header nav { display: none; } - .home-tools { margin-left: auto; } - .hero-shell { padding: 45px 24px 35px; } - .home-hero h1 { font-size: clamp(60px, 13vw, 92px); } - .hero-backdrop { object-position: 66% center; opacity: .3; } - .home-hero::after { background: linear-gradient(90deg, #090a0cd9, #090a0c33), linear-gradient(0deg, #090a0c, transparent); } - .eyebrow { font-size: 8px; gap: 9px; } - .hero-bottom { margin-inline: 24px; gap: 24px; } - .hero-bottom > a { font-size: 0; gap: 0; } - .hero-bottom strong { font-size: 23px; } - .home-inner { padding-inline: 24px; } - .competition-notice { flex-wrap: wrap; gap: 12px; padding: 20px; } - .notice-tag { width: 100%; } - .notice-copy strong { font-size: 13px; } - .notice-link { margin: 5px 0 0; } - .knowledge-section, .reading-section { padding-top: 54px; } - .section-heading { align-items: start; flex-direction: column; gap: 13px; } - .section-heading p br { display: none; } - .discipline-card { padding: 22px 17px 16px; } - .card-top { margin-bottom: 22px; gap: 6px; } - .card-top img { width: 32px; height: 32px; } - .card-top span { font-size: 9px; } - .discipline-card h3 { font-size: 18px; } - .card-bottom { margin-top: 20px; gap: 10px; } - .card-bottom span { line-height: 1.8; } - .reading-grid { grid-template-columns: 1fr; gap: 8px; } - .reading-card { padding-block: 22px; } - .reading-card h3 { margin-top: 15px; } - .reading-card > div { margin-top: 15px; } - .contribute-panel { flex-direction: column; align-items: start; padding: 26px; margin: 30px 0 50px; } - .contribute-panel h2 { font-size: 21px; } - .home-footer { padding: 36px 24px 22px; } - .footer-links { gap: 24px; flex-wrap: wrap; } -} -@media (max-width: 380px) { - .discipline-grid { grid-template-columns: 1fr; } - .home-tools { gap: 4px; } - .brand-name { font-size: 22px; } - .brand-name small { font-size: 7px; } - .docs-brand { gap: 7px; } - .hero-bottom { gap: 16px; } -} -@media (prefers-reduced-motion: reduce) { .docs-home * { transition: none; } } -@media print { - .docs-home { --paper: #111; --muted: #555; --line: #ddd; background: white; color: black; } - .hero-backdrop, .hero-grid, .home-hero::after, .home-ticker, .image-caption { display: none; } - .home-hero .outline { color: black; -webkit-text-stroke: 0; } - .hero-shell { padding: 20px; } - .home-hero h1 { font-size: 45px; } -} - -