Merge branch 'include-typedoc' into asf-site
diff --git a/.eleventy.js b/.eleventy.js
index 3b3fbaa..bd4a104 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -8,6 +8,8 @@
     // '...relative to this file': '...relative to `dir.output` below'
     // Built demo content gets copied in verbatim
     'annotator/web/dist/': 'demo/',
+    // Built API docs for each module get copied in verbatim
+    'annotator/docs': 'docs/api',
     // also the images, css, and non-11ty js files
     'src/.htaccess': '.htaccess',
     'src/annotator-icon.svg': 'annotator-icon.svg',
@@ -18,6 +20,9 @@
     'src/site.webmanifest': 'site.webmanifest'
   });
 
+  eleventyConfig.addShortcode('eq', function(a, b) { return a === b });
+  eleventyConfig.addShortcode('not-eq', function(a, b) { return a !== b });
+
   return {
     dir: {
       input: 'src',
diff --git a/package.json b/package.json
index e1f1ff4..6ce24f1 100644
--- a/package.json
+++ b/package.json
@@ -5,9 +5,9 @@
   "private": true,
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
-    "build": "yarn run build:demo && eleventy",
-    "build:demo": "cd annotator && yarn run web:build",
-    "serve": "yarn run build:demo && eleventy --serve",
+    "build": "yarn run build:submodule && eleventy",
+    "build:submodule": "cd annotator && yarn run web:build && yarn run docs --theme ../typedoc_theme",
+    "serve": "yarn run build:submodule && eleventy --serve",
     "postinstall": "cd annotator && yarn install"
   },
   "repository": {
diff --git a/src/_includes/page_footer.hbs b/src/_includes/page_footer.hbs
new file mode 100644
index 0000000..7cd2ea5
--- /dev/null
+++ b/src/_includes/page_footer.hbs
@@ -0,0 +1,35 @@
+    <footer class="ui bottom attached segment">
+      <div class="ui container">
+        <div class="ui equal height divided stackable grid">
+          <div class="four wide column">
+            <a class="ui left floated medium image" href="https://apache.org/" target="_blank">
+              <img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="logo of the Apache Incubator" />
+            </a>
+            <p>
+              <em>Copyright © 2016-2018 The Apache Software Foundation, Licensed under
+              the <a href="https://www.apache.org/licenses/LICENSE-2.0" rel="license external">Apache License, Version 2.0</a>.
+              |
+              <a rel="external" href="https://www.apache.org/foundation/policies/privacy">Privacy Policy</a>
+              </em>
+            </p>
+          </div>
+          <div class="nine wide column">
+            <p>
+              <em>Apache Annotator is an effort undergoing incubation at <a target="_blank" href="https://apache.org/">The Apache Software Foundation (ASF)</a> sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</em></p>
+            <p><em>Apache®, the names of Apache projects, and the feather logo are either <a rel="external" href="https://www.apache.org/foundation/marks/list/">registered trademarks or trademarks</a> of the Apache Software Foundation in the United States and/or other countries.</em></p>
+          </div>
+          <div class="three wide column">
+            <h4 class="header">The <abbr title="Apache Software Foundation">ASF</abbr></h4>
+            <div class="ui link list">
+              <a class="item" rel="external" href="https://incubator.apache.org/">Apache Incubator</a>
+              <a class="item" rel="external" href="https://www.apache.org/">About the ASF</a>
+              <a class="item" rel="external" href="https://www.apache.org/events/current-event">Events</a>
+              <a class="item" rel="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
+              <a class="item" rel="external" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
+              <a class="item" rel="external" href="https://www.apache.org/security/">Security</a>
+              <a class="item" rel="external" href="https://www.apache.org/licenses/">License</a>
+            </div>
+          </div>
+        </div>
+      </div>
+    </footer>
diff --git a/src/_includes/page_header.hbs b/src/_includes/page_header.hbs
new file mode 100644
index 0000000..efbe186
--- /dev/null
+++ b/src/_includes/page_header.hbs
@@ -0,0 +1,16 @@
+    <div class="ui borderless stackable top attached main menu">
+      <div class="ui container">
+        <a class="item" href="/" style="color: rgba(0,0,0,.87);">
+          <img class="ui small image" src="/images/annotator-logo.svg" alt="Apache Annotator (incubating)" />
+        </a>
+
+        <div class="right menu">
+          <a class="item" href="/demo/"><span class="ui positive button">Demo!</span></a>
+          <a class="item" rel="external" href="https://www.npmjs.com/package/apache-annotator">NPM</a>
+          <a class="item" rel="external" href="https://github.com/apache?q=annotator#org-repositories">Code</a>
+          <a class="item" rel="external" href="https://github.com/apache/incubator-annotator/issues">Issues</a>
+          <a class="{{#if isDocs}}active {{/if}}item" href="/docs/">Docs</a>
+          <a class="item" rel="external" href="https://mail-archives.apache.org/mod_mbox/incubator-annotator-dev/">Mailing List</a>
+        </div>
+      </div>
+    </div>
diff --git a/src/_layouts/default.hbs b/src/_layouts/default.hbs
new file mode 100644
index 0000000..56c2f1b
--- /dev/null
+++ b/src/_layouts/default.hbs
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html prefix="og: http://ogp.me/ns#">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
+    <title>Apache Annotator (incubating)</title>
+
+    <meta property="og:title" content="Apache Annotator" />
+    <meta property="og:type" content="website" />
+    <meta property="og:url" content="https://annotator.apache.org/" />
+    <meta property="og:image:url" content="https://annotator.apache.org/images/annotator-logo.svg" />
+    <meta property="og:image:alt" content="Apache Annotator (incubating) logo" />
+
+    <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
+    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
+    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
+    <link rel="manifest" href="/site.webmanifest">
+    <link rel="mask-icon" href="/images/safari-pinned-tab.svg" color="#5bbad5">
+    <meta name="msapplication-TileColor" content="#da532c">
+    <meta name="theme-color" content="#ffffff">
+
+    <link rel="alternate" title="DOAP" href="doap.rdf" type="application/rdf+xml" />
+
+    <link rel="stylesheet" href="//semantic-ui.com/dist/semantic.min.css" />
+  </head>
+
+  <body>
+    {{> page_header}}
+    <div class="ui basic segment container">
+      {{!-- This template is used both in our TypeDoc theme, and in 11ty --}}
+      {{!-- For TypeDoc, we get the content as a handlebars partial block --}}
+      {{#> @partial-block}}
+        {{!-- For 11ty, we get the content as a variable --}}
+        {{{content}}}
+      {{/@partial-block}}
+    </div>
+    {{> page_footer}}
+  </body>
+</html>
diff --git a/src/_layouts/default.liquid b/src/_layouts/default.liquid
deleted file mode 100644
index 96b9cdd..0000000
--- a/src/_layouts/default.liquid
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html>
-<html prefix="og: http://ogp.me/ns#">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
-    <title>Apache Annotator (incubating)</title>
-
-    <meta property="og:title" content="Apache Annotator" />
-    <meta property="og:type" content="website" />
-    <meta property="og:url" content="https://annotator.apache.org/" />
-    <meta property="og:image:url" content="https://annotator.apache.org/images/annotator-logo.svg" />
-    <meta property="og:image:alt" content="Apache Annotator (incubating) logo" />
-
-    <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
-    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
-    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
-    <link rel="manifest" href="/site.webmanifest">
-    <link rel="mask-icon" href="/images/safari-pinned-tab.svg" color="#5bbad5">
-    <meta name="msapplication-TileColor" content="#da532c">
-    <meta name="theme-color" content="#ffffff">
-
-    <link rel="alternate" title="DOAP" href="doap.rdf" type="application/rdf+xml" />
-
-    <link rel="stylesheet" href="//semantic-ui.com/dist/semantic.min.css" />
-  </head>
-
-  <body>
-    <div class="ui borderless stackable top attached main menu">
-      <div class="ui container">
-        <a class="item" href="/" style="color: rgba(0,0,0,.87);">
-          <img class="ui small image" src="/images/annotator-logo.svg" alt="Apache Annotator (incubating)" />
-        </a>
-
-        <div class="right menu">
-          <a class="item" href="/demo"><span class="ui positive button">Demo!</span></a>
-          <a class="item" rel="external" href="https://www.npmjs.com/package/apache-annotator">NPM</a>
-          <a class="item" rel="external" href="https://github.com/apache?q=annotator#org-repositories">Code</a>
-          <a class="item" rel="external" href="https://github.com/apache/incubator-annotator/issues">Issues</a>
-          <span class="active item"><strong>Docs</strong></span>
-          <a class="item" rel="external" href="https://mail-archives.apache.org/mod_mbox/incubator-annotator-dev/">Mailing List</a>
-        </div>
-      </div>
-    </div>
-
-    <div class="ui basic segment container">
-      <div class="ui grid">
-        <div class="three wide column">
-          <div class="ui vertical secondary menu">
-            {%- for post in collections.all -%}
-            {%- if post.url != '/' -%}
-            <div class="{% if page.url == post.url %}active {% endif %}item"><a href="{{ post.url }}">{{ post.data.title }}</a></div>
-            {%- endif -%}
-            {%- endfor -%}
-          </div>
-        </div>
-        <div class="nine wide column">
-          {{ content }}
-        </div>
-      </div>
-    </div>
-
-    <footer class="ui bottom attached segment">
-      <div class="ui container">
-        <div class="ui equal height divided stackable grid">
-          <div class="four wide column">
-            <a class="ui left floated medium image" href="https://apache.org/" target="_blank">
-              <img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="logo of the Apache Incubator" />
-            </a>
-            <p>
-              <em>Copyright © 2016-2018 The Apache Software Foundation, Licensed under
-              the <a href="https://www.apache.org/licenses/LICENSE-2.0" rel="license external">Apache License, Version 2.0</a>.
-              |
-              <a rel="external" href="https://www.apache.org/foundation/policies/privacy">Privacy Policy</a>
-              </em>
-            </p>
-          </div>
-          <div class="nine wide column">
-            <p>
-              <em>Apache Annotator is an effort undergoing incubation at <a target="_blank" href="https://apache.org/">The Apache Software Foundation (ASF)</a> sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</em></p>
-            <p><em>Apache®, the names of Apache projects, and the feather logo are either <a rel="external" href="https://www.apache.org/foundation/marks/list/">registered trademarks or trademarks</a> of the Apache Software Foundation in the United States and/or other countries.</em></p>
-          </div>
-          <div class="three wide column">
-            <h4 class="header">The <abbr title="Apache Software Foundation">ASF</abbr></h4>
-            <div class="ui link list">
-              <a class="item" rel="external" href="https://incubator.apache.org/">Apache Incubator</a>
-              <a class="item" rel="external" href="https://www.apache.org/">About the ASF</a>
-              <a class="item" rel="external" href="https://www.apache.org/events/current-event">Events</a>
-              <a class="item" rel="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
-              <a class="item" rel="external" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
-              <a class="item" rel="external" href="https://www.apache.org/security/">Security</a>
-              <a class="item" rel="external" href="https://www.apache.org/licenses/">License</a>
-            </div>
-          </div>
-        </div>
-      </div>
-    </footer>
-  </body>
-</html>
diff --git a/src/_layouts/docs.hbs b/src/_layouts/docs.hbs
new file mode 100644
index 0000000..0aacde4
--- /dev/null
+++ b/src/_layouts/docs.hbs
@@ -0,0 +1,18 @@
+---
+layout: default
+isDocs: true
+---
+      <div class="ui grid">
+        <div class="three wide column">
+          <div class="ui vertical secondary menu">
+            {{#each collections.all}}
+            {{#if (not-eq this.url '/')}}
+            <div class="{{#if (eq ../page.url this.url)}}active {{/if}}item"><a href="{{this.url}}">{{this.data.title}}</a></div>
+            {{/if}}
+            {{/each}}
+          </div>
+        </div>
+        <div class="nine wide column">
+          {{{content}}}
+        </div>
+      </div>
diff --git a/src/docs/getting-started.md b/src/docs/getting-started.md
index 72e6aba..3643292 100644
--- a/src/docs/getting-started.md
+++ b/src/docs/getting-started.md
@@ -1,6 +1,6 @@
 ---
 title: Getting Started
-layout: default
+layout: docs
 ---
 
 Please checkout the [demo](/demo/) for now, but we'll explain it here soon.
diff --git a/src/docs/index.md b/src/docs/index.md
index 131c2c1..528b88f 100644
--- a/src/docs/index.md
+++ b/src/docs/index.md
@@ -1,6 +1,6 @@
 ---
 title: Documentation
-layout: default
+layout: docs
 ---
 
 We're working on some initial documentation for getting started with Apache
diff --git a/src/index.html b/src/index.html
index 53bfa65..70a6bd0 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,49 +1,6 @@
-<!DOCTYPE html>
-<html prefix="og: http://ogp.me/ns#">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
-    <title>Apache Annotator (incubating)</title>
-
-    <meta property="og:title" content="Apache Annotator" />
-    <meta property="og:type" content="website" />
-    <meta property="og:url" content="https://annotator.apache.org/" />
-    <meta property="og:image:url" content="https://annotator.apache.org/images/annotator-logo.svg" />
-    <meta property="og:image:alt" content="Apache Annotator (incubating) logo" />
-
-    <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
-    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
-    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
-    <link rel="manifest" href="/site.webmanifest">
-    <link rel="mask-icon" href="/images/safari-pinned-tab.svg" color="#5bbad5">
-    <meta name="msapplication-TileColor" content="#da532c">
-    <meta name="theme-color" content="#ffffff">
-
-    <link rel="alternate" title="DOAP" href="doap.rdf" type="application/rdf+xml" />
-
-    <link rel="stylesheet" href="//semantic-ui.com/dist/semantic.min.css" />
-  </head>
-
-  <body>
-    <div class="ui borderless stackable top attached main menu">
-      <div class="ui container">
-        <a class="item" href="/" style="color: rgba(0,0,0,.87);">
-          <img class="ui small image" src="images/annotator-logo.svg" alt="Apache Annotator (incubating)" />
-        </a>
-
-        <div class="right menu">
-          <a class="item" href="demo/"><span class="ui positive button">Demo!</span></a>
-          <a class="item" rel="external" href="https://www.npmjs.com/package/apache-annotator">NPM</a>
-          <a class="item" rel="external" href="https://github.com/apache?q=annotator#org-repositories">Code</a>
-          <a class="item" rel="external" href="https://github.com/apache/incubator-annotator/issues">Issues</a>
-          <a class="item" href="docs">Docs</a>
-          <a class="item" rel="external" href="https://mail-archives.apache.org/mod_mbox/incubator-annotator-dev/">Mailing List</a>
-        </div>
-      </div>
-    </div>
-
-    <div class="ui basic segment container">
+---
+layout: default
+---
       <div class="ui divided grid">
         <div class="ten wide column">
           <h3>
@@ -183,44 +140,4 @@
           </div>
         </div>
       </div>
-    </div>
-
-    <footer class="ui bottom attached segment">
-      <div class="ui container">
-        <div class="ui equal height divided stackable grid">
-          <div class="four wide column">
-            <a class="ui left floated medium image" href="https://apache.org/" target="_blank">
-              <img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="logo of the Apache Incubator" />
-            </a>
-            <p>
-              <em>Copyright © 2016-2018 The Apache Software Foundation, Licensed under
-              the <a href="https://www.apache.org/licenses/LICENSE-2.0" rel="license external">Apache License, Version 2.0</a>.
-              |
-              <a rel="external" href="https://www.apache.org/foundation/policies/privacy">Privacy Policy</a>
-              </em>
-            </p>
-          </div>
-          <div class="nine wide column">
-            <p>
-              <em>Apache Annotator is an effort undergoing incubation at <a target="_blank" href="https://apache.org/">The Apache Software Foundation (ASF)</a> sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</em></p>
-            <p><em>Apache®, the names of Apache projects, and the feather logo are either <a rel="external" href="https://www.apache.org/foundation/marks/list/">registered trademarks or trademarks</a> of the Apache Software Foundation in the United States and/or other countries.</em></p>
-          </div>
-          <div class="three wide column">
-            <h4 class="header">The <abbr title="Apache Software Foundation">ASF</abbr></h4>
-            <div class="ui link list">
-              <a class="item" rel="external" href="https://incubator.apache.org/">Apache Incubator</a>
-              <a class="item" rel="external" href="https://www.apache.org/">About the ASF</a>
-              <a class="item" rel="external" href="https://www.apache.org/events/current-event">Events</a>
-              <a class="item" rel="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
-              <a class="item" rel="external" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a>
-              <a class="item" rel="external" href="https://www.apache.org/security/">Security</a>
-              <a class="item" rel="external" href="https://www.apache.org/licenses/">License</a>
-            </div>
-          </div>
-        </div>
-      </div>
-    </footer>
-
-    <script async defer src="index.js"></script>
-  </body>
-</html>
+      <script async defer src="index.js"></script>
diff --git a/typedoc_theme/layouts/default.hbs b/typedoc_theme/layouts/default.hbs
new file mode 100644
index 0000000..fd92fa5
--- /dev/null
+++ b/typedoc_theme/layouts/default.hbs
@@ -0,0 +1,38 @@
+{{#> website_default isDocs=true}}
+  <link rel="stylesheet" href="{{relativeURL "assets/css/main.css"}}">
+  <script async src="{{relativeURL "assets/js/search.js"}}" id="search-script"></script>
+
+  <aside>
+    <style>
+      #tsd-search {
+        position: relative;
+      }
+      #tsd-search input {
+        border: 1px solid grey;
+        border-radius: 2px;
+        padding: 0.2em;
+      }
+      #tsd-search .results {
+        z-index: 1;
+        position: absolute;
+      }
+    </style>
+    {{> typedoc_search_widget}}
+  </aside>
+
+  <header style="margin: 2em 0;" id="typedoc-title">
+    <style>
+      #typedoc-title h1 {
+        margin-top: 0;
+      }
+    </style>
+    {{> typedoc_breadcrumbs}}
+    {{> typedoc_h1_title}}
+  </header>
+
+  <main>
+    {{> typedoc_main_content }}
+  </main>
+
+  <script src="{{relativeURL "assets/js/main.js"}}"></script>
+{{/website_default}}
diff --git a/typedoc_theme/partials/page_footer.hbs b/typedoc_theme/partials/page_footer.hbs
new file mode 120000
index 0000000..96d50ef
--- /dev/null
+++ b/typedoc_theme/partials/page_footer.hbs
@@ -0,0 +1 @@
+../../src/_includes/page_footer.hbs
\ No newline at end of file
diff --git a/typedoc_theme/partials/page_header.hbs b/typedoc_theme/partials/page_header.hbs
new file mode 120000
index 0000000..9992a34
--- /dev/null
+++ b/typedoc_theme/partials/page_header.hbs
@@ -0,0 +1 @@
+../../src/_includes/page_header.hbs
\ No newline at end of file
diff --git a/typedoc_theme/partials/typedoc_breadcrumbs.hbs b/typedoc_theme/partials/typedoc_breadcrumbs.hbs
new file mode 100644
index 0000000..990efca
--- /dev/null
+++ b/typedoc_theme/partials/typedoc_breadcrumbs.hbs
@@ -0,0 +1,12 @@
+{{!--
+Copyright (c) 2015 Sebastian Lenz.
+Copyright (c) 2016-2020 TypeDoc Contributors.
+Licensed under the Apache License 2.0.
+From: https://github.com/TypeStrong/typedoc-default-themes
+--}}
+
+{{#if model.parent}} {{! Don't show breadcrumbs on main project page, it is the root page. !}}
+    <ul class="tsd-breadcrumb">
+        {{#with model}}{{> breadcrumb}}{{/with}}
+    </ul>
+{{/if}}
diff --git a/typedoc_theme/partials/typedoc_h1_title.hbs b/typedoc_theme/partials/typedoc_h1_title.hbs
new file mode 100644
index 0000000..bfa8832
--- /dev/null
+++ b/typedoc_theme/partials/typedoc_h1_title.hbs
@@ -0,0 +1,21 @@
+{{!--
+Copyright (c) 2015 Sebastian Lenz.
+Copyright (c) 2016-2020 TypeDoc Contributors.
+Licensed under the Apache License 2.0.
+From: https://github.com/TypeStrong/typedoc-default-themes
+--}}
+
+<h1>{{#compact}}
+    {{#ifCond model.kindString "!==" "Project" }}
+        {{model.kindString}}&nbsp;
+    {{/ifCond}}
+    {{model.name}}
+    {{#if model.typeParameters}}
+        &lt;
+        {{#each model.typeParameters}}
+            {{#if @index}},&nbsp;{{/if}}
+            {{name}}
+        {{/each}}
+        &gt;
+    {{/if}}
+{{/compact}}</h1>
diff --git a/typedoc_theme/partials/typedoc_main_content.hbs b/typedoc_theme/partials/typedoc_main_content.hbs
new file mode 100644
index 0000000..e1199d2
--- /dev/null
+++ b/typedoc_theme/partials/typedoc_main_content.hbs
@@ -0,0 +1,28 @@
+{{!--
+Copyright (c) 2015 Sebastian Lenz.
+Copyright (c) 2016-2020 TypeDoc Contributors.
+Licensed under the Apache License 2.0.
+From: https://github.com/TypeStrong/typedoc-default-themes
+--}}
+<div class="row">
+    <div class="col-8 col-content">
+        {{{contents}}}
+    </div>
+    <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
+        <nav class="tsd-navigation primary">
+            <ul>
+                {{#each navigation.children}}
+                    {{> navigation}}
+                {{/each}}
+            </ul>
+        </nav>
+
+        <nav class="tsd-navigation secondary menu-sticky">
+            <ul class="before-current">
+                {{#each toc.children}}
+                    {{> toc.root}}
+                {{/each}}
+            </ul>
+        </nav>
+    </div>
+</div>
diff --git a/typedoc_theme/partials/typedoc_search_widget.hbs b/typedoc_theme/partials/typedoc_search_widget.hbs
new file mode 100644
index 0000000..59cebaa
--- /dev/null
+++ b/typedoc_theme/partials/typedoc_search_widget.hbs
@@ -0,0 +1,18 @@
+{{!--
+Copyright (c) 2015 Sebastian Lenz.
+Copyright (c) 2016-2020 TypeDoc Contributors.
+Licensed under the Apache License 2.0.
+From: https://github.com/TypeStrong/typedoc-default-themes
+--}}
+
+<div id="tsd-search" data-index="{{relativeURL "assets/js/search.json"}}" data-base="{{relativeURL "./"}}">
+    <div>
+        <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
+        <input id="tsd-search-field" type="text" />
+    </div>
+
+    <ul class="results">
+        <li class="state loading">Preparing search index...</li>
+        <li class="state failure">The search index is not available</li>
+    </ul>
+</div>
diff --git a/typedoc_theme/partials/website_default.hbs b/typedoc_theme/partials/website_default.hbs
new file mode 120000
index 0000000..4c5a7fc
--- /dev/null
+++ b/typedoc_theme/partials/website_default.hbs
@@ -0,0 +1 @@
+../../src/_layouts/default.hbs
\ No newline at end of file