diff --git a/website/app/vt/page.mdx b/website/app/vt/page.mdx
index fd5898e98..d7f81d105 100644
--- a/website/app/vt/page.mdx
+++ b/website/app/vt/page.mdx
@@ -1,11 +1,9 @@
-# Foo
+import VTSequence from "@/components/VTSequence";
-## Bar
+# Backspace (BS)
-Hello[^1]
+## Sequence
-```javascript
-const x = 42;
-```
+
-[^1]: Goodbye
+Move the cursor left one cell.
diff --git a/website/components/VTSequence.tsx b/website/components/VTSequence.tsx
new file mode 100644
index 000000000..9cf37bc90
--- /dev/null
+++ b/website/components/VTSequence.tsx
@@ -0,0 +1,14 @@
+export default function VTSequence({ sequence }) {
+ return (
+
+ );
+}
+
+const special = {
+ BS: 0x08,
+};
diff --git a/website/next.config.mjs b/website/next.config.mjs
index 230d29049..dcfae83c8 100644
--- a/website/next.config.mjs
+++ b/website/next.config.mjs
@@ -1,29 +1,28 @@
-import remarkGfm from 'remark-gfm'
-import rehypePrettyCode from 'rehype-pretty-code'
-import rehypeSlug from 'rehype-slug'
-import createMDX from '@next/mdx'
+import remarkGfm from "remark-gfm";
+import remarkToc from "remark-toc";
+import rehypePrettyCode from "rehype-pretty-code";
+import rehypeSlug from "rehype-slug";
+import createMDX from "@next/mdx";
/** @type {import('next').NextConfig} */
const nextConfig = {
- pageExtensions: ['js', 'jsx', 'mdx', 'ts', 'tsx'],
+ pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"],
};
/** @type {import('rehype-pretty-code').Options} */
const prettyCodeOptions = {
theme: {
- dark: 'one-dark-pro',
- light: 'one-dark-pro', // todo: when we support light mode
+ dark: "one-dark-pro",
+ light: "one-dark-pro", // todo: when we support light mode
},
};
const withMDX = createMDX({
// Add markdown plugins here, as desired
options: {
- remarkPlugins: [remarkGfm],
- rehypePlugins: [
- rehypeSlug,
- [rehypePrettyCode, prettyCodeOptions],
- ],
+ remarkPlugins: [remarkGfm, remarkToc],
+
+ rehypePlugins: [rehypeSlug, [rehypePrettyCode, prettyCodeOptions]],
},
});
diff --git a/website/package-lock.json b/website/package-lock.json
index a68e13a51..9343b1337 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -15,10 +15,10 @@
"next": "13.5.4",
"react": "^18",
"react-dom": "^18",
- "rehype-autolink-headings": "^7.0.0",
"rehype-pretty-code": "^0.10.1",
"rehype-slug": "^6.0.0",
"remark-gfm": "^4.0.0",
+ "remark-toc": "^9.0.0",
"shiki": "^0.14.4"
},
"devDependencies": {
@@ -636,6 +636,11 @@
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz",
"integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ=="
},
+ "node_modules/@types/ungap__structured-clone": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@types/ungap__structured-clone/-/ungap__structured-clone-0.3.0.tgz",
+ "integrity": "sha512-eBWREUhVUGPze+bUW22AgUr05k8u+vETzuYdLYSvWqGTUe0KOf+zVnOB1qER5wMcw8V6D9Ar4DfJmVvD1yu0kQ=="
+ },
"node_modules/@types/unist": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz",
@@ -2847,26 +2852,6 @@
"@types/unist": "*"
}
},
- "node_modules/hast-util-is-element": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
- "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-is-element/node_modules/@types/hast": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz",
- "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
"node_modules/hast-util-to-estree": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz",
@@ -6842,6 +6827,88 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-toc": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-7.0.0.tgz",
+ "integrity": "sha512-C28UcSqjmnWuvgT8d97qpaItHKvySqVPAECUzqQ51xuMyNFFJwcFoKW77KoMjtXrclTidLQFDzLUmTmrshRweA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/ungap__structured-clone": "^0.3.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "github-slugger": "^2.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-toc/node_modules/@types/mdast": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz",
+ "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/mdast-util-toc/node_modules/@types/unist": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz",
+ "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w=="
+ },
+ "node_modules/mdast-util-toc/node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-toc/node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-toc/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-toc/node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -9046,132 +9113,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/rehype-autolink-headings": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.0.0.tgz",
- "integrity": "sha512-DLskejGYHQP9v7vUW85BeYIclgfMQ1IwAMx+0lm8Sr3cME2NThgy2OdTfosmuBA68fqP5o4FK+dknpUMFvlxYQ==",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "hast-util-heading-rank": "^3.0.0",
- "hast-util-is-element": "^3.0.0",
- "unified": "^11.0.0",
- "unist-util-visit": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/@types/hast": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.1.tgz",
- "integrity": "sha512-hs/iBJx2aydugBQx5ETV3ZgeSS0oIreQrFJ4bjBl0XvM4wAmDjFEALY7p0rTSLt2eL+ibjRAAs9dTPiCLtmbqQ==",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/@types/unist": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz",
- "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w=="
- },
- "node_modules/rehype-autolink-headings/node_modules/unified": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz",
- "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "bail": "^2.0.0",
- "devlop": "^1.0.0",
- "extend": "^3.0.0",
- "is-plain-obj": "^4.0.0",
- "trough": "^2.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/vfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
- "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/rehype-autolink-headings/node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/rehype-pretty-code": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.10.1.tgz",
@@ -10111,6 +10052,27 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-toc": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/remark-toc/-/remark-toc-9.0.0.tgz",
+ "integrity": "sha512-KJ9txbo33GjDAV1baHFze7ij4G8c7SGYoY8Kzsm2gzFpbhL/bSoVpMMzGa3vrNDSWASNd/3ppAqL7cP2zD6JIA==",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-toc": "^7.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-toc/node_modules/@types/mdast": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.1.tgz",
+ "integrity": "sha512-IlKct1rUTJ1T81d8OHzyop15kGv9A/ff7Gz7IJgrk6jDb4Udw77pCJ+vq8oxZf4Ghpm+616+i1s/LNg/Vh7d+g==",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
"node_modules/resolve": {
"version": "1.22.6",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
diff --git a/website/package.json b/website/package.json
index d0f647da0..e313b0546 100644
--- a/website/package.json
+++ b/website/package.json
@@ -19,6 +19,7 @@
"rehype-pretty-code": "^0.10.1",
"rehype-slug": "^6.0.0",
"remark-gfm": "^4.0.0",
+ "remark-toc": "^9.0.0",
"shiki": "^0.14.4"
},
"devDependencies": {