diff --git a/docs/.vuepress/components/PageFooter.vue b/docs/.vuepress/components/PageFooter.vue
new file mode 100644
index 0000000..f8d8d89
--- /dev/null
+++ b/docs/.vuepress/components/PageFooter.vue
@@ -0,0 +1,5 @@
+
+
+
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
new file mode 100644
index 0000000..671bb1b
--- /dev/null
+++ b/docs/.vuepress/config.js
@@ -0,0 +1,144 @@
+"use strict";
+
+// const DEV_ENV = process.env.NODE_ENV !== "production";
+
+module.exports = {
+
+ title: "PEG.js",
+ description: "A parser generator for JavaScript",
+ head: [
+
+ [ "meta", { "http-equiv": "XA-UA-Compatible", content: "IE=edge" } ],
+ [ "link", { rel: "shortcut icon", href: "/favicon.ico", type: "image/x-icon" } ],
+
+ ],
+ dest: "dist",
+ ga: "UA-100728112-1",
+ serviceWorker: true,
+ themeConfig: {
+
+ nav: [
+ {
+ text: "Try Online",
+ link: "/online",
+ },
+ {
+ text: "Documentation",
+ items: [
+ {
+ text: "Guides",
+ link: "/guides/getting-started",
+ },
+ {
+ text: "Grammar",
+ link: "/grammar/",
+ },
+ {
+ text: "API",
+ link: "/guides/javascript-api",
+ },
+ {
+ text: "Compatibility",
+ link: "/guides/compatibility",
+ },
+ ],
+ },
+ {
+ text: "Development",
+ items: [
+ {
+ text: "Contribute",
+ link: "/development",
+ },
+ {
+ text: "Changelogs",
+ link: "/changelogs/",
+ },
+ {
+ text: "Source code",
+ link: "https://github.com/pegjs/pegjs",
+ },
+ {
+ text: "Issue tracker",
+ link: "https://github.com/pegjs/pegjs/issues",
+ },
+ ],
+ },
+ {
+ text: "Community",
+ items: [
+ {
+ text: "Forums",
+ link: "https://gitq.com/pegjs/pegjs",
+ },
+ {
+ text: "Wiki",
+ link: "https://github.com/pegjs/pegjs/wiki",
+ },
+ {
+ text: "Stack Overflow",
+ link: "https://stackoverflow.com/questions/tagged/pegjs",
+ },
+ {
+ text: "Twitter",
+ link: "https://twitter.com/pegjs",
+ },
+ {
+ text: "Plugins",
+ link: "https://www.npmjs.com/search?q=pegjs%20plugin",
+ }
+ ],
+ },
+ ],
+ sidebar: {
+
+ "/grammar/": [
+ "",
+ "parsing-expression-types",
+ "balanced-braces",
+ "action-execution-environment",
+ "backtracking",
+ "case-insensitivity",
+ "error-messages",
+ [ "tracer", "Tracer" ],
+ ],
+
+ "/guides/": [
+ "getting-started",
+ "installation",
+ "command-line",
+ "generating-a-parser",
+ "javascript-api",
+ "plugins",
+ "using-the-parser",
+ "compatibility",
+ ],
+
+ "/": false,
+
+ },
+ sidebarDepth: 0,
+ displayAllHeaders: false,
+ activeHeaderLinks: true,
+ // search: DEV_ENV ? true : false,
+ searchMaxSuggestions: 5,
+ // algolia: DEV_ENV ? void 0 : {
+
+ // apiKey: "",
+ // indexName: ""
+
+ // },
+ lastUpdated: true,
+ serviceWorker: {
+
+ updatePopup: true,
+
+ },
+ docsRepo: "pegjs/pegjs",
+ docsDir: "docs",
+ editLinks: true,
+ evergreen: false,
+
+ },
+
+};
diff --git a/docs/.vuepress/style.styl b/docs/.vuepress/style.styl
new file mode 100644
index 0000000..c44b8fd
--- /dev/null
+++ b/docs/.vuepress/style.styl
@@ -0,0 +1,15 @@
+html, body {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+}
+#app {
+ min-height: 100%;
+ position: relative;
+}
+
+#footer {
+ position: absolute;
+ bottom: 5px;
+ right: 5px;
+}