diff --git a/.changeset/chubby-nails-look.md b/.changeset/chubby-nails-look.md deleted file mode 100644 index a142b5a6a8..0000000000 --- a/.changeset/chubby-nails-look.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'myst-to-typst': patch -'myst-cli': patch -'mystmd': patch ---- - -Fix \left| and \right| delimeters (rely on upstream fix in tex-to-typst) diff --git a/.changeset/citation-html-stop.md b/.changeset/citation-html-stop.md deleted file mode 100644 index ce2f6e4d11..0000000000 --- a/.changeset/citation-html-stop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"markdown-it-myst": patch ---- - -Stop citation label parsing at `<` so following HTML and autolinks are preserved diff --git a/.changeset/fine-meals-fall.md b/.changeset/fine-meals-fall.md deleted file mode 100644 index b888d39a98..0000000000 --- a/.changeset/fine-meals-fall.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"myst-cli": patch -"myst-execute": patch ---- - -Only copy thebe JS when necessary diff --git a/.changeset/index-redirect-head-end.md b/.changeset/index-redirect-head-end.md deleted file mode 100644 index cdeec6c66e..0000000000 --- a/.changeset/index-redirect-head-end.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'myst-cli': patch -'mystmd': patch ---- - -Append the index-redirect script to the end of `` instead of the beginning, so other site `` content (e.g. preloads, meta tags) is not affected by the script's placement. diff --git a/.changeset/legal-flowers-drum.md b/.changeset/legal-flowers-drum.md deleted file mode 100644 index 58a526b146..0000000000 --- a/.changeset/legal-flowers-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'myst-to-typst': patch ---- - -Add passthrough `card` wrapping the card content such that custom styling can be applied by the `typst` template diff --git a/.changeset/lemon-houses-retire.md b/.changeset/lemon-houses-retire.md deleted file mode 100644 index b6adc72d79..0000000000 --- a/.changeset/lemon-houses-retire.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'myst-execute': minor -'myst-frontmatter': minor -'myst-config': minor -'myst-cli': minor ---- - -Add static_files option to project frontmatter for copying files into build output with stable URLs diff --git a/.changeset/polite-eels-do.md b/.changeset/polite-eels-do.md new file mode 100644 index 0000000000..4bf77e608d --- /dev/null +++ b/.changeset/polite-eels-do.md @@ -0,0 +1,5 @@ +--- +'myst-spec': patch +--- + +Drop JSON Schema pipeline in favour of exported TypeScript diff --git a/.changeset/proud-items-smash.md b/.changeset/proud-items-smash.md new file mode 100644 index 0000000000..c386ba2199 --- /dev/null +++ b/.changeset/proud-items-smash.md @@ -0,0 +1,5 @@ +--- +'myst-spec': patch +--- + +Remove old docs for myst-spec diff --git a/.changeset/proud-mangos-begin.md b/.changeset/proud-mangos-begin.md new file mode 100644 index 0000000000..488c94e840 --- /dev/null +++ b/.changeset/proud-mangos-begin.md @@ -0,0 +1,6 @@ +--- +'myst-transforms': patch +'mystmd': patch +--- + +Allow `grid` directives to be used in `figure` directives diff --git a/.changeset/public-worms-kiss.md b/.changeset/public-worms-kiss.md deleted file mode 100644 index 5d06524b06..0000000000 --- a/.changeset/public-worms-kiss.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'myst-migrate': patch -'myst-cli': patch -'mystmd': patch ---- - -Allow for myst.yaml as well as myst.yml. diff --git a/.changeset/salty-oranges-teach.md b/.changeset/salty-oranges-teach.md deleted file mode 100644 index 9ae2d3e02f..0000000000 --- a/.changeset/salty-oranges-teach.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"myst-execute": patch ---- - -Choose a random port on execution diff --git a/.changeset/tangy-mirrors-double.md b/.changeset/tangy-mirrors-double.md new file mode 100644 index 0000000000..3122ca2fa6 --- /dev/null +++ b/.changeset/tangy-mirrors-double.md @@ -0,0 +1,6 @@ +--- +'markdown-it-myst': patch +'myst-execute': patch +--- + +Fix dependencies / types diff --git a/.github/actions/install/action.yml b/.github/actions/install/action.yml index c5e92a14e4..e31e8cd2a4 100644 --- a/.github/actions/install/action.yml +++ b/.github/actions/install/action.yml @@ -20,7 +20,7 @@ runs: # Even though we use bun for test runners, the mystmd bundle uses node, # so we need to install node and test against multiple versions. - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ inputs.node }} - name: Setup Bun @@ -28,7 +28,7 @@ runs: with: bun-version: ${{ inputs.bun-version }} - name: Install python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.10' cache: 'pip' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c48c28dc9..e5c3071302 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive @@ -36,7 +36,7 @@ jobs: name: Testing with bun and node ${{ matrix.node }} steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive @@ -52,11 +52,11 @@ jobs: name: Running test docs build steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: "3.x" - name: Install myst diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e4954478b3..69005d1831 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -16,7 +16,7 @@ jobs: if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive diff --git a/.github/workflows/enforce-label.yml b/.github/workflows/enforce-label.yml index 500be8f63b..aa36fda578 100644 --- a/.github/workflows/enforce-label.yml +++ b/.github/workflows/enforce-label.yml @@ -11,7 +11,7 @@ jobs: steps: # As this is a pull_request_target, we'll get `main` here - name: Checkout contents - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Add labels uses: actions/labeler@v6 diff --git a/.github/workflows/publish-github-release.yml b/.github/workflows/publish-github-release.yml index ef53d49eb6..7e6f419b77 100644 --- a/.github/workflows/publish-github-release.yml +++ b/.github/workflows/publish-github-release.yml @@ -20,7 +20,7 @@ jobs: contents: write steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 # Get the date of the latest GitHub release - name: Get previous release tag @@ -36,7 +36,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.x' diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index 1e89a43d7e..98fa81040d 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive @@ -31,7 +31,7 @@ jobs: - name: Build Python package run: pipx run hatch -- build working-directory: packages/mystmd-py - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: package path: packages/mystmd-py/dist/mystmd*.whl @@ -43,11 +43,11 @@ jobs: needs: [build-package] steps: - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: package - name: Install myst from package @@ -63,11 +63,11 @@ jobs: needs: [build-package] steps: - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: package - name: Run myst and expect failure @@ -82,11 +82,11 @@ jobs: needs: [build-package] steps: - name: Checkout Repo - uses: actions/checkout@v3 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: package - name: Run myst with nodeenv and expect success diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aa36100f01..18e1e9563e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: published: ${{ steps.changesets.outputs.published }} steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 2 submodules: recursive @@ -52,12 +52,12 @@ jobs: python -m build working-directory: packages/mystmd-py - name: Store the Python packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: python-package-distributions path: packages/mystmd-py/dist/ - name: Store the JS packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: js-package-distributions path: packages/mystmd/dist/ @@ -75,7 +75,7 @@ jobs: id-token: write steps: - name: Download all the dists - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: python-package-distributions path: dist/ @@ -89,7 +89,7 @@ jobs: tag_name: ${{ steps.get_tag.outputs.tag_name }} steps: - name: Checkout Repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Get tag name from package.json id: get_tag run: | diff --git a/bun.lock b/bun.lock index d03c0ae379..faa87ae355 100644 --- a/bun.lock +++ b/bun.lock @@ -82,10 +82,11 @@ }, "packages/markdown-it-myst": { "name": "markdown-it-myst", - "version": "1.0.16", + "version": "1.0.17", "dependencies": { "js-yaml": "^4.1.0", "vfile": "^5.3.7", + "vfile-message": "^3.0.0", }, "devDependencies": { "markdown-it-footnote": "^4.0.0", @@ -97,7 +98,7 @@ }, "packages/myst-cli": { "name": "myst-cli", - "version": "1.9.1", + "version": "1.10.1", "dependencies": { "@jupyterlab/services": "^7.3.0", "@reduxjs/toolkit": "^2.1.0", @@ -127,9 +128,9 @@ "meca": "^1.0.8", "mime-types": "^2.1.35", "myst-cli-utils": "^2.0.14", - "myst-common": "^1.9.5", - "myst-config": "^1.9.5", - "myst-execute": "^0.3.5", + "myst-common": "^1.10.0", + "myst-config": "^1.10.0", + "myst-execute": "^0.4.0", "myst-ext-button": "^0.0.1", "myst-ext-card": "^1.0.9", "myst-ext-exercise": "^1.0.9", @@ -138,20 +139,20 @@ "myst-ext-proof": "^1.0.12", "myst-ext-reactive": "^1.0.9", "myst-ext-tabs": "^1.0.9", - "myst-frontmatter": "^1.9.5", - "myst-migrate": "^1.9.1", - "myst-parser": "^1.7.2", + "myst-frontmatter": "^1.10.0", + "myst-migrate": "^1.10.1", + "myst-parser": "^1.7.3", "myst-spec": "^0.0.5", - "myst-spec-ext": "^1.9.5", + "myst-spec-ext": "^1.10.0", "myst-templates": "^1.0.27", "myst-to-docx": "^1.0.16", "myst-to-ipynb": "^1.0.15", "myst-to-jats": "^1.0.35", "myst-to-md": "^1.0.16", "myst-to-tex": "^1.0.46", - "myst-to-typst": "^0.0.37", + "myst-to-typst": "^0.0.38", "myst-toc": "^0.1.4", - "myst-transforms": "^1.3.49", + "myst-transforms": "^1.3.50", "nanoid": "^5.1.6", "nbtx": "^0.4.0", "node-fetch": "^3.3.1", @@ -203,10 +204,10 @@ }, "packages/myst-common": { "name": "myst-common", - "version": "1.9.5", + "version": "1.10.0", "dependencies": { "mdast": "^3.0.0", - "myst-frontmatter": "^1.9.5", + "myst-frontmatter": "^1.10.0", "myst-spec": "^0.0.5", "nanoid": "^5.1.6", "unified": "^10.1.2", @@ -219,16 +220,16 @@ "devDependencies": { "@jupyterlab/nbformat": "^3.5.2", "@lumino/coreutils": "^2.0.0", - "myst-spec-ext": "^1.9.5", + "myst-spec-ext": "^1.10.0", "unist-builder": "3.0.0", }, }, "packages/myst-config": { "name": "myst-config", - "version": "1.9.5", + "version": "1.10.0", "dependencies": { - "myst-common": "^1.9.5", - "myst-frontmatter": "^1.9.5", + "myst-common": "^1.10.0", + "myst-frontmatter": "^1.10.0", "simple-validators": "^1.2.0", }, "devDependencies": { @@ -237,14 +238,14 @@ }, "packages/myst-directives": { "name": "myst-directives", - "version": "1.7.2", + "version": "1.7.3", "dependencies": { "classnames": "^2.3.2", "csv-parse": "^5.5.5", "js-yaml": "^4.1.0", "json5": "^1.0.2", - "myst-common": "^1.9.5", - "myst-spec-ext": "^1.9.5", + "myst-common": "^1.10.0", + "myst-spec-ext": "^1.10.0", "nanoid": "^5.1.6", "unist-util-select": "^4.0.3", "vfile": "^5.3.7", @@ -252,14 +253,14 @@ }, "packages/myst-execute": { "name": "myst-execute", - "version": "0.3.5", + "version": "0.4.0", "dependencies": { "@jupyterlab/nbformat": "^3.5.2", "@jupyterlab/services": "^7.3.0", "chalk": "^5.2.0", "get-port": "^6.1.2", "myst-cli-utils": "^2.0.13", - "myst-common": "^1.9.3", + "myst-common": "^1.10.0", "node-fetch": "^3.3.0", "unist-util-select": "^4.0.3", "vfile": "^5.3.7", @@ -353,7 +354,7 @@ }, "packages/myst-frontmatter": { "name": "myst-frontmatter", - "version": "1.9.5", + "version": "1.10.0", "dependencies": { "credit-roles": "^2.1.0", "doi-utils": "^2.0.5", @@ -372,7 +373,7 @@ }, "packages/myst-migrate": { "name": "myst-migrate", - "version": "1.9.1", + "version": "1.10.1", "dependencies": { "unist-util-select": "^4.0.3", "unist-util-visit": "^4.1.2", @@ -385,7 +386,7 @@ }, "packages/myst-parser": { "name": "myst-parser", - "version": "1.7.2", + "version": "1.7.3", "dependencies": { "@types/markdown-it": "^13.0.0", "he": "^1.2.0", @@ -395,12 +396,11 @@ "markdown-it-dollarmath": "^0.5.0", "markdown-it-footnote": "^4.0.0", "markdown-it-front-matter": "^0.2.3", - "markdown-it-myst": "1.0.16", - "markdown-it-myst-extras": "0.3.0", + "markdown-it-myst": "1.0.17", "markdown-it-task-lists": "^2.1.1", - "myst-common": "^1.9.5", - "myst-directives": "^1.7.2", - "myst-roles": "^1.7.2", + "myst-common": "^1.10.0", + "myst-directives": "^1.7.3", + "myst-roles": "^1.7.3", "myst-spec": "^0.0.5", "unified": "^10.1.1", "unist-builder": "^3.0.0", @@ -416,32 +416,29 @@ "@types/js-yaml": "^4.0.5", "@types/mdast": "^3.0.10", "js-yaml": "^4.1.0", - "myst-to-html": "^1.7.2", - "myst-transforms": "^1.3.49", + "myst-to-html": "^1.7.3", + "myst-transforms": "^1.3.50", "rehype-stringify": "^9.0.3", }, }, "packages/myst-roles": { "name": "myst-roles", - "version": "1.7.2", + "version": "1.7.3", "dependencies": { - "myst-common": "^1.9.5", - "myst-spec-ext": "^1.9.5", + "myst-common": "^1.10.0", + "myst-spec-ext": "^1.10.0", }, }, "packages/myst-spec": { "name": "myst-spec", "version": "0.0.5", "devDependencies": { - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "js-yaml": "^4.1.0", - "json-schema-to-typescript": "^15.0.4", + "copyfiles": "^2.4.1", }, }, "packages/myst-spec-ext": { "name": "myst-spec-ext", - "version": "1.9.5", + "version": "1.10.0", "dependencies": { "myst-spec": "^0.0.5", }, @@ -482,7 +479,7 @@ }, "packages/myst-to-html": { "name": "myst-to-html", - "version": "1.7.2", + "version": "1.7.3", "dependencies": { "@types/markdown-it": "^13.0.1", "classnames": "^2.3.2", @@ -492,7 +489,7 @@ "mdast": "^3.0.0", "mdast-util-find-and-replace": "^2.1.0", "mdast-util-to-hast": "^12.3.0", - "myst-common": "^1.9.5", + "myst-common": "^1.10.0", "rehype-format": "^4.0.1", "rehype-parse": "^8.0.4", "rehype-remark": "^9.1.2", @@ -589,11 +586,11 @@ }, "packages/myst-to-typst": { "name": "myst-to-typst", - "version": "0.0.37", + "version": "0.0.38", "dependencies": { - "myst-common": "^1.9.4", - "myst-frontmatter": "^1.9.4", - "myst-spec-ext": "^1.9.4", + "myst-common": "^1.10.0", + "myst-frontmatter": "^1.10.0", + "myst-spec-ext": "^1.10.0", "tex-to-typst": "^0.0.20", "unist-util-select": "^4.0.3", "vfile-reporter": "^7.0.4", @@ -608,7 +605,7 @@ }, "packages/myst-transforms": { "name": "myst-transforms", - "version": "1.3.49", + "version": "1.3.50", "dependencies": { "doi-utils": "^2.0.5", "hast-util-from-html": "^2.0.1", @@ -617,11 +614,11 @@ "js-yaml": "^4.1.0", "katex": "^0.15.2", "mdast-util-find-and-replace": "^2.1.0", - "myst-common": "^1.9.5", - "myst-frontmatter": "^1.9.5", + "myst-common": "^1.10.0", + "myst-frontmatter": "^1.10.0", "myst-spec": "^0.0.5", - "myst-spec-ext": "^1.9.5", - "myst-to-html": "1.7.2", + "myst-spec-ext": "^1.10.0", + "myst-to-html": "1.7.3", "rehype-parse": "^8.0.4", "rehype-remark": "^9.1.2", "unified": "^10.0.0", @@ -641,7 +638,7 @@ }, "packages/mystmd": { "name": "mystmd", - "version": "1.9.1", + "version": "1.10.1", "bin": { "myst": "./dist/myst.cjs", }, @@ -687,8 +684,6 @@ "packages": { "@aashutoshrathi/word-wrap": ["@aashutoshrathi/word-wrap@1.2.6", "", {}, "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="], - "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@11.9.3", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ=="], - "@babel/parser": ["@babel/parser@7.24.4", "", { "bin": { "parser": "bin/babel-parser.js" } }, "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg=="], "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], @@ -817,8 +812,6 @@ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - "@jsdevtools/ono": ["@jsdevtools/ono@7.1.3", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="], - "@jupyter/ydoc": ["@jupyter/ydoc@3.1.0", "", { "dependencies": { "@jupyterlab/nbformat": "^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0", "@lumino/coreutils": "^1.11.0 || ^2.0.0", "@lumino/disposable": "^1.10.0 || ^2.0.0", "@lumino/signaling": "^1.10.0 || ^2.0.0", "y-protocols": "^1.0.5", "yjs": "^13.5.40" } }, "sha512-+hLNUBZr8Zz8NiuaoYKINDURDJHbjFGxg8EcSU52y+rBe412TsoFxfPSng4eP7w3cZFrVlm7D+8K0nAMHxj0ZQ=="], "@jupyterlab/coreutils": ["@jupyterlab/coreutils@6.4.8", "", { "dependencies": { "@lumino/coreutils": "^2.2.1", "@lumino/disposable": "^2.1.4", "@lumino/signaling": "^2.1.4", "minimist": "~1.2.0", "path-browserify": "^1.0.0", "url-parse": "~1.5.4" } }, "sha512-y7NGkh31fJaRMDGPfi6uwUeP3eCJrwNSVqmEo0bN9qxiJsysRGOBKPAFuFUS3IKD/au79EwyKHgxhBZxLwiqBQ=="], @@ -977,8 +970,6 @@ "@types/linkify-it": ["@types/linkify-it@3.0.2", "", {}, "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA=="], - "@types/lodash": ["@types/lodash@4.17.21", "", {}, "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ=="], - "@types/markdown-it": ["@types/markdown-it@13.0.9", "", { "dependencies": { "@types/linkify-it": "^3", "@types/mdurl": "^1" } }, "sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw=="], "@types/mdast": ["@types/mdast@3.0.12", "", { "dependencies": { "@types/unist": "^2" } }, "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg=="], @@ -1295,6 +1286,8 @@ "cookie-signature": ["cookie-signature@1.0.6", "", {}, "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="], + "copyfiles": ["copyfiles@2.4.1", "", { "dependencies": { "glob": "^7.0.5", "minimatch": "^3.0.3", "mkdirp": "^1.0.4", "noms": "0.0.0", "through2": "^2.0.1", "untildify": "^4.0.0", "yargs": "^16.1.0" }, "bin": { "copyfiles": "copyfiles", "copyup": "copyfiles" } }, "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg=="], + "core-js": ["core-js@3.31.1", "", {}, "sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ=="], "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], @@ -1801,8 +1794,6 @@ "json-schema-merge-allof": ["json-schema-merge-allof@0.8.1", "", { "dependencies": { "compute-lcm": "^1.1.2", "json-schema-compare": "^0.2.2", "lodash": "^4.17.20" } }, "sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w=="], - "json-schema-to-typescript": ["json-schema-to-typescript@15.0.4", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.5.5", "@types/json-schema": "^7.0.15", "@types/lodash": "^4.17.7", "is-glob": "^4.0.3", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "minimist": "^1.2.8", "prettier": "^3.2.5", "tinyglobby": "^0.2.9" }, "bin": { "json2ts": "dist/src/cli.js" } }, "sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ=="], - "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], @@ -1891,8 +1882,6 @@ "markdown-it-myst": ["markdown-it-myst@workspace:packages/markdown-it-myst"], - "markdown-it-myst-extras": ["markdown-it-myst-extras@0.3.0", "", { "peerDependencies": { "markdown-it": "^12 || ^13" } }, "sha512-678qviK97MEzSM9Hr0jlX5nBPzMcKZo6Ixgh4nEf/WYpii8LXQ72FametoXkzyDy77qNKDE3vlqYhqfbbCGHrw=="], - "markdown-it-task-lists": ["markdown-it-task-lists@2.1.1", "", {}, "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA=="], "markdown-table": ["markdown-table@3.0.3", "", {}, "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw=="], @@ -1997,6 +1986,8 @@ "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + "mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="], + "module-definition": ["module-definition@3.4.0", "", { "dependencies": { "ast-module-types": "^3.0.0", "node-source-walk": "^4.0.0" }, "bin": "bin/cli.js" }, "sha512-XxJ88R1v458pifaSkPNLUTdSPNVGMP2SXVncVmApGO+gAfrLANiYe6JofymCzVceGOMwQE2xogxBSc8uB7XegA=="], "module-lookup-amd": ["module-lookup-amd@7.0.1", "", { "dependencies": { "commander": "^2.8.1", "debug": "^4.1.0", "glob": "^7.1.6", "requirejs": "^2.3.5", "requirejs-config-file": "^4.0.0" }, "bin": { "lookup-amd": "bin/cli.js" } }, "sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ=="], @@ -2091,6 +2082,8 @@ "node-source-walk": ["node-source-walk@5.0.2", "", { "dependencies": { "@babel/parser": "^7.21.4" } }, "sha512-Y4jr/8SRS5hzEdZ7SGuvZGwfORvNsSsNRwDXx5WisiqzsVfeftDvRgfeqWNgZvWSJbgubTRVRYBzK6UO+ErqjA=="], + "noms": ["noms@0.0.0", "", { "dependencies": { "inherits": "^2.0.1", "readable-stream": "~1.0.31" } }, "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow=="], + "normalize-package-data": ["normalize-package-data@2.5.0", "", { "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA=="], "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], @@ -2449,6 +2442,8 @@ "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], + "through2": ["through2@2.0.5", "", { "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ=="], + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], @@ -2639,6 +2634,8 @@ "xml-js": ["xml-js@1.6.11", "", { "dependencies": { "sax": "^1.2.4" }, "bin": "bin/cli.js" }, "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g=="], + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + "y-protocols": ["y-protocols@1.0.6", "", { "dependencies": { "lib0": "^0.2.85" }, "peerDependencies": { "yjs": "^13.0.0" } }, "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -2755,6 +2752,10 @@ "concurrently/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + "copyfiles/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + + "copyfiles/yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], + "cross-spawn/semver": ["semver@5.7.2", "", { "bin": "bin/semver" }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], "cross-spawn/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": "bin/which" }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], @@ -2905,6 +2906,8 @@ "myst-execute/which": ["which@4.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg=="], + "noms/readable-stream": ["readable-stream@1.0.34", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg=="], + "normalize-package-data/semver": ["semver@5.7.2", "", { "bin": "bin/semver" }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], "npm-run-all/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], @@ -3071,6 +3074,12 @@ "concurrently/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + "copyfiles/yargs/cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], + + "copyfiles/yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "copyfiles/yargs/yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], + "default-browser/execa/cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "default-browser/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], @@ -3183,6 +3192,10 @@ "myst-execute/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + "noms/readable-stream/isarray": ["isarray@0.0.1", "", {}, "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="], + + "noms/readable-stream/string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="], + "npm-run-all/chalk/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], "npm-run-all/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], @@ -3265,6 +3278,14 @@ "concurrently/chalk/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + "copyfiles/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + + "copyfiles/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + + "copyfiles/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "copyfiles/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "default-browser/execa/cross-spawn/path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], "default-browser/execa/cross-spawn/shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -3327,6 +3348,12 @@ "@manypkg/find-root/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "copyfiles/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "copyfiles/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "copyfiles/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "default-browser/execa/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], "intersphinx/myst-cli-utils/chalk/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], @@ -3334,5 +3361,7 @@ "precinct/detective-typescript/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="], "run-applescript/execa/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "copyfiles/yargs/cliui/wrap-ansi/ansi-styles/color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], } } diff --git a/docs/accessibility-and-performance.md b/docs/accessibility-and-performance.md index bd7a7956d8..a19ef11f37 100644 --- a/docs/accessibility-and-performance.md +++ b/docs/accessibility-and-performance.md @@ -44,6 +44,17 @@ The MyST themes ship with these accessibility behaviors: In April 2026 we completed a focused round of work to [align with WCAG 2.1 AA](https://github.com/jupyter-book/mystmd/issues/2802). We know there is always ongoing work to be done to improve accessibility and welcome both guidance and contributions, see [](#a11y:contribute). +(a11y:monitor)= +### How we monitor accessibility + +On every push to `main`, `myst-theme` runs an automated accessibility audit in CI. +It builds the current themes and runs [`berkeley-cdss/myst-a11y`](https://github.com/berkeley-cdss/myst-a11y) (which wraps [axe-core](https://github.com/dequelabs/axe-core)) against the [reference pages](https://myst-theme.netlify.app), checking WCAG 2.0 and 2.1 (A & AA). + +Results are surfaced in a tracking issue with the [`a11y-audit` label](https://github.com/jupyter-book/myst-theme/labels/a11y-audit). +It summarizes the current issue counts broken down by rule (such as color-contrast, label, and image-alt) and by page. +If an issue with that label is already open, it will be updated on each new workflow run. +If there is no open issue, then a new one is created. + ### Cell outputs are not under MyST's control Many libraries emit interactive JavaScript or images as part of executing code (e.g., Plotly, ipywidgets, etc). @@ -57,12 +68,13 @@ The fix will most likely need to happen in that upstream tool rather than in the Open accessibility work is tracked under the [`a11y` label in `myst-theme`](https://github.com/jupyter-book/myst-theme/labels/a11y). There's a thread for broader discussion and tracking in the [Accessibility Improvements tracking issue](https://github.com/jupyter-book/myst-theme/issues/238). +(a11y:check-your-site)= ### How can I check the accessibility of my own site? A few tools that others in the community have found useful: - The [Jupyter Accessibility Working Group](https://jupyter-accessibility.readthedocs.io) has a collection of accessibility resources for the broader Jupyter community. -- [berkeley-cdss/myst-a11y](https://github.com/berkeley-cdss/myst-a11y) is a GitHub Action built for MyST sites. It runs [axe-core](https://github.com/dequelabs/axe-core) checks against WCAG 2.0 and 2.1 (A and AA) on every push and reports results as a tracking issue. See [data-8/textbook](https://github.com/data-8/textbook/blob/main/.github/workflows/a11y.yml) for a working example. +- [berkeley-cdss/myst-a11y](https://github.com/berkeley-cdss/myst-a11y) is a GitHub Action built for MyST sites. It runs [axe-core](https://github.com/dequelabs/axe-core) checks against WCAG 2.0 and 2.1 (A and AA) on every push and reports results as a tracking issue. This is the same action MyST runs on its own themes, see [](#a11y:monitor). For a working example, see [data-8/textbook](https://github.com/data-8/textbook/blob/main/.github/workflows/a11y.yml). - [Lighthouse](https://github.com/GoogleChrome/lighthouse) is built into Chrome DevTools and is useful for a quick audit of a single page. - [JupyCheck](https://jupycheck.vercel.app/) checks accessibility of source notebooks in Jupyter interfaces. This is useful if you also want readers to launch Jupyter sessions from your MyST site. diff --git a/docs/figures.md b/docs/figures.md index ae668333bb..8b48e37993 100644 --- a/docs/figures.md +++ b/docs/figures.md @@ -33,6 +33,10 @@ For example, {myst:directive}`image.width`, {myst:directive}`alignment = 4) { + return false; + } + + if (state.src[pos] !== '%') { + return false; + } + + if (silent) { + return true; + } + + const token = state.push('myst_line_comment', '', 0); + token.attrSet('class', 'myst-line-comment'); + token.content = state.src.slice(pos + 1, maximum).replace(/\s+$/gm, ''); // rstrip + token.markup = '%'; + + // search end of block while appending lines to `token.content` + let nextLine: number; + for (nextLine = startLine + 1; nextLine < endLine; nextLine++) { + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + maximum = state.eMarks[nextLine]; + if (state.src[pos] !== '%') { + break; + } + token.content += '\n' + state.src.slice(pos + 1, maximum).replace(/\s+$/gm, ''); // rstrip + } + state.line = nextLine; + token.map = [startLine, nextLine]; + + return true; +} + +function parse_block_break( + state: StateBlock, + startLine: number, + endLine: number, + silent: boolean, +): boolean { + let pos = state.bMarks[startLine] + state.tShift[startLine]; + const maximum = state.eMarks[startLine]; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false; + } + + const marker = state.src.charCodeAt(pos); + pos += 1; + + // Check block marker /* + */ + if (marker !== 0x2b) { + return false; + } + + // markers can be mixed with spaces, but there should be at least 3 of them + + let cnt = 1; + while (pos < maximum) { + const ch = state.src.charCodeAt(pos); + if (ch !== marker && !state.md.utils.isSpace(ch)) { + break; + } + if (ch === marker) { + cnt += 1; + } + pos += 1; + } + + if (cnt < 3) { + return false; + } + + if (silent) { + return true; + } + + state.line = startLine + 1; + + const token = state.push('myst_block_break', 'hr', 0); + token.attrSet('class', 'myst-block'); + token.content = state.src.slice(pos, maximum).trim(); + token.map = [startLine, state.line]; + token.markup = state.md.utils.fromCodePoint(marker).repeat(cnt); + + return true; +} + +const TARGET_PATTERN = /^\((?