diff --git a/docs/src/theme/CodeBlock/dracula.js b/docs/src/prism-dracula.js
similarity index 98%
rename from docs/src/theme/CodeBlock/dracula.js
rename to docs/src/prism-dracula.js
index 0a3dc3a6..98310cec 100644
--- a/docs/src/theme/CodeBlock/dracula.js
+++ b/docs/src/prism-dracula.js
@@ -1,6 +1,6 @@
// @flow
-export default {
+module.exports = {
plain: {
color: "rgb(241, 250, 140)",
backgroundColor: "#282A36",
diff --git a/docs/src/theme/CodeBlock/github.js b/docs/src/theme/CodeBlock/github.js
deleted file mode 100644
index acd0352f..00000000
--- a/docs/src/theme/CodeBlock/github.js
+++ /dev/null
@@ -1,84 +0,0 @@
-// Original: https://raw.githubusercontent.com/PrismJS/prism-themes/master/themes/prism-ghcolors.css
-var theme = {
- plain: {
- color: "#393A34",
- backgroundColor: "#f6f8fa",
- },
- styles: [
- {
- types: ["comment", "prolog", "doctype", "cdata"],
- style: {
- color: "#999988",
- fontStyle: "italic",
- },
- },
- {
- types: ["namespace"],
- style: {
- opacity: 0.7,
- },
- },
- {
- types: ["string", "attr-value"],
- style: {
- color: "#e3116c",
- },
- },
- {
- types: ["punctuation", "operator"],
- style: {
- color: "#393A34",
- },
- },
- {
- types: [
- "entity",
- "url",
- "symbol",
- "number",
- "boolean",
- "variable",
- "constant",
- "property",
- "regex",
- "inserted",
- ],
- style: {
- color: "#36acaa",
- },
- },
- {
- types: ["atrule", "keyword", "attr-name", "selector"],
- style: {
- color: "#00a4db",
- },
- },
- {
- types: ["function", "deleted", "tag"],
- style: {
- color: "#d73a49",
- },
- },
- {
- types: ["function-variable"],
- style: {
- color: "#6f42c1",
- },
- },
- {
- types: ["tag", "selector", "keyword"],
- style: {
- color: "#00009f",
- },
- },
- {
- types: ["important"],
- style: {
- color: "#d73a49",
- fontStyle: "italic",
- },
- },
- ],
-};
-
-export default theme;
diff --git a/docs/src/theme/CodeBlock/index.js b/docs/src/theme/CodeBlock/index.js
deleted file mode 100644
index 5fa8764b..00000000
--- a/docs/src/theme/CodeBlock/index.js
+++ /dev/null
@@ -1,277 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/* eslint-disable jsx-a11y/no-noninteractive-tabindex */
-
-import React, { useEffect, useState, useRef } from "react";
-import classnames from "classnames";
-import Highlight, { defaultProps } from "prism-react-renderer";
-import Prism from "prism-react-renderer/prism";
-import darkTheme from "./dracula";
-import lightTheme from "./github";
-import Clipboard from "clipboard";
-import rangeParser from "parse-numeric-range";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import useThemeContext from "@theme/hooks/useThemeContext";
-
-import styles from "./styles.module.css";
-
-const highlightLinesRangeRegex = /{([\d,-]+)}/;
-const getHighlightDirectiveRegex = (
- languages = ["js", "jsBlock", "jsx", "python", "html", "ini"]
-) => {
- // supported types of comments
- const comments = {
- js: {
- start: "\\/\\/",
- end: "",
- },
- jsBlock: {
- start: "\\/\\*",
- end: "\\*\\/",
- },
- jsx: {
- start: "\\{\\s*\\/\\*",
- end: "\\*\\/\\s*\\}",
- },
- python: {
- start: "#",
- end: "",
- },
- html: {
- start: "",
- },
- ini: { start: "#", end: "" },
- };
- // supported directives
- const directives = [
- "highlight-next-line",
- "highlight-start",
- "highlight-end",
- ].join("|");
- // to be more reliable, the opening and closing comment must match
- const commentPattern = languages
- .map(
- (lang) =>
- `(?:${comments[lang].start}\\s*(${directives})\\s*${comments[lang].end})`
- )
- .join("|");
- // white space is allowed, but otherwise it should be on it's own line
- return new RegExp(`^\\s*(?:${commentPattern})\\s*$`);
-};
-// select comment styles based on language
-const highlightDirectiveRegex = (lang) => {
- switch (lang) {
- case "js":
- case "javascript":
- case "ts":
- case "typescript":
- return getHighlightDirectiveRegex(["js", "jsBlock"]);
-
- case "jsx":
- case "tsx":
- return getHighlightDirectiveRegex(["js", "jsBlock", "jsx"]);
-
- case "html":
- return getHighlightDirectiveRegex(["js", "jsBlock", "html"]);
-
- case "python":
- case "py":
- return getHighlightDirectiveRegex(["python"]);
- case "ini":
- return getHighlightDirectiveRegex(["ini"]);
-
- default:
- // all comment types
- return getHighlightDirectiveRegex();
- }
-};
-const codeBlockTitleRegex = /title=".*"/;
-
-export default ({ children, className: languageClassName, metastring }) => {
- (typeof global !== "undefined" ? global : window).Prism = Prism;
- require("prismjs/components/prism-shell-session");
- require("prismjs/components/prism-nginx");
- require("prismjs/components/prism-ini");
- const {
- siteConfig: {
- themeConfig: { prism = {} },
- },
- } = useDocusaurusContext();
-
- const [showCopied, setShowCopied] = useState(false);
- const [mounted, setMounted] = useState(false);
- // The Prism theme on SSR is always the default theme but the site theme
- // can be in a different mode. React hydration doesn't update DOM styles
- // that come from SSR. Hence force a re-render after mounting to apply the
- // current relevant styles. There will be a flash seen of the original
- // styles seen using this current approach but that's probably ok. Fixing
- // the flash will require changing the theming approach and is not worth it
- // at this point.
- useEffect(() => {
- setMounted(true);
- }, []);
-
- const target = useRef(null);
- const button = useRef(null);
- let highlightLines = [];
- let codeBlockTitle = "";
-
- const { isDarkTheme } = useThemeContext();
- const lightModeTheme = prism.theme || lightTheme || darkTheme;
- const darkModeTheme = prism.darkTheme || darkTheme || lightTheme;
- const prismTheme = isDarkTheme ? darkModeTheme : lightModeTheme;
-
- if (metastring && highlightLinesRangeRegex.test(metastring)) {
- const highlightLinesRange = metastring.match(highlightLinesRangeRegex)[1];
- highlightLines = rangeParser
- .parse(highlightLinesRange)
- .filter((n) => n > 0);
- }
-
- if (metastring && codeBlockTitleRegex.test(metastring)) {
- codeBlockTitle = metastring
- .match(codeBlockTitleRegex)[0]
- .split("title=")[1]
- .replace(/"+/g, "");
- }
-
- useEffect(() => {
- let clipboard;
-
- if (button.current) {
- clipboard = new Clipboard(button.current, {
- target: () => target.current,
- });
- }
-
- return () => {
- if (clipboard) {
- clipboard.destroy();
- }
- };
- }, [button.current, target.current]);
-
- let language =
- languageClassName && languageClassName.replace(/language-/, "");
-
- if (!language && prism.defaultLanguage) {
- language = prism.defaultLanguage;
- }
-
- // only declaration OR directive highlight can be used for a block
- let code = children.replace(/\n$/, "");
- if (highlightLines.length === 0 && language !== undefined) {
- let range = "";
- const directiveRegex = highlightDirectiveRegex(language);
- // go through line by line
- const lines = children.replace(/\n$/, "").split("\n");
- let blockStart;
- // loop through lines
- for (let index = 0; index < lines.length; ) {
- const line = lines[index];
- // adjust for 0-index
- const lineNumber = index + 1;
- const match = line.match(directiveRegex);
- if (match !== null) {
- const directive = match
- .slice(1)
- .reduce((final, item) => final || item, undefined);
- switch (directive) {
- case "highlight-next-line":
- range += `${lineNumber},`;
- break;
-
- case "highlight-start":
- blockStart = lineNumber;
- break;
-
- case "highlight-end":
- range += `${blockStart}-${lineNumber - 1},`;
- break;
-
- default:
- break;
- }
- lines.splice(index, 1);
- } else {
- // lines without directives are unchanged
- index += 1;
- }
- }
- highlightLines = rangeParser.parse(range);
- code = lines.join("\n");
- }
-
- const handleCopyCode = () => {
- window.getSelection().empty();
- setShowCopied(true);
-
- setTimeout(() => setShowCopied(false), 2000);
- };
-
- return (
-
- {({ className, style, tokens, getLineProps, getTokenProps }) => (
- <>
- {codeBlockTitle && (
-
- {codeBlockTitle}
-
- )}
-
- {/*
*/}
-
-
- {tokens.map((line, i) => {
- if (line.length === 1 && line[0].content === "") {
- line[0].content = "\n"; // eslint-disable-line no-param-reassign
- }
-
- const lineProps = getLineProps({ line, key: i });
-
- if (highlightLines.includes(i + 1)) {
- lineProps.className = `${lineProps.className} docusaurus-highlight-code-line`;
- }
-
- return (
-
- {line.map((token, key) => (
-
- ))}
-
- );
- })}
-
-
-
- >
- )}
-
- );
-};
diff --git a/docs/src/theme/CodeBlock/styles.module.css b/docs/src/theme/CodeBlock/styles.module.css
deleted file mode 100644
index dda5cafd..00000000
--- a/docs/src/theme/CodeBlock/styles.module.css
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-.codeBlockContent {
- position: relative;
-}
-
-.codeBlockTitle {
- font-family: var(--ifm-font-family-monospace);
- font-weight: bold;
- padding: var(--ifm-pre-padding);
- border-bottom: 1px solid var(--ifm-color-emphasis-200);
- width: 100%;
- border-top-left-radius: var(--ifm-global-radius);
- border-top-right-radius: var(--ifm-global-radius);
-}
-
-.codeBlock {
- overflow: auto;
- border-radius: var(--ifm-global-radius);
-}
-
-.codeBlockWithTitle {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- border-bottom-left-radius: var(--ifm-global-radius);
- border-bottom-right-radius: var(--ifm-global-radius);
-}
-
-.copyButton {
- background: rgba(0, 0, 0, 0.3);
- border: none;
- border-radius: var(--ifm-global-radius);
- color: var(--ifm-color-content);
- cursor: pointer;
- line-height: 12px;
- opacity: 0;
- outline: none;
- padding: 4px 8px;
- position: absolute;
- right: var(--ifm-pre-padding);
- top: var(--ifm-pre-padding);
- visibility: hidden;
- transition: opacity 200ms ease-in-out, visibility 200ms ease-in-out,
- bottom 200ms ease-in-out;
-}
-
-.copyButtonWithTitle {
- top: calc(var(--ifm-pre-padding));
-}
-
-.codeBlockTitle:hover + .codeBlockContent .copyButton,
-.codeBlockContent:hover > .copyButton {
- visibility: visible;
- opacity: 1;
-}
-
-.codeBlockLines {
- font-family: var(--ifm-font-family-monospace);
- font-size: inherit;
- line-height: var(--ifm-pre-line-height);
- white-space: pre;
- float: left;
- min-width: 100%;
- padding: var(--ifm-pre-padding);
-}
diff --git a/docs/src/theme/Footer/index.js b/docs/src/theme/Footer/index.js
deleted file mode 100644
index 0113f603..00000000
--- a/docs/src/theme/Footer/index.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-import React from "react";
-import classnames from "classnames";
-
-import Link from "@docusaurus/Link";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import styles from "./styles.module.css";
-
-function FooterLink({ to, href, label, ...props }) {
- const toUrl = useBaseUrl(to);
- return (
-
- {label}
-
- );
-}
-
-const FooterLogo = ({ url, alt }) => (
-
-);
-
-function Footer() {
- const context = useDocusaurusContext();
- const { siteConfig = {} } = context;
- const { themeConfig = {} } = siteConfig;
- const { footer } = themeConfig;
-
- const { copyright, links = [], logo = {} } = footer || {};
- const logoUrl = useBaseUrl(logo.src);
-
- if (!footer) {
- return null;
- }
-
- return (
-
- );
-}
-
-export default Footer;
diff --git a/docs/src/theme/Footer/styles.module.css b/docs/src/theme/Footer/styles.module.css
deleted file mode 100644
index f56e41fb..00000000
--- a/docs/src/theme/Footer/styles.module.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-.footerLogoLink {
- opacity: 0.5;
- transition: opacity 0.15s ease-in-out;
-}
-
-.footerLogoLink:hover {
- opacity: 1;
-}
-
-.footerCol:first-child {
- text-align: left;
-}
-
-.footerCol:not(:first-child):not(:last-child) {
- text-align: center;
-}
-
-.footerCol:last-child {
- text-align: right;
-}
-
-html[data-theme="dark"] .footerLink[class] {
- color: var(--ifm-color-emphasis-400);
-}
-
-.footerLink[class] {
- color: var(--ifm-color-emphasis-700);
-}
diff --git a/docs/src/theme/Layout/index.js b/docs/src/theme/Layout/index.js
deleted file mode 100644
index 20217ae0..00000000
--- a/docs/src/theme/Layout/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-import React from "react";
-import Head from "@docusaurus/Head";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import useBaseUrl from "@docusaurus/useBaseUrl";
-
-import ThemeProvider from "@theme/ThemeProvider";
-import UserPreferencesProvider from "@theme/UserPreferencesProvider";
-import AnnouncementBar from "@theme/AnnouncementBar";
-import Navbar from "../Navbar";
-import Footer from "../Footer";
-
-import "./styles.css";
-
-function Layout(props) {
- const { siteConfig = {} } = useDocusaurusContext();
- const {
- favicon,
- title: siteTitle,
- themeConfig: { image: defaultImage },
- url: siteUrl,
- } = siteConfig;
- const {
- children,
- title,
- noFooter,
- description,
- image,
- keywords,
- permalink,
- version,
- } = props;
- const metaTitle = title ? `${title} | ${siteTitle}` : siteTitle;
- const metaImage = image || defaultImage;
- const metaImageUrl = useBaseUrl(metaImage, { absolute: true });
- const faviconUrl = useBaseUrl(favicon);
- return (
-
-
-
-
- {metaTitle && {metaTitle}}
- {metaTitle && }
- {favicon && }
- {description && }
- {description && (
-
- )}
- {version && }
- {keywords && keywords.length && (
-
- )}
- {metaImage && }
- {metaImage && }
- {metaImage && }
- {metaImage && (
-
- )}
- {metaImage && (
-
- )}
- {permalink && (
-
- )}
- {permalink && }
-
-
-
-
- {children}
- {!noFooter && }
-
-
- );
-}
-
-export default Layout;
diff --git a/docs/src/theme/Layout/styles.css b/docs/src/theme/Layout/styles.css
deleted file mode 100644
index a2255552..00000000
--- a/docs/src/theme/Layout/styles.css
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-html,
-body {
- height: 100%;
-}
-
-body {
- margin: 0;
- transition: var(--ifm-transition-fast) ease color;
-}
-
-#__docusaurus {
- min-height: 100%;
- display: flex;
- flex-direction: column;
-}
-
-.main-wrapper {
- flex: 1 0 auto;
-}
diff --git a/docs/src/theme/Logo/index.tsx b/docs/src/theme/Logo/index.tsx
new file mode 100644
index 00000000..25b4755d
--- /dev/null
+++ b/docs/src/theme/Logo/index.tsx
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import React from "react";
+import type { Props } from "@theme/Logo";
+
+import clsx from "clsx";
+import Link from "@docusaurus/Link";
+import ThemedImage from "@theme/ThemedImage";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
+import { useThemeConfig } from "@docusaurus/theme-common";
+import { useLogoSrc } from "../../hooks";
+
+const Logo = (props: Props): JSX.Element => {
+ const { sources, className } = useLogoSrc();
+
+ const { isClient } = useDocusaurusContext();
+ const {
+ navbar: { title, logo = { src: "" } },
+ } = useThemeConfig();
+
+ const { imageClassName, titleClassName, ...propsRest } = props;
+ const logoLink = useBaseUrl(logo.href || "/");
+
+ return (
+
+ {sources.light && (
+
+ )}
+ {title != null &&
{title}}
+
+ );
+};
+
+export default Logo;
diff --git a/docs/src/theme/Navbar/index.js b/docs/src/theme/Navbar/index.js
deleted file mode 100644
index 7d481599..00000000
--- a/docs/src/theme/Navbar/index.js
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-import React, { useCallback, useState, useEffect } from "react";
-import clsx from "clsx";
-import Link from "@docusaurus/Link";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import useBaseUrl from "@docusaurus/useBaseUrl";
-
-import SearchBar from "../SearchBar";
-import useThemeContext from "@theme/hooks/useThemeContext";
-import useHideableNavbar from "@theme/hooks/useHideableNavbar";
-import useLockBodyScroll from "@theme/hooks/useLockBodyScroll";
-import useWindowSize, { windowSizes } from "@theme/hooks/useWindowSize";
-import useLogo from "@theme/hooks/useLogo";
-import useMedia from "use-media";
-import { ColorModeToggle } from "../../components/ColorModeToggle";
-import { GithubButton } from "../../components/GithubButton";
-import Logo from "../../components/Logo";
-import styles from "./styles.module.css";
-
-// retrocompatible with v1
-const DefaultNavItemPosition = "right";
-
-function NavLink({
- activeBasePath,
- activeBaseRegex,
- to,
- href,
- label,
- activeClassName = "navbar__link--active",
- prependBaseUrlToHref,
- ...props
-}) {
- const toUrl = useBaseUrl(to);
- const activeBaseUrl = useBaseUrl(activeBasePath);
- const normalizedHref = useBaseUrl(href, { forcePrependBaseUrl: true });
-
- return (
-
- activeBaseRegex
- ? new RegExp(activeBaseRegex).test(location.pathname)
- : location.pathname.startsWith(activeBaseUrl),
- }
- : null),
- })}
- {...props}
- >
- {label}
-
- );
-}
-
-function NavItem({
- items,
- position = DefaultNavItemPosition,
- className,
- ...props
-}) {
- const navLinkClassNames = (extraClassName, isDropdownItem = false) =>
- clsx(
- styles.navLink,
- {
- "navbar__item navbar__link": !isDropdownItem,
- dropdown__link: isDropdownItem,
- },
- extraClassName
- );
-
- if (!items) {
- return
;
- }
-
- return (
-
-
e.preventDefault()}
- onKeyDown={(e) => {
- if (e.key === "Enter") {
- e.target.parentNode.classList.toggle("dropdown--show");
- }
- }}
- >
- {props.label}
-
-
- {items.map(
- ({ className: childItemClassName, ...childItemProps }, i) => (
- -
-
-
- )
- )}
-
-
- );
-}
-
-function MobileNavItem({ items, position: _position, className, ...props }) {
- // Need to destructure position from props so that it doesn't get passed on.
- const navLinkClassNames = (extraClassName, isSubList = false) =>
- clsx(
- "menu__link",
- {
- "menu__link--sublist": isSubList,
- },
- extraClassName
- );
-
- if (!items) {
- return (
-
-
-
- );
- }
-
- return (
-
-
- {props.label}
-
-
- {items.map(
- ({ className: childItemClassName, ...childItemProps }, i) => (
- -
-
-
- )
- )}
-
-
- );
-}
-
-// If split links by left/right
-// if position is unspecified, fallback to right (as v1)
-function splitLinks(links) {
- const leftLinks = links.filter(
- (linkItem) => (linkItem.position ?? DefaultNavItemPosition) === "left"
- );
- const rightLinks = links.filter(
- (linkItem) => (linkItem.position ?? DefaultNavItemPosition) === "right"
- );
- return {
- leftLinks,
- rightLinks,
- };
-}
-
-function Navbar() {
- const {
- siteConfig: {
- themeConfig: {
- navbar: { title, links = [], hideOnScroll = false } = {},
- disableDarkMode = false,
- },
- organizationName,
- projectName,
- baseUrl,
- },
- } = useDocusaurusContext();
- const [sidebarShown, setSidebarShown] = useState(false);
- const [isSearchBarExpanded, setIsSearchBarExpanded] = useState(false);
-
- const { isDarkTheme, setLightTheme, setDarkTheme } = useThemeContext();
- const { navbarRef, isNavbarVisible } = useHideableNavbar(hideOnScroll);
- const { logoLink, logoLinkProps, logoImageUrl, logoAlt } = useLogo();
-
- useLockBodyScroll(sidebarShown);
-
- const showSidebar = useCallback(() => {
- setSidebarShown(true);
- }, [setSidebarShown]);
- const hideSidebar = useCallback(() => {
- setSidebarShown(false);
- }, [setSidebarShown]);
-
- const onToggleChange = useCallback(
- (checked) => {
- checked ? setDarkTheme() : setLightTheme();
- },
- [setLightTheme, setDarkTheme]
- );
-
- const windowSize = useWindowSize();
-
- const isMobile = useMedia({ maxWidth: 997 });
-
- useEffect(() => {
- if (windowSize === windowSizes.desktop) {
- setSidebarShown(false);
- }
- }, [windowSize]);
-
- const { leftLinks, rightLinks } = splitLinks(links);
-
- return (
-
- );
-}
-
-export default Navbar;
diff --git a/docs/src/theme/Navbar/styles.module.css b/docs/src/theme/Navbar/styles.module.css
deleted file mode 100644
index 0c1c178b..00000000
--- a/docs/src/theme/Navbar/styles.module.css
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-@media screen and (max-width: 997px) {
- .displayOnlyInLargeViewport {
- display: none !important;
- }
-}
-
-@media (max-width: 360px) {
- .hideLogoText {
- display: none;
- }
-}
-
-.navbarHideable {
- transition: top 0.2s ease-in-out;
-}
-
-.navbarHidden {
- top: calc(var(--ifm-navbar-height) * -1) !important;
-}
-
-.navbarItems {
- justify-content: flex-start;
-}
-
-.navbarItemsRight[class] {
- flex: 0 0;
-}
-
-.navLink[class] {
- position: relative;
- margin-left: 2rem;
- margin-right: 2rem;
- color: var(--ifm-font-color-base);
-}
-
-.navLink[class]:hover {
- color: var(--ifm-color-emphasis-700);
-}
-
-html[data-theme="dark"] .navLink[class]:hover {
- color: var(--ifm-color-secondary);
-}
-
-.navLink[class]:global(.navbar__link--active) {
- color: inherit;
- font-weight: bold;
-}
-.navLink[class]:global(.navbar__link--active)::after {
- position: absolute;
- left: 0;
- width: 100%;
- height: 1px;
- background: var(--ifm-color-content);
- content: "";
- transition: width 0.5s, opacity 0.5s, transform 0.5s;
- transform: translateY(-6px);
-}
-
-.toggle {
- margin-right: 20px;
-}
-
-.navbarMain {
- background-color: var(--ifm-background-color);
- box-shadow: none;
-}
-
-.logo {
- margin: 4px;
-}
-
-html[data-theme="dark"] .navbarOther {
- background-color: var(--ifm-background-color);
-}
-
-.navbarOther {
- background-color: var(--ifm-color-white);
-}
-
-.navBarBorder {
- border-bottom: 1px solid var(--ifm-toc-border-color);
-}
diff --git a/docs/src/theme/Old Navbar/index.js b/docs/src/theme/Old Navbar/index.js
deleted file mode 100644
index c6d54807..00000000
--- a/docs/src/theme/Old Navbar/index.js
+++ /dev/null
@@ -1,250 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-import React, { useCallback, useState } from "react";
-import classnames from "classnames";
-import Link from "@docusaurus/Link";
-import { useLocation } from "react-router-dom";
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import useBaseUrl from "@docusaurus/useBaseUrl";
-import SearchBar from "@theme/SearchBar";
-import useThemeContext from "@theme/hooks/useThemeContext";
-import useHideableNavbar from "@theme/hooks/useHideableNavbar";
-import useLockBodyScroll from "@theme/hooks/useLockBodyScroll";
-import useMedia from "use-media";
-import { ColorModeToggle } from "../../components/ColorModeToggle";
-import { GithubButton } from "../../components/GithubButton";
-import Logo from "../../components/Logo";
-import styles from "./styles.module.css";
-
-function NavLink({ to, href, label, position, ...props }) {
- const toUrl = useBaseUrl(to);
- return (
-
- {label}
-
- );
-}
-
-function Navbar() {
- const context = useDocusaurusContext();
- const { siteConfig = {} } = context;
- const { baseUrl, themeConfig = {} } = siteConfig;
- const { navbar = {}, disableDarkMode = false } = themeConfig;
- const { title, logo = {}, links = [], hideOnScroll = false } = navbar;
-
- const [sidebarShown, setSidebarShown] = useState(false);
- const [isSearchBarExpanded, setIsSearchBarExpanded] = useState(false);
- const { pathname } = useLocation();
-
- const { isDarkTheme, setLightTheme, setDarkTheme } = useThemeContext();
- const { navbarRef, isNavbarVisible } = useHideableNavbar(hideOnScroll);
-
- const isMobile = useMedia({ maxWidth: 997 });
-
- useLockBodyScroll(sidebarShown);
-
- const showSidebar = useCallback(() => {
- setSidebarShown(true);
- }, [setSidebarShown]);
- const hideSidebar = useCallback(() => {
- setSidebarShown(false);
- }, [setSidebarShown]);
-
- const onToggleChange = (checked) => {
- checked ? setDarkTheme() : setLightTheme();
- };
-
- const logoLink = logo.href || baseUrl;
- const isExternalLogoLink = /http/.test(logoLink);
- const logoLinkProps = isExternalLogoLink
- ? {
- rel: "noopener noreferrer",
- target: "_blank",
- }
- : null;
- const logoSrc = logo.srcDark && isDarkTheme ? logo.srcDark : logo.src;
-
- return (
-
- );
-}
-
-export default Navbar;
diff --git a/docs/src/theme/Old Navbar/styles.module.css b/docs/src/theme/Old Navbar/styles.module.css
deleted file mode 100644
index 92fdd572..00000000
--- a/docs/src/theme/Old Navbar/styles.module.css
+++ /dev/null
@@ -1,76 +0,0 @@
-@media screen and (max-width: 997px) {
- .displayOnlyInLargeViewport {
- display: none !important;
- }
-}
-
-@media (max-width: 360px) {
- .hideLogoText {
- display: none;
- }
-}
-
-.navbarHideable {
- transition: top 0.2s ease-in-out;
-}
-
-.navbarHidden {
- top: calc(var(--ifm-navbar-height) * -1) !important;
-}
-.navbarItems {
- justify-content: flex-start;
-}
-
-.navbarItemsRight[class] {
- flex: 0 0;
-}
-
-.navLink[class] {
- position: relative;
- margin-left: 2rem;
- margin-right: 2rem;
-}
-
-.navLink[class]:hover {
- color: var(--ifm-color-white);
-}
-
-html[data-theme="dark"] .navLink[class]:hover {
- color: var(--ifm-color-secondary);
-}
-
-.navLink[class]:global(.navbar__link--active) {
- color: inherit;
- font-weight: bold;
-}
-.navLink[class]:global(.navbar__link--active)::after {
- position: absolute;
- left: 0;
- width: 100%;
- height: 1px;
- background: var(--ifm-color-content);
- content: "";
- transition: width 0.5s, opacity 0.5s, transform 0.5s;
- transform: translateY(-6px);
-}
-
-.toggle {
- margin-right: 20px;
-}
-
-.navbarMain {
- background-color: var(--ifm-background-color);
- box-shadow: none;
-}
-
-.logo {
- margin: 4px;
-}
-
-html[data-theme="dark"] .navbarOther {
- background-color: var(--ifm-background-color);
-}
-
-.navbarOther {
- background-color: var(--ifm-color-white);
-}
diff --git a/docs/src/theme/SearchBar/algolia.css b/docs/src/theme/SearchBar/algolia.css
deleted file mode 100644
index 7bc62264..00000000
--- a/docs/src/theme/SearchBar/algolia.css
+++ /dev/null
@@ -1,533 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/* Bottom border of each suggestion */
-.algolia-docsearch-suggestion {
- border-bottom-color: #3a3dd1;
-}
-/* Main category headers */
-.algolia-docsearch-suggestion--category-header {
- background-color: #4b54de;
-}
-/* Highlighted search terms */
-.algolia-docsearch-suggestion--highlight {
- color: #3a33d1;
-}
-/* Highligted search terms in the main category headers */
-.algolia-docsearch-suggestion--category-header
- .algolia-docsearch-suggestion--highlight {
- background-color: #4d47d5;
-}
-/* Currently selected suggestion */
-.aa-cursor .algolia-docsearch-suggestion--content {
- color: #272296;
-}
-.aa-cursor .algolia-docsearch-suggestion {
- background: #ebebfb;
-}
-
-/* For bigger screens, when displaying results in two columns */
-@media (min-width: 768px) {
- /* Bottom border of each suggestion */
- .algolia-docsearch-suggestion {
- border-bottom-color: #7671df;
- }
- /* Left column, with secondary category header */
- .algolia-docsearch-suggestion--subcategory-column {
- border-right-color: #7671df;
- color: #4e4726;
- }
-}
-
-.searchbox {
- display: inline-block;
- position: relative;
- width: 200px;
- height: 32px !important;
- white-space: nowrap;
- box-sizing: border-box;
- visibility: visible !important;
-}
-
-.searchbox .algolia-autocomplete {
- display: block;
- width: 100%;
- height: 100%;
-}
-
-.searchbox__wrapper {
- width: 100%;
- height: 100%;
- z-index: 999;
- position: relative;
-}
-
-.searchbox__input {
- display: inline-block;
- box-sizing: border-box;
- -webkit-transition: box-shadow 0.4s ease, background 0.4s ease;
- transition: box-shadow 0.4s ease, background 0.4s ease;
- border: 0;
- border-radius: 16px;
- box-shadow: inset 0 0 0 1px #cccccc;
- background: #ffffff !important;
- padding: 0;
- padding-right: 26px;
- padding-left: 32px;
- width: 100%;
- height: 100%;
- vertical-align: middle;
- white-space: normal;
- font-size: 12px;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
-}
-
-.searchbox__input::-webkit-search-decoration,
-.searchbox__input::-webkit-search-cancel-button,
-.searchbox__input::-webkit-search-results-button,
-.searchbox__input::-webkit-search-results-decoration {
- display: none;
-}
-
-.searchbox__input:hover {
- box-shadow: inset 0 0 0 1px #b3b3b3;
-}
-
-.searchbox__input:focus,
-.searchbox__input:active {
- outline: 0;
- box-shadow: inset 0 0 0 1px #aaaaaa;
- background: #ffffff;
-}
-
-.searchbox__input::-webkit-input-placeholder {
- color: #aaaaaa;
-}
-
-.searchbox__input::-moz-placeholder {
- color: #aaaaaa;
-}
-
-.searchbox__input:-ms-input-placeholder {
- color: #aaaaaa;
-}
-
-.searchbox__input::placeholder {
- color: #aaaaaa;
-}
-
-.searchbox__submit {
- position: absolute;
- top: 0;
- margin: 0;
- border: 0;
- border-radius: 16px 0 0 16px;
- background-color: rgba(69, 142, 225, 0);
- padding: 0;
- width: 32px;
- height: 100%;
- vertical-align: middle;
- text-align: center;
- font-size: inherit;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- right: inherit;
- left: 0;
-}
-
-.searchbox__submit::before {
- display: inline-block;
- margin-right: -4px;
- height: 100%;
- vertical-align: middle;
- content: '';
-}
-
-.searchbox__submit:hover,
-.searchbox__submit:active {
- cursor: pointer;
-}
-
-.searchbox__submit:focus {
- outline: 0;
-}
-
-.searchbox__submit svg {
- width: 14px;
- height: 14px;
- vertical-align: middle;
- fill: #6d7e96;
-}
-
-.searchbox__reset {
- display: block;
- position: absolute;
- top: 8px;
- right: 8px;
- margin: 0;
- border: 0;
- background: none;
- cursor: pointer;
- padding: 0;
- font-size: inherit;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- fill: rgba(0, 0, 0, 0.5);
-}
-
-.searchbox__reset.hide {
- display: none;
-}
-
-.searchbox__reset:focus {
- outline: 0;
-}
-
-.searchbox__reset svg {
- display: block;
- margin: 4px;
- width: 8px;
- height: 8px;
-}
-
-.searchbox__input:valid ~ .searchbox__reset {
- display: block;
- -webkit-animation-name: sbx-reset-in;
- animation-name: sbx-reset-in;
- -webkit-animation-duration: 0.15s;
- animation-duration: 0.15s;
-}
-
-@-webkit-keyframes sbx-reset-in {
- 0% {
- -webkit-transform: translate3d(-20%, 0, 0);
- transform: translate3d(-20%, 0, 0);
- opacity: 0;
- }
- 100% {
- -webkit-transform: none;
- transform: none;
- opacity: 1;
- }
-}
-
-@keyframes sbx-reset-in {
- 0% {
- -webkit-transform: translate3d(-20%, 0, 0);
- transform: translate3d(-20%, 0, 0);
- opacity: 0;
- }
- 100% {
- -webkit-transform: none;
- transform: none;
- opacity: 1;
- }
-}
-
-.algolia-autocomplete .ds-dropdown-menu:before {
- display: block;
- position: absolute;
- content: '';
- width: 14px;
- height: 14px;
- background: #373940;
- z-index: 1000;
- top: -7px;
- border-top: 1px solid #373940;
- border-right: 1px solid #373940;
- -webkit-transform: rotate(-45deg);
- transform: rotate(-45deg);
- border-radius: 2px;
-}
-
-.algolia-autocomplete .ds-dropdown-menu {
- box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1);
-}
-
-@media (min-width: 601px) {
- .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu {
- right: 0 !important;
- left: inherit !important;
- }
-
- .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before {
- right: 48px;
- }
-
- .algolia-autocomplete .ds-dropdown-menu {
- position: relative;
- top: -6px;
- border-radius: 4px;
- margin: 6px 0 0;
- padding: 0;
- text-align: left;
- height: auto;
- position: relative;
- background: transparent;
- border: none;
- z-index: 999;
- max-width: 600px;
- min-width: 500px;
- }
-}
-
-@media (max-width: 600px) {
- .algolia-autocomplete .ds-dropdown-menu {
- z-index: 100;
- position: fixed !important;
- top: 50px !important;
- left: auto !important;
- right: 1rem !important;
- width: 600px;
- max-width: calc(100% - 2rem);
- max-height: calc(100% - 5rem);
- display: block;
- }
-
- .algolia-autocomplete .ds-dropdown-menu:before {
- right: 6rem;
- }
-}
-
-.algolia-autocomplete .ds-dropdown-menu .ds-suggestions {
- position: relative;
- z-index: 1000;
-}
-
-.algolia-autocomplete .ds-dropdown-menu .ds-suggestion {
- cursor: pointer;
-}
-
-.algolia-autocomplete .ds-dropdown-menu [class^='ds-dataset-'] {
- position: relative;
- border-radius: 4px;
- overflow: auto;
- padding: 0;
- background: #ffffff;
-}
-
-.algolia-autocomplete .ds-dropdown-menu * {
- box-sizing: border-box;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion {
- display: block;
- position: relative;
- padding: 0;
- overflow: hidden;
- text-decoration: none;
-}
-
-.algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--wrapper {
- background: #f1f1f1;
- box-shadow: inset -2px 0 0 #61dafb;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--highlight {
- background: #ffe564;
- padding: 0.1em 0.05em;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion--category-header
- .algolia-docsearch-suggestion--category-header-lvl0
- .algolia-docsearch-suggestion--highlight,
-.algolia-autocomplete
- .algolia-docsearch-suggestion--category-header
- .algolia-docsearch-suggestion--category-header-lvl1
- .algolia-docsearch-suggestion--highlight {
- color: inherit;
- background: inherit;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion--text
- .algolia-docsearch-suggestion--highlight {
- padding: 0 0 1px;
- background: inherit;
- box-shadow: inset 0 -2px 0 0 rgba(69, 142, 225, 0.8);
- color: inherit;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--content {
- display: block;
- float: right;
- width: 70%;
- position: relative;
- padding: 5.33333px 0 5.33333px 10.66667px;
- cursor: pointer;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--content:before {
- content: '';
- position: absolute;
- display: block;
- top: 0;
- height: 100%;
- width: 1px;
- background: #ececec;
- left: -1px;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--category-header {
- position: relative;
- display: none;
- font-size: 14px;
- letter-spacing: 0.08em;
- font-weight: 700;
- background-color: #373940;
- text-transform: uppercase;
- color: #fff;
- margin: 0;
- padding: 5px 8px;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--wrapper {
- background-color: #fff;
- width: 100%;
- float: left;
- padding: 8px 0 0 0;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column {
- float: left;
- width: 30%;
- display: none;
- padding-left: 0;
- text-align: right;
- position: relative;
- padding: 5.33333px 10.66667px;
- color: #777;
- font-size: 0.9em;
- word-wrap: break-word;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before {
- content: '';
- position: absolute;
- display: block;
- top: 0;
- height: 100%;
- width: 1px;
- background: #ececec;
- right: 0;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main
- .algolia-docsearch-suggestion--category-header,
-.algolia-autocomplete
- .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary {
- display: block;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion--subcategory-column
- .algolia-docsearch-suggestion--highlight {
- background-color: inherit;
- color: inherit;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline {
- display: none;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--title {
- margin-bottom: 4px;
- color: #02060c;
- font-size: 0.9em;
- font-weight: bold;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--text {
- display: block;
- line-height: 1.2em;
- font-size: 0.85em;
- color: #63676d;
- padding-right: 2px;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--no-results {
- width: 100%;
- padding: 8px 0;
- text-align: center;
- font-size: 1.2em;
- background-color: #373940;
- margin-top: -8px;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion--no-results
- .algolia-docsearch-suggestion--text {
- color: #ffffff;
- margin-top: 4px;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion--no-results::before {
- display: none;
-}
-
-.algolia-autocomplete .algolia-docsearch-suggestion code {
- padding: 1px 5px;
- font-size: 90%;
- border: none;
- color: #222222;
- background-color: #ebebeb;
- border-radius: 3px;
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
- monospace;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion
- code
- .algolia-docsearch-suggestion--highlight {
- background: none;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main
- .algolia-docsearch-suggestion--category-header {
- color: white;
- display: block;
-}
-
-.algolia-autocomplete
- .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary
- .algolia-docsearch-suggestion--subcategory-column {
- display: block;
-}
-
-.algolia-autocomplete .algolia-docsearch-footer {
- background-color: #fff;
- width: 100%;
- height: 30px;
- z-index: 2000;
- float: right;
- font-size: 0;
- line-height: 0;
-}
-
-.algolia-autocomplete .algolia-docsearch-footer--logo {
- background-image: url('data:image/svg+xml;utf8,
');
- background-repeat: no-repeat;
- background-position: center;
- background-size: 100%;
- overflow: hidden;
- text-indent: -9000px;
- width: 110px;
- height: 100%;
- display: block;
- margin-left: auto;
- margin-right: 5px;
-}
diff --git a/docs/src/theme/SearchBar/index.js b/docs/src/theme/SearchBar/index.js
deleted file mode 100644
index 027b3fc5..00000000
--- a/docs/src/theme/SearchBar/index.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-import React, { useState, useRef, useCallback } from "react";
-import classnames from "classnames";
-
-import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
-import { useHistory } from "@docusaurus/router";
-
-import "./styles.css";
-
-const Search = ({ handleSearchBarToggle, isSearchBarExpanded, ...props }) => {
- const [algoliaLoaded, setAlgoliaLoaded] = useState(false);
- const searchBarRef = useRef(null);
- const { siteConfig = {} } = useDocusaurusContext();
- const {
- themeConfig: { algolia },
- } = siteConfig;
- const history = useHistory();
-
- function initAlgolia(focus) {
- window.docsearch({
- appId: algolia.appId,
- apiKey: algolia.apiKey,
- indexName: algolia.indexName,
- inputSelector: "#search_input_react",
- algoliaOptions: algolia.algoliaOptions,
- // Override algolia's default selection event, allowing us to do client-side
- // navigation and avoiding a full page refresh.
- handleSelected: (_input, _event, suggestion) => {
- // Use an anchor tag to parse the absolute url into a relative url
- // Alternatively, we can use new URL(suggestion.url) but its not supported in IE
- const a = document.createElement("a");
- a.href = suggestion.url;
-
- // Algolia use closest parent element id #__docusaurus when a h1 page title does not have an id
- // So, we can safely remove it. See https://github.com/facebook/docusaurus/issues/1828 for more details.
- const routePath =
- `#__docusaurus` === a.hash
- ? `${a.pathname}`
- : `${a.pathname}${a.hash}`;
- history.push(routePath);
- },
- });
-
- if (focus) {
- searchBarRef.current.focus();
- }
- }
-
- const loadAlgolia = (focus = true) => {
- if (algoliaLoaded) {
- return;
- }
-
- Promise.all([import("docsearch.js"), import("./algolia.css")]).then(
- ([{ default: docsearch }]) => {
- setAlgoliaLoaded(true);
- window.docsearch = docsearch;
- initAlgolia(focus);
- }
- );
- };
-
- const handleSearchIcon = useCallback(() => {
- loadAlgolia();
-
- if (algoliaLoaded) {
- searchBarRef.current.focus();
- }
-
- handleSearchBarToggle(!isSearchBarExpanded);
- }, [isSearchBarExpanded]);
-
- const handleSearchInputBlur = useCallback(() => {
- handleSearchBarToggle(!isSearchBarExpanded);
- }, [isSearchBarExpanded]);
-
- const handleSearchInput = useCallback((e) => {
- const needFocus = e.type !== "mouseover";
-
- loadAlgolia(needFocus);
- });
-
- return (
-
-
-
-
- );
-};
-
-export default Search;
diff --git a/docs/src/theme/SearchBar/styles.css b/docs/src/theme/SearchBar/styles.css
deleted file mode 100644
index 047517ec..00000000
--- a/docs/src/theme/SearchBar/styles.css
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-.search-icon {
- background-image: var(--ifm-navbar-search-input-icon);
- height: auto;
- width: 24px;
- cursor: pointer;
- padding: 8px;
- line-height: 32px;
- background-repeat: no-repeat;
- background-position: center;
- display: none;
-}
-
-.search-icon-hidden {
- visibility: hidden;
-}
-
-@media (max-width: 360px) {
- .search-bar {
- width: 0 !important;
- background: none !important;
- padding: 0 !important;
- transition: none !important;
- }
-
- .search-bar-expanded {
- width: 9rem !important;
- }
-
- .search-icon {
- display: inline;
- vertical-align: sub;
- }
-}
diff --git a/docs/static/hyperglass-dark.svg b/docs/static/hyperglass-dark.svg
index b2bb038e..b93080f4 100644
--- a/docs/static/hyperglass-dark.svg
+++ b/docs/static/hyperglass-dark.svg
@@ -1,5 +1,5 @@