diff --git a/CHANGELOG.md b/CHANGELOG.md
index f90fd779..f4ddd273 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,10 +1,10 @@
# Change Log
-## [3.0.1] - 2020-08-30
+## [3.0.1] - 2021-08-30
- [#79](https://github.com/estruyf/vscode-front-matter/issues/79): Fix scrollbar not visible on the welcome screen
-## [3.0.0] - 2020-08-27
+## [3.0.0] - 2021-08-27
- [#61](https://github.com/estruyf/vscode-front-matter/issues/61): List of recently modified files
- [#64](https://github.com/estruyf/vscode-front-matter/issues/64): Publish toggle for easier publishing an article
diff --git a/README.md b/README.md
index 848437b4..fcb4783c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
diff --git a/docs/components/Images/Logo.tsx b/docs/components/Images/Logo.tsx
new file mode 100644
index 00000000..541e6a2c
--- /dev/null
+++ b/docs/components/Images/Logo.tsx
@@ -0,0 +1,11 @@
+import * as React from 'react';
+
+export interface ILogoProps {
+ className: string;
+}
+
+export const Logo: React.FunctionComponent = ({className}: React.PropsWithChildren) => {
+ return (
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Images/index.ts b/docs/components/Images/index.ts
new file mode 100644
index 00000000..d97c6951
--- /dev/null
+++ b/docs/components/Images/index.ts
@@ -0,0 +1 @@
+export * from './Logo';
diff --git a/docs/components/Link/Link.tsx b/docs/components/Link/Link.tsx
new file mode 100644
index 00000000..a6dbb456
--- /dev/null
+++ b/docs/components/Link/Link.tsx
@@ -0,0 +1,11 @@
+import * as React from 'react';
+
+export interface ILinkProps {}
+
+export const Link: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ return (
+ <>
+
+ >
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Meta/Description.tsx b/docs/components/Meta/Description.tsx
new file mode 100644
index 00000000..c8a350d0
--- /dev/null
+++ b/docs/components/Meta/Description.tsx
@@ -0,0 +1,16 @@
+import Head from 'next/head';
+import * as React from 'react';
+
+export interface IDescriptionProps {
+ value: string;
+}
+
+export const Description: React.FunctionComponent = ({value}: React.PropsWithChildren) => {
+ return (
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Meta/OtherMeta.tsx b/docs/components/Meta/OtherMeta.tsx
new file mode 100644
index 00000000..b220bfb3
--- /dev/null
+++ b/docs/components/Meta/OtherMeta.tsx
@@ -0,0 +1,28 @@
+import Head from 'next/head';
+import { useRouter } from 'next/router';
+import * as React from 'react';
+import { publicUrl } from '../../lib/publicUrl';
+
+export interface IOtherMetaProps {
+ image: string;
+ type?: "website" | "article";
+}
+
+export const OtherMeta: React.FunctionComponent = ({ image, type }: React.PropsWithChildren) => {
+ const router = useRouter();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Meta/Title.tsx b/docs/components/Meta/Title.tsx
new file mode 100644
index 00000000..0e0d2790
--- /dev/null
+++ b/docs/components/Meta/Title.tsx
@@ -0,0 +1,18 @@
+import * as React from 'react';
+import Head from 'next/head';
+import { Extension } from '../../constants/extension';
+
+export interface ITitleProps {
+ value: string;
+}
+
+export const Title: React.FunctionComponent = ({value}: React.PropsWithChildren) => {
+ return (
+
+ {value} | {Extension.name}
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Meta/index.ts b/docs/components/Meta/index.ts
new file mode 100644
index 00000000..8a6aa30c
--- /dev/null
+++ b/docs/components/Meta/index.ts
@@ -0,0 +1,3 @@
+export * from './Description';
+export * from './OtherMeta';
+export * from './Title';
diff --git a/docs/components/Navigation/Navigation.tsx b/docs/components/Navigation/Navigation.tsx
new file mode 100644
index 00000000..f878f8c7
--- /dev/null
+++ b/docs/components/Navigation/Navigation.tsx
@@ -0,0 +1,49 @@
+import * as React from 'react';
+import { navigation } from '../../constants/navigation';
+import { Logo } from '../Images';
+import Link from 'next/Link';
+import { Extension } from '../../constants/extension';
+import { useRouter } from 'next/router';
+
+export interface INavigationProps {}
+
+export const Navigation: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ const router = useRouter();
+
+ return (
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Navigation/index.ts b/docs/components/Navigation/index.ts
new file mode 100644
index 00000000..95e14a93
--- /dev/null
+++ b/docs/components/Navigation/index.ts
@@ -0,0 +1 @@
+export * from './Navigation';
diff --git a/docs/components/Page/CTA.tsx b/docs/components/Page/CTA.tsx
new file mode 100644
index 00000000..f67a5712
--- /dev/null
+++ b/docs/components/Page/CTA.tsx
@@ -0,0 +1,45 @@
+import * as React from 'react';
+import { useTranslation } from 'react-i18next';
+import { Extension } from '../../constants/extension';
+
+export interface ICTAProps {}
+
+export const CTA: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ const { t: strings } = useTranslation();
+
+ return (
+
+
+
+
+ {strings(`cta_title`)}{' '}
+ {Extension.name}
+
+
+
+ {strings(`cta_description`)}
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Page/Features.tsx b/docs/components/Page/Features.tsx
new file mode 100644
index 00000000..e55c9885
--- /dev/null
+++ b/docs/components/Page/Features.tsx
@@ -0,0 +1,34 @@
+import * as React from 'react';
+import { useTranslation } from 'react-i18next';
+import { features } from '../../constants/features';
+import { CheckIcon } from '@heroicons/react/outline';
+
+export interface IFeaturesProps {}
+
+export const Features: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ const { t: strings } = useTranslation();
+
+ return (
+
+
+
+
{strings(`features_title`)}
+
+ {strings(`features_description`)}
+
+
+
+ {features.map((feature) => (
+
+
-
+
+
{strings(feature.name)}
+
+
- {strings(feature.description)}
+
+ ))}
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Page/Footer.tsx b/docs/components/Page/Footer.tsx
new file mode 100644
index 00000000..b4621369
--- /dev/null
+++ b/docs/components/Page/Footer.tsx
@@ -0,0 +1,36 @@
+import * as React from 'react';
+import { Extension } from '../../constants/extension';
+import { navigation } from '../../constants/navigation';
+
+export interface IFooterProps {}
+
+export const Footer: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ return (
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Page/Generators.tsx b/docs/components/Page/Generators.tsx
new file mode 100644
index 00000000..50a19adb
--- /dev/null
+++ b/docs/components/Page/Generators.tsx
@@ -0,0 +1,38 @@
+import * as React from 'react';
+import { useTranslation } from 'react-i18next';
+
+export interface IGeneratorsProps {}
+
+export const Generators: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ const { t: strings } = useTranslation();
+
+ return (
+
+
+
+ {strings(`generators_title`)}
+
+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Page/Layout.tsx b/docs/components/Page/Layout.tsx
new file mode 100644
index 00000000..ef46a1dc
--- /dev/null
+++ b/docs/components/Page/Layout.tsx
@@ -0,0 +1,21 @@
+import * as React from 'react';
+import { Navigation } from '../Navigation';
+import { Footer } from './Footer';
+
+export interface ILayoutProps {}
+
+export const Layout: React.FunctionComponent = (props: React.PropsWithChildren) => {
+ return (
+
+
+
+
+ {props.children}
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/docs/components/Page/Page.tsx b/docs/components/Page/Page.tsx
deleted file mode 100644
index ea59f447..00000000
--- a/docs/components/Page/Page.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import * as React from 'react';
-
-export interface IPageProps {}
-
-export const Page: React.FunctionComponent = (props: React.PropsWithChildren) => {
- return (
- <>
-
- >
- );
-};
\ No newline at end of file
diff --git a/docs/constants/extension.ts b/docs/constants/extension.ts
new file mode 100644
index 00000000..002a7c1c
--- /dev/null
+++ b/docs/constants/extension.ts
@@ -0,0 +1,12 @@
+
+export const Extension = {
+ name: `Front Matter`,
+ home: `The CMS running in VS Code`,
+ description: `Front Matter is an essential Visual Studio Code extension that simplifies working and managing your markdown articles. We created the extension to support many static-site generators like Hugo, Jekyll, Hexo, NextJs, Gatsby, and more.`,
+
+ githubLink: "https://github.com/estruyf/vscode-front-matter",
+ issueLink: "https://github.com/estruyf/vscode-front-matter/issues",
+ sponsorLink: "https://github.com/sponsors/estruyf",
+ extensionLink: "https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter",
+ reviewLink: "https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter&ssr=false#review-details",
+}
\ No newline at end of file
diff --git a/docs/constants/features.ts b/docs/constants/features.ts
new file mode 100644
index 00000000..d73efb5a
--- /dev/null
+++ b/docs/constants/features.ts
@@ -0,0 +1,28 @@
+
+
+export const features = [
+ {
+ name: `feature_title_1`,
+ description: `feature_description_1`,
+ },
+ {
+ name: `feature_title_2`,
+ description: `feature_description_2`,
+ },
+ {
+ name: `feature_title_3`,
+ description: `feature_description_3`,
+ },
+ {
+ name: `feature_title_4`,
+ description: `feature_description_4`,
+ },
+ {
+ name: `feature_title_5`,
+ description: `feature_description_5`,
+ },
+ {
+ name: `feature_title_6`,
+ description: `feature_description_6`,
+ }
+];
\ No newline at end of file
diff --git a/docs/constants/navigation.tsx b/docs/constants/navigation.tsx
new file mode 100644
index 00000000..8787d059
--- /dev/null
+++ b/docs/constants/navigation.tsx
@@ -0,0 +1,35 @@
+import { HeartIcon } from "@heroicons/react/outline";
+import React from "react";
+import { Extension } from "./extension";
+
+export const navigation = {
+ main: [
+ { name: 'Documentation', title: '', href: '/docs' },
+ { name: 'Showcase', href: '/showcase' },
+ { name: 'Changelog', href: '/changelog' },
+ ],
+ social: [
+ {
+ name: 'GitHub',
+ title: 'Check out our GitHub repository',
+ href: Extension.githubLink,
+ icon: (props: any) => (
+
+ )
+ },
+ {
+ name: 'Sponsor us',
+ title: 'Become a sponsor, and get mentioned',
+ href: Extension.sponsorLink,
+ icon: (props: any) => (
+
+ )
+ }
+ ]
+};
\ No newline at end of file
diff --git a/docs/content/changelog/CHANGELOG.md b/docs/content/changelog/CHANGELOG.md
new file mode 100644
index 00000000..f4ddd273
--- /dev/null
+++ b/docs/content/changelog/CHANGELOG.md
@@ -0,0 +1,226 @@
+# Change Log
+
+## [3.0.1] - 2021-08-30
+
+- [#79](https://github.com/estruyf/vscode-front-matter/issues/79): Fix scrollbar not visible on the welcome screen
+
+## [3.0.0] - 2021-08-27
+
+- [#61](https://github.com/estruyf/vscode-front-matter/issues/61): List of recently modified files
+- [#64](https://github.com/estruyf/vscode-front-matter/issues/64): Publish toggle for easier publishing an article
+- [#65](https://github.com/estruyf/vscode-front-matter/issues/65): Aggregate articles in draft
+- [#66](https://github.com/estruyf/vscode-front-matter/issues/66): New dashboard webview on which you can manage all your content
+- [#69](https://github.com/estruyf/vscode-front-matter/issues/69): Welcome screen for getting started
+
+## [2.5.1] - 2020-08-23
+
+- Fix typo in the `package.json` file for the preview command
+
+## [2.5.0] - 2020-08-19
+
+- Moved the center layout button to the other actions section
+- [#60](https://github.com/estruyf/vscode-front-matter/issues/60): Added the ability to open a site preview in VS Code
+
+## [2.4.1] - 2020-08-16
+
+- Better editor highlighting functionality
+
+## [2.4.0] - 2020-08-16
+
+- [#21](https://github.com/estruyf/vscode-front-matter/issues/21): Folding provider for Front Matter implemented
+- [#55](https://github.com/estruyf/vscode-front-matter/issues/55): Highlight Front Matter in Markdown files
+- [#56](https://github.com/estruyf/vscode-front-matter/issues/56): Action to collapse all Front Matter panel sections at once
+- [#57](https://github.com/estruyf/vscode-front-matter/issues/57): New action added to provide better writing settings (only for Markdown files)
+- [#58](https://github.com/estruyf/vscode-front-matter/issues/58): Sections remember their previous state (folded/unfolded)
+- [#59](https://github.com/estruyf/vscode-front-matter/issues/59): Center layout view toggle action added
+
+## [2.3.0] - 2020-08-10
+
+- Refactoring and showing other actions in the base view
+- Show `BaseView` in Front Matter panel when switching to `welcome` tab
+- [#31](https://github.com/estruyf/vscode-front-matter/issues/31): Automatically update the last modification date of the file when performing changes
+- [#53](https://github.com/estruyf/vscode-front-matter/issues/53): Create current Markdown file as template
+
+## [2.2.0] - 2020-08-06
+
+- [#28](https://github.com/estruyf/vscode-front-matter/issues/28): Align the file its name with the article slug
+- [#47](https://github.com/estruyf/vscode-front-matter/issues/47): Fix when table shows only value `0`
+- [#48](https://github.com/estruyf/vscode-front-matter/issues/48): Added new folder registration message + notification helper
+- [#49](https://github.com/estruyf/vscode-front-matter/issues/49): New initialize project command
+- [#50](https://github.com/estruyf/vscode-front-matter/issues/50): Fix in the table rendering of rows
+- [#51](https://github.com/estruyf/vscode-front-matter/issues/51): Panel actions base view enhanced to show project actions and information
+
+## [2.1.0] - 2020-08-04
+
+- [#44](https://github.com/estruyf/vscode-front-matter/issues/45): Added article creation command
+- [#45](https://github.com/estruyf/vscode-front-matter/issues/45): WSL support added
+- [#46](https://github.com/estruyf/vscode-front-matter/issues/46): Make the tag pickers render in full width
+
+## [2.0.1] - 2020-07-27
+
+- [#42](https://github.com/estruyf/vscode-front-matter/issues/42): Small enhancement to the table layout
+- [#43](https://github.com/estruyf/vscode-front-matter/issues/43): Fix for collapsible sections and taxonomy picker
+
+## [2.0.0] - 2020-07-23
+
+- Redesigned sidebar panel
+- Sidebar background styling match the VSCode defined sidebar color
+- Added support for `mdx` files
+- Added support for `enter` press in the combobox
+- [#41](https://github.com/estruyf/vscode-front-matter/issues/41): Word count implementation + extra details
+- [#40](https://github.com/estruyf/vscode-front-matter/issues/40): Added checks for the keyword usage in title, description, slug, and content
+
+## [1.18.0] - 2020-07-20
+
+- Updated README
+
+## [1.17.1] - 2020-06-28
+
+- [#34](https://github.com/estruyf/vscode-front-matter/issues/34): Fix that last modification date does not update the publication date
+- [#38](https://github.com/estruyf/vscode-front-matter/issues/38): Update the last modification date on new page creation from the template
+
+## [1.17.0] - 2020-06-14
+
+- [#36](https://github.com/estruyf/vscode-front-matter/issues/36): Add the option to change the Front Matter its description field
+
+## [1.16.1] - 2020-05-27
+
+- Fix for Node.js v14.16.0
+
+## [1.16.0] - 2020-05-04
+
+- Add all front matter properties as an argument for custom scripts
+
+## [1.15.1] - 2020-05-04
+
+- Add the ability to specify a custom Node path
+
+## [1.15.0] - 2020-05-04
+
+- Added the ability to add your own custom scripts as panel actions.
+
+## [1.14.0] - 2020-03-19
+
+- New links added to the Front Matter panel to reveal the file and folder.
+
+## [1.13.0] - 2020-02-26
+
+- Implemented links to quickly open the extension settings + issue from the FrontMatter view panel
+- Added button to update the modified time in the FrontMatter view panel
+
+## [1.12.1] - 2020-02-13
+
+- Fix Front Matter SVG
+
+## [1.12.0] - 2020-01-26
+
+- [#29](https://github.com/estruyf/vscode-front-matter/issues/29): Open file after creating it from the template
+
+## [1.11.1] - 2020-12-10
+
+- [#26](https://github.com/estruyf/vscode-front-matter/issues/26): Fix for arrow selection in the dropdown.
+
+## [1.11.0] - 2020-12-10
+
+- [#25](https://github.com/estruyf/vscode-front-matter/issues/25): Moved from Material UI Autocomplete to Downshift. This gives more flexibility, and allows to focus the inputs from a VSCode command.
+- Changed the `Front Matter: Insert ` functionality to open in the panel, instead of using the VSCode dialogs.
+
+## [1.10.0] - 2020-12-03
+
+- FrontMatter panel implemented. This panel allows you to control all extension actions, but not only that. It makes adding tags and categories in a easier way to your page.
+
+## [1.9.0] - 2020-11-25
+
+- [#23](https://github.com/estruyf/vscode-front-matter/issues/23): Implemented the option to create and use templates for article creation (front matter will be updates as well).
+
+## [1.8.0] - 2020-11-20
+
+- [#22](https://github.com/estruyf/vscode-front-matter/issues/22): Allow to configure the SEO Title and Description lengths.
+
+## [1.7.2] - 2020-10-30
+
+- [#19](https://github.com/estruyf/vscode-front-matter/issues/19): fix for tag insertion when empty tag is used
+
+## [1.7.1] - 2020-10-21
+
+- Fix for title and description length check
+
+## [1.7.0] - 2020-09-30
+
+- [#18](https://github.com/estruyf/vscode-front-matter/issues/18): Added date and modified date field names settings to be able to change the extension its behavior
+
+## [1.6.0] - 2020-09-23
+
+- Syntax highlighting for Hugo shortcodes has been added
+
+## [1.5.0] - 2020-09-10
+
+- [#17](https://github.com/estruyf/vscode-front-matter/issues/17): Make front matter be indentation `tabSize` aware
+
+## [1.4.0] - 2020-08-24
+
+- Added set `lastmod` date command
+- [#16](https://github.com/estruyf/vscode-front-matter/issues/16): Fixed hardcoded length value
+
+## [1.3.0] - 2020-08-22
+
+- Added SEO description warning when over 140 characters is used
+
+## [1.2.0] - 2020-07-03
+
+- Added SEO title warning when over 60 characters is used
+
+## [1.1.1] - 2020-04-07
+
+- `TOML` delimiter fix
+
+## [1.1.0] - 2020-03-25
+
+- `TOML` support added
+
+## [1.0.0] - 2020-03-25
+
+- First major release
+- Fixed an issue with `null` tag/category values
+
+## [0.0.10] - 2019-09-17
+
+- Updated the logic to remove quotes from front matter property values
+
+## [0.0.9] - 2019-09-17
+
+- Added setting to specify if you want to enable/disable array indents in the front matter of your article
+- Remove quotes on date strings
+
+## [0.0.8] - 2019-09-04
+
+- Added command to generate a clean article slug
+
+## [0.0.7] - 2019-08-28
+
+- Added command to remap tags or categories in all posts: `Front Matter: Remap tag/category in all articles`
+
+## [0.0.6] - 2019-08-28
+
+- Updated `package.json` file to include preview label
+- Added the status bar item to quickly view and update the draft status of an article
+
+## [0.0.5] - 2019-08-27
+
+- Updated title, description and logo
+
+## [0.0.4] - 2019-08-26
+
+- Added set date command
+
+## [0.0.3] - 2019-08-26
+
+- Support added for `*.markdown` files
+
+## [0.0.2] - 2019-08-26
+
+- Updated extension to bundle the project output
+
+## [0.0.1] - 2019-08-26
+
+- Initial beta version
diff --git a/docs/lib/api.ts b/docs/lib/api.ts
new file mode 100644
index 00000000..9f9ce183
--- /dev/null
+++ b/docs/lib/api.ts
@@ -0,0 +1,50 @@
+import fs from 'fs'
+import { join } from 'path'
+import matter from 'gray-matter'
+
+type ContentType = "docs" | "changelog";
+
+const postsDirectory = join(process.cwd(), 'content');
+
+export function getPostSlugs(type: ContentType) {
+ return fs.readdirSync(join(postsDirectory, type)).filter(f => f.endsWith(`.md`))
+}
+
+export function getPostByFilename(type: ContentType, crntFile: string, fields: string[] = []) {
+ const realSlug = crntFile.replace(/\.md$/, '');
+ const fullPath = join(postsDirectory, type, `${realSlug}.md`)
+ const fileContents = fs.readFileSync(fullPath, 'utf8')
+ const { data, content } = matter(fileContents)
+
+ const items: any = {}
+
+ // Ensure only the minimal needed data is exposed
+ fields.forEach((field) => {
+ if (field === 'content') {
+ items[field] = content
+ }
+
+ if (field === 'fileName') {
+ items[field] = realSlug
+ }
+
+ if (data[field]) {
+ items[field] = data[field]
+ }
+
+ if (field === 'slug') {
+ items[field] = data['slug'] || realSlug
+ }
+ })
+
+ return items
+}
+
+export function getAllPosts(type: ContentType, fields: string[] = []) {
+ const fileNames = getPostSlugs(type)
+ const posts = fileNames
+ .map((fileName) => getPostByFilename(type, fileName, fields))
+ // sort posts by date in descending order
+ .sort((post1, post2) => ((post1 as any)?.date > (post2 as any)?.date ? -1 : 1))
+ return posts
+}
\ No newline at end of file
diff --git a/docs/lib/publicUrl.ts b/docs/lib/publicUrl.ts
new file mode 100644
index 00000000..048cc0f2
--- /dev/null
+++ b/docs/lib/publicUrl.ts
@@ -0,0 +1,9 @@
+
+
+export function publicUrl() {
+ if (process.env.NEXT_PUBLIC_VERCEL_ENV === "production") {
+ return `https://frontmatter.codes`;
+ } else {
+ return `https://${process.env.VERCEL_URL}`;
+ }
+}
\ No newline at end of file
diff --git a/docs/locale/en.ts b/docs/locale/en.ts
new file mode 100644
index 00000000..5e44dbe8
--- /dev/null
+++ b/docs/locale/en.ts
@@ -0,0 +1,50 @@
+import { Extension } from "../constants/extension";
+
+
+export const strings = {
+ // CTA
+ cta_title: "Manage your static site with",
+ cta_description: "Create, edit, and preview your pages within Visual Studio Code. Front Matter allows you to keep control of your static site without any external tools.",
+ cta_button_primary: "Get the extension",
+ cta_button_secondary: "Read our docs",
+
+ // Generators
+ generators_title: "Built for any static-site generator you might like",
+
+ // Features
+ features_title: "Features",
+ features_description: "Check out our main features which help you manage your static-site",
+
+ // Feature
+ feature_title_1: "Manage your site within VS Code",
+ feature_description_1: "A Content Management System built to run within Visual Studio Code. No dependencies on any website or API.",
+
+ feature_title_2: "Preview",
+ feature_description_2: "Allow showing your page previews within Visual Studio Code.",
+
+ feature_title_3: "Page dashboard",
+ feature_description_3: "Our page dashboard allows you to search, filter, sort, and group all your static site pages.",
+
+ feature_title_4: "SEO Checks",
+ feature_description_4: "Our search engine optimization checks allow you to write better articles. We show you more information about your title, description, content, keywords, and more.",
+
+ feature_title_5: "Use it the way you want it",
+ feature_description_5: "All of the functionalities are configurable to your needs. You can define how you want to use Front Matter in your editor experience.",
+
+ feature_title_6: "Extensibility",
+ feature_description_6: "Add your actions with our custom scripting capability. For instance, you can use a script and hook it up to the extension if you want to generate preview images. If we do not support it, you can build it and share it with us.",
+
+ // Documentation
+ documentation_title: "Documentation",
+ documentation_description: `Get to know more about how you can use ${Extension.name} with our documentation.`,
+
+ // Showcase
+ showcase_title: "Showcase",
+ showcase_description: "Check out our showcase of static-sites using Front Matter.",
+
+ // Changelog
+ changelog_title: "Changelog",
+ changelog_description: "Check out our changelog for Front Matter.",
+ changelog_page_title: `Latest updates`,
+ changelog_page_description: `An overview of all updates from the ${Extension.name} extension`,
+};
\ No newline at end of file
diff --git a/docs/locale/localeStrings.ts b/docs/locale/localeStrings.ts
new file mode 100644
index 00000000..0d1e631d
--- /dev/null
+++ b/docs/locale/localeStrings.ts
@@ -0,0 +1,5 @@
+import { strings as enMsgs } from './en';
+
+export const LOCALE_STRINGS = {
+ en: { translation: enMsgs }
+}
\ No newline at end of file
diff --git a/docs/locale/localization.ts b/docs/locale/localization.ts
new file mode 100644
index 00000000..988fdcec
--- /dev/null
+++ b/docs/locale/localization.ts
@@ -0,0 +1,20 @@
+import i18n from 'i18next';
+import { initReactI18next } from 'react-i18next';
+import { LOCALE_STRINGS } from './localeStrings';
+import LanguageDetector from 'i18next-browser-languagedetector';
+
+i18n.use(new LanguageDetector({}, {caches:[]}))
+ .use(initReactI18next)
+ .init({
+ fallbackLng: 'en',
+ resources: {...LOCALE_STRINGS},
+ // debug: process.env.NODE_ENV && process.env.NODE_ENV === 'development',
+ detection: {
+ order: ['cookie', 'localStorage'],
+ },
+ interpolation: {
+ escapeValue: false, // not needed for react as it escapes by default
+ }
+ });
+
+export default i18n;
\ No newline at end of file
diff --git a/docs/package-lock.json b/docs/package-lock.json
index d708ebe6..ed5bba52 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -123,6 +123,16 @@
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz",
"integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug=="
},
+ "@headlessui/react": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.4.0.tgz",
+ "integrity": "sha512-C+FmBVF6YGvqcEI5fa2dfVbEaXr2RGR6Kw1E5HXIISIZEfsrH/yuCgsjWw5nlRF9vbCxmQ/EKs64GAdKeb8gCw=="
+ },
+ "@heroicons/react": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.4.tgz",
+ "integrity": "sha512-3kOrTmo8+Z8o6AL0rzN82MOf8J5CuxhRLFhpI8mrn+3OqekA6d5eb1GYO3EYYo1Vn6mYQSMNTzCWbEwUInb0cQ=="
+ },
"@humanwhocodes/config-array": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
@@ -289,12 +299,46 @@
"integrity": "sha512-Myxw//kzromB9yWgS8qYGuGVf91oBUUJpNvy5eM50sqvmKLbKjwLxohJnkWGTeeI9v9IBMtPLxz5Gc60FIfvCA==",
"dev": true
},
+ "@types/debug": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz",
+ "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==",
+ "requires": {
+ "@types/ms": "*"
+ }
+ },
+ "@types/hast": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
+ "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==",
+ "requires": {
+ "@types/unist": "*"
+ }
+ },
"@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
"dev": true
},
+ "@types/mdast": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz",
+ "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
+ "requires": {
+ "@types/unist": "*"
+ }
+ },
+ "@types/mdurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
+ "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA=="
+ },
+ "@types/ms": {
+ "version": "0.7.31",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
+ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
+ },
"@types/node": {
"version": "16.7.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.6.tgz",
@@ -306,6 +350,11 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "@types/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA=="
+ },
"@types/prop-types": {
"version": "15.7.4",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
@@ -329,6 +378,11 @@
"integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
"dev": true
},
+ "@types/unist": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz",
+ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ=="
+ },
"@typescript-eslint/parser": {
"version": "4.29.3",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.3.tgz",
@@ -658,6 +712,11 @@
"integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
"dev": true
},
+ "bail": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz",
+ "integrity": "sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA=="
+ },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -836,6 +895,12 @@
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001252.tgz",
"integrity": "sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw=="
},
+ "ccount": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz",
+ "integrity": "sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA==",
+ "dev": true
+ },
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -846,6 +911,27 @@
"supports-color": "^5.3.0"
}
},
+ "character-entities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz",
+ "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA=="
+ },
+ "character-entities-html4": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.0.0.tgz",
+ "integrity": "sha512-dwT2xh5ZhUAjyP96k57ilMKoTQyASaw9IAMR9U5c1lCu2RUni6O6jxfpUEdO2RcPT6TJFvr8pqsbami4Jk+2oA==",
+ "dev": true
+ },
+ "character-entities-legacy": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz",
+ "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA=="
+ },
+ "character-reference-invalid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz",
+ "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g=="
+ },
"chokidar": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
@@ -930,6 +1016,11 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz",
"integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w=="
},
+ "comma-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg=="
+ },
"commander": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
@@ -1922,6 +2013,11 @@
"safe-buffer": "^5.1.1"
}
},
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2198,6 +2294,129 @@
"minimalistic-assert": "^1.0.1"
}
},
+ "hast-to-hyperscript": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz",
+ "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.3.0",
+ "unist-util-is": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ }
+ },
+ "hast-util-from-parse5": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz",
+ "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/parse5": "^6.0.0",
+ "@types/unist": "^2.0.0",
+ "hastscript": "^7.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^5.0.0",
+ "vfile-location": "^4.0.0",
+ "web-namespaces": "^2.0.0"
+ }
+ },
+ "hast-util-is-element": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.1.tgz",
+ "integrity": "sha512-ag0fiZfRWsPiR1udvnSbaazJLGv8qd8E+/e3rW8rUZhbKG4HNJmFL4QkEceN+22BgE+uozXY30z/s+2dL6Z++g==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "hast-util-parse-selector": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz",
+ "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==",
+ "requires": {
+ "@types/hast": "^2.0.0"
+ }
+ },
+ "hast-util-raw": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.0.tgz",
+ "integrity": "sha512-K2ofsY59XqrtBNUAkvT2vPdyNPUchjj1Z0FxUOwBadS6R5h9O3LaRZqpukQ+YfgQ/IMy9GGMB/Nlpzpu+cuuMA==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/parse5": "^6.0.0",
+ "hast-util-from-parse5": "^7.0.0",
+ "hast-util-to-parse5": "^7.0.0",
+ "html-void-elements": "^2.0.0",
+ "parse5": "^6.0.0",
+ "unist-util-position": "^4.0.0",
+ "unist-util-visit": "^4.0.0",
+ "vfile": "^5.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ }
+ },
+ "hast-util-sanitize": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz",
+ "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0"
+ }
+ },
+ "hast-util-to-html": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.1.tgz",
+ "integrity": "sha512-S1mTqXvWVGIxrWw0xOHHvmevwCBFTRGNvXWsjE32IyEAlMhbMkK+ZuP6CAqkQ6Vb7swrehaHpfXHEI6voGDh0w==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-is-element": "^2.0.0",
+ "hast-util-whitespace": "^2.0.0",
+ "html-void-elements": "^2.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-is": "^5.0.0"
+ }
+ },
+ "hast-util-to-parse5": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz",
+ "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/parse5": "^6.0.0",
+ "hast-to-hyperscript": "^10.0.0",
+ "property-information": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ }
+ },
+ "hast-util-whitespace": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz",
+ "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==",
+ "dev": true
+ },
+ "hastscript": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz",
+ "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^3.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0"
+ }
+ },
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -2219,12 +2438,25 @@
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "html-parse-stringify": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
+ "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
+ "requires": {
+ "void-elements": "3.1.0"
+ }
+ },
"html-tags": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz",
"integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==",
"dev": true
},
+ "html-void-elements": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.0.tgz",
+ "integrity": "sha512-4OYzQQsBt0G9bJ/nM9/DDsjm4+fVdzAaPJJcWk5QwA3GIAPxQEeOR0rsI8HbDHQz5Gta8pVvGnnTNSbZVEVvkQ=="
+ },
"http-errors": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
@@ -2242,6 +2474,32 @@
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
},
+ "i18next": {
+ "version": "20.4.0",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.4.0.tgz",
+ "integrity": "sha512-89iWWJudmaHJwzIdJ/1eu98GtsJnwBhOUWwlAre70itPMuTE/NTPtgVeaS1CGaB8Q3XrYBGpEqlq4jsScDx9kg==",
+ "requires": {
+ "@babel/runtime": "^7.12.0"
+ }
+ },
+ "i18next-browser-languagedetector": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.2.tgz",
+ "integrity": "sha512-YDzIGHhMRvr7M+c8B3EQUKyiMBhfqox4o1qkFvt4QXuu5V2cxf74+NCr+VEkUuU0y+RwcupA238eeolW1Yn80g==",
+ "requires": {
+ "@babel/runtime": "^7.14.6"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
+ "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ },
"iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -2326,6 +2584,11 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
+ "inline-style-parser": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
+ },
"internal-slot": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
@@ -2336,6 +2599,20 @@
"side-channel": "^1.0.4"
}
},
+ "is-alphabetical": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz",
+ "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w=="
+ },
+ "is-alphanumerical": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz",
+ "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==",
+ "requires": {
+ "is-alphabetical": "^2.0.0",
+ "is-decimal": "^2.0.0"
+ }
+ },
"is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -2376,6 +2653,11 @@
"has-tostringtag": "^1.0.0"
}
},
+ "is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
+ },
"is-callable": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
@@ -2398,6 +2680,11 @@
"has-tostringtag": "^1.0.0"
}
},
+ "is-decimal": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz",
+ "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw=="
+ },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -2425,6 +2712,11 @@
"is-extglob": "^2.1.1"
}
},
+ "is-hexadecimal": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz",
+ "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug=="
+ },
"is-nan": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
@@ -2452,6 +2744,11 @@
"has-tostringtag": "^1.0.0"
}
},
+ "is-plain-obj": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz",
+ "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw=="
+ },
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
@@ -2694,6 +2991,12 @@
"integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
"dev": true
},
+ "longest-streak": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz",
+ "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==",
+ "dev": true
+ },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -2729,6 +3032,98 @@
"safe-buffer": "^5.1.2"
}
},
+ "mdast-util-definitions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz",
+ "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==",
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "unist-util-visit": "^3.0.0"
+ },
+ "dependencies": {
+ "unist-util-visit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
+ "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^4.0.0"
+ }
+ }
+ }
+ },
+ "mdast-util-from-markdown": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.0.tgz",
+ "integrity": "sha512-uj2G60sb7z1PNOeElFwCC9b/Se/lFXuLhVKFOAY2EHz/VvgbupTQRNXPoZl7rGpXYL6BNZgcgaybrlSWbo7n/g==",
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "mdast-util-to-string": "^3.0.0",
+ "micromark": "^3.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "parse-entities": "^3.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
+ },
+ "mdast-util-to-hast": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-11.2.0.tgz",
+ "integrity": "sha512-KSYbg4PA9wk5YwoCZCPxbUAjdYunNN5TqTXoZp/9taRDGQS65cL2fFgKc78l0f3deg4p1LP9xdhmMuUrhAUSZA==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "@types/mdurl": "^1.0.0",
+ "mdast-util-definitions": "^5.0.0",
+ "mdurl": "^1.0.0",
+ "unist-builder": "^3.0.0",
+ "unist-util-generated": "^2.0.0",
+ "unist-util-position": "^4.0.0",
+ "unist-util-visit": "^3.0.0"
+ },
+ "dependencies": {
+ "unist-util-visit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
+ "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^4.0.0"
+ }
+ }
+ }
+ },
+ "mdast-util-to-markdown": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.1.tgz",
+ "integrity": "sha512-yj0UexEfdH0Zqw9CztzC5+J6OZKgCY6K0ommn56SBlPKIV3NGqk1Wo/zw1Q0e/kHb50wmQ8O9cwbOl7vmaJjxg==",
+ "dev": true,
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-to-string": "^3.0.0",
+ "parse-entities": "^3.0.0",
+ "unist-util-visit": "^4.0.0",
+ "zwitch": "^2.0.0"
+ }
+ },
+ "mdast-util-to-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz",
+ "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA=="
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+ },
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -2740,6 +3135,217 @@
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true
},
+ "micromark": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz",
+ "integrity": "sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ==",
+ "requires": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "micromark-core-commonmark": "^1.0.1",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-combine-extensions": "^1.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-encode": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-sanitize-uri": "^1.0.0",
+ "micromark-util-subtokenize": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.1",
+ "parse-entities": "^3.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "micromark-core-commonmark": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz",
+ "integrity": "sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA==",
+ "requires": {
+ "micromark-factory-destination": "^1.0.0",
+ "micromark-factory-label": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-factory-title": "^1.0.0",
+ "micromark-factory-whitespace": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-classify-character": "^1.0.0",
+ "micromark-util-html-tag-name": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-subtokenize": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.1",
+ "parse-entities": "^3.0.0"
+ }
+ },
+ "micromark-factory-destination": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz",
+ "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==",
+ "requires": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-factory-label": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz",
+ "integrity": "sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww==",
+ "requires": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-factory-space": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz",
+ "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==",
+ "requires": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-factory-title": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz",
+ "integrity": "sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA==",
+ "requires": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-factory-whitespace": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz",
+ "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==",
+ "requires": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-util-character": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz",
+ "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==",
+ "requires": {
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-util-chunked": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz",
+ "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==",
+ "requires": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "micromark-util-classify-character": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz",
+ "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==",
+ "requires": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-util-combine-extensions": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz",
+ "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==",
+ "requires": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-util-decode-numeric-character-reference": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz",
+ "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==",
+ "requires": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "micromark-util-encode": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz",
+ "integrity": "sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg=="
+ },
+ "micromark-util-html-tag-name": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz",
+ "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g=="
+ },
+ "micromark-util-normalize-identifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz",
+ "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==",
+ "requires": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "micromark-util-resolve-all": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz",
+ "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==",
+ "requires": {
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-util-sanitize-uri": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz",
+ "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==",
+ "requires": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-encode": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "micromark-util-subtokenize": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz",
+ "integrity": "sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ==",
+ "requires": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "micromark-util-symbol": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz",
+ "integrity": "sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ=="
+ },
+ "micromark-util-types": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz",
+ "integrity": "sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA=="
+ },
"micromatch": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
@@ -3268,6 +3874,19 @@
"safe-buffer": "^5.1.1"
}
},
+ "parse-entities": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz",
+ "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==",
+ "requires": {
+ "character-entities": "^2.0.0",
+ "character-entities-legacy": "^2.0.0",
+ "character-reference-invalid": "^2.0.0",
+ "is-alphanumerical": "^2.0.0",
+ "is-decimal": "^2.0.0",
+ "is-hexadecimal": "^2.0.0"
+ }
+ },
"parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
@@ -3278,6 +3897,11 @@
"json-parse-better-errors": "^1.0.1"
}
},
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+ },
"path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
@@ -3505,7 +4129,6 @@
"version": "15.7.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "dev": true,
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -3515,11 +4138,15 @@
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
}
}
},
+ "property-information": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz",
+ "integrity": "sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg=="
+ },
"public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
@@ -3644,11 +4271,50 @@
"scheduler": "^0.20.2"
}
},
+ "react-i18next": {
+ "version": "11.11.4",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.11.4.tgz",
+ "integrity": "sha512-ayWFlu8Sc7GAxW1PzMaPtzq+yiozWMxs0P1WeITNVzXAVRhC0Httkzw/IiODBta6seJRBCLrtUeFUSXhAIxlRg==",
+ "requires": {
+ "@babel/runtime": "^7.14.5",
+ "html-parse-stringify": "^3.0.1"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
+ "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ }
+ }
+ },
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
+ "react-markdown": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-7.0.1.tgz",
+ "integrity": "sha512-pthNPaoiwg0q7hukoE04F2ENwSzijIlWHJ4UMs/96LUe/G/P3FnbP4qHzx3FoNqae+2SqDG8vzniTLnJDeWneg==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/unist": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "prop-types": "^15.0.0",
+ "property-information": "^6.0.0",
+ "react-is": "^17.0.0",
+ "remark-parse": "^10.0.0",
+ "remark-rehype": "^9.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.3.0",
+ "unified": "^10.0.0",
+ "unist-util-visit": "^4.0.0",
+ "vfile": "^5.0.0"
+ }
+ },
"react-refresh": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
@@ -3794,6 +4460,73 @@
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true
},
+ "rehype-raw": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.0.tgz",
+ "integrity": "sha512-12j2UiiYJgZFdjnHDny77NY5BF3eW4Jsl0vtgL1DWdTzcHjPpbhumU+GtPUdivEWwQc8x9OdEuO0oxaGz7Tvyg==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "hast-util-raw": "^7.2.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "remark": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.1.tgz",
+ "integrity": "sha512-7zLG3u8EUjOGuaAS9gUNJPD2j+SqDqAFHv2g6WMpE5CU9rZ6e3IKDM12KHZ3x+YNje+NMAuN55yx8S5msGSx7Q==",
+ "dev": true,
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "remark-parse": "^10.0.0",
+ "remark-stringify": "^10.0.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "remark-html": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-14.0.0.tgz",
+ "integrity": "sha512-ISQjSlOI3Hb99REjDz0cAhPJVJZDednsj4GNj4Ve7DEZdEXhVPOzBvym0Di+1K3p/RmKXqSw0r02JDmtATh6Dw==",
+ "dev": true,
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "hast-util-sanitize": "^4.0.0",
+ "hast-util-to-html": "^8.0.0",
+ "mdast-util-to-hast": "^11.0.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "remark-parse": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz",
+ "integrity": "sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==",
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "remark-rehype": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-9.0.0.tgz",
+ "integrity": "sha512-SFA+mPWu45ynFPKeT3h5eNNVAYoMp3wizr3KSKh1IQ9L6dLSyD25/df6/vv8EW8ji3O3dnZGdbLQl592Tn+ydg==",
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-hast": "^11.0.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "remark-stringify": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.0.tgz",
+ "integrity": "sha512-3LAQqJ/qiUxkWc7fUcVuB7RtIT38rvmxfmJG8z1TiE/D8zi3JGQ2tTcTJu9Tptdpb7gFwU0whRi5q1FbFOb9yA==",
+ "dev": true,
+ "requires": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-markdown": "^1.0.0",
+ "unified": "^10.0.0"
+ }
+ },
"require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -3996,6 +4729,11 @@
"integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
"dev": true
},
+ "space-separated-tokens": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz",
+ "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw=="
+ },
"spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@@ -4133,6 +4871,16 @@
"safe-buffer": "~5.2.0"
}
},
+ "stringify-entities": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.1.tgz",
+ "integrity": "sha512-gmMQxKXPWIO3NXNSPyWNhlYcBNGpPA/487D+9dLPnU4xBnIrnHdr8cv5rGJOS/1BRxEXRb7uKwg7BA36IWV7xg==",
+ "dev": true,
+ "requires": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^2.0.0"
+ }
+ },
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -4153,6 +4901,14 @@
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
+ "style-to-object": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz",
+ "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==",
+ "requires": {
+ "inline-style-parser": "0.1.1"
+ }
+ },
"styled-jsx": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.0.tgz",
@@ -4416,6 +5172,11 @@
"punycode": "^2.1.0"
}
},
+ "trough": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz",
+ "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w=="
+ },
"ts-pnp": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz",
@@ -4484,6 +5245,81 @@
"which-boxed-primitive": "^1.0.2"
}
},
+ "unified": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz",
+ "integrity": "sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "bail": "^2.0.0",
+ "extend": "^3.0.0",
+ "is-buffer": "^2.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^5.0.0"
+ }
+ },
+ "unist-builder": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz",
+ "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==",
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "unist-util-generated": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz",
+ "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw=="
+ },
+ "unist-util-is": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
+ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ=="
+ },
+ "unist-util-position": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz",
+ "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA=="
+ },
+ "unist-util-stringify-position": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz",
+ "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==",
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "unist-util-visit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz",
+ "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^5.0.0"
+ },
+ "dependencies": {
+ "unist-util-visit-parents": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz",
+ "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0"
+ }
+ }
+ }
+ },
+ "unist-util-visit-parents": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
+ "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0"
+ }
+ },
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
@@ -4567,11 +5403,45 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "vfile": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz",
+ "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "vfile-location": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz",
+ "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "vfile": "^5.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz",
+ "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==",
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
+ },
"vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
},
+ "void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk="
+ },
"watchpack": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz",
@@ -4581,6 +5451,11 @@
"graceful-fs": "^4.1.2"
}
},
+ "web-namespaces": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.0.tgz",
+ "integrity": "sha512-dE7ELZRVWh0ceQsRgkjLgsAvwTuv3kcjSY/hLjqL0llleUlQBDjE9JkB9FCBY5F2mnFEwiyJoowl8+NVGHe8dw=="
+ },
"webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
@@ -4663,6 +5538,11 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
+ },
+ "zwitch": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz",
+ "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA=="
}
}
}
diff --git a/docs/package.json b/docs/package.json
index cb6fb251..e4781c0f 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -3,15 +3,23 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "dev": "next dev",
- "build": "next build",
+ "changelog": "node scripts/copy-changelog.js",
+ "dev": "npm run changelog && next dev",
+ "build": "npm run changelog && next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
+ "@headlessui/react": "^1.4.0",
+ "@heroicons/react": "^1.0.4",
+ "i18next": "^20.4.0",
+ "i18next-browser-languagedetector": "^6.1.2",
"next": "11.1.0",
"react": "17.0.2",
- "react-dom": "17.0.2"
+ "react-dom": "17.0.2",
+ "react-i18next": "^11.11.4",
+ "react-markdown": "^7.0.1",
+ "rehype-raw": "^6.1.0"
},
"devDependencies": {
"@types/react": "17.0.19",
@@ -19,6 +27,9 @@
"eslint": "7.32.0",
"eslint-config-next": "11.1.0",
"postcss": "^8.3.6",
+ "postcss-nested": "^5.0.6",
+ "remark": "14.0.1",
+ "remark-html": "14.0.0",
"tailwindcss": "^2.2.8",
"typescript": "4.4.2"
}
diff --git a/docs/pages/_app.tsx b/docs/pages/_app.tsx
index 94b21d65..d87550e0 100644
--- a/docs/pages/_app.tsx
+++ b/docs/pages/_app.tsx
@@ -1,5 +1,6 @@
import '../styles/globals.css';
import type { AppProps } from 'next/app';
+import '../locale/localization';
function MyApp({ Component, pageProps }: AppProps) {
return
diff --git a/docs/pages/_document.tsx b/docs/pages/_document.tsx
new file mode 100644
index 00000000..8db02274
--- /dev/null
+++ b/docs/pages/_document.tsx
@@ -0,0 +1,31 @@
+import Document, { Html, Head, Main, NextScript } from 'next/document'
+
+class MyDocument extends Document {
+
+ static async getInitialProps(ctx: any) {
+ const initialProps = await Document.getInitialProps(ctx)
+ return { ...initialProps }
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+}
+
+export default MyDocument
\ No newline at end of file
diff --git a/docs/pages/changelog/index.tsx b/docs/pages/changelog/index.tsx
new file mode 100644
index 00000000..8b4cb0ed
--- /dev/null
+++ b/docs/pages/changelog/index.tsx
@@ -0,0 +1,51 @@
+import React from 'react';
+import { useTranslation } from 'react-i18next';
+import ReactMarkdown from 'react-markdown';
+import rehypeRaw from 'rehype-raw';
+import { Description, OtherMeta, Title } from '../../components/Meta';
+import { Layout } from '../../components/Page/Layout';
+import { getPostByFilename } from '../../lib/api';
+
+export default function Home({ content }: any) {
+ const { t: strings } = useTranslation();
+
+ return (
+ <>
+
+
+
+
+
+
+
+
{strings(`changelog_page_title`)}
+
+
{strings(`changelog_page_description`)}
+
+
+
+
{
+ const url = props?.href || "";
+ const title = props?.children.length > 0 ? `${props?.children[0] as string}` : "";
+ const elm = {title};
+ return elm;
+ }
+ }}
+ rehypePlugins={[rehypeRaw]}
+ children={content} />
+
+
+
+ >
+ )
+}
+
+export const getStaticProps = async () => {
+ const changes = getPostByFilename('changelog', "CHANGELOG.md", ['content']);
+
+ return {
+ props: { content: changes.content }
+ }
+}
\ No newline at end of file
diff --git a/docs/pages/docs/[slug].tsx b/docs/pages/docs/[slug].tsx
new file mode 100644
index 00000000..6766cad4
--- /dev/null
+++ b/docs/pages/docs/[slug].tsx
@@ -0,0 +1,85 @@
+import React from 'react';
+import ReactMarkdown from 'react-markdown';
+import { getAllPosts, getPostByFilename } from '../../lib/api';
+import { useRouter } from 'next/router';
+import rehypeRaw from 'rehype-raw';
+import { Description, OtherMeta, Title } from '../../components/Meta';
+import { Layout } from '../../components/Page/Layout';
+
+export default function News({ page }: any) {
+
+ const router = useRouter()
+ if (!router.isFallback && !page?.slug) {
+ return Error
+ }
+
+ return (
+ <>
+
+
+
+
+
+ {
+ const url = props?.href || "";
+ const title = props?.children.length > 0 ? `${props?.children[0] as string}` : "";
+ const elm = {title};
+ return elm;
+ }
+ }}
+ rehypePlugins={[rehypeRaw]}
+ children={page.content} />
+
+ >
+ )
+}
+
+export async function getStaticProps({ params }: any) {
+ const blogItems = getAllPosts('docs', ['fileName', 'slug']);
+ const article: any = blogItems.find((b: any) => b.slug === params.slug);
+
+ const blog: any = getPostByFilename('docs', article.fileName, [
+ 'title',
+ 'date',
+ 'content',
+ 'slug',
+ 'fileName',
+ 'category',
+ 'description',
+ 'image'
+ ])
+
+ return {
+ props: {
+ page: {
+ ...blog
+ }
+ }
+ }
+}
+
+export async function getStaticPaths() {
+ const blogItems = getAllPosts('docs', [
+ 'title',
+ 'date',
+ 'slug',
+ 'fileName',
+ 'category',
+ 'description',
+ 'image'
+ ])
+
+ return {
+ paths: blogItems.map((news: any) => {
+ return {
+ params: {
+ slug: news.slug,
+ fileName: news.fileName
+ }
+ }
+ }),
+ fallback: false
+ }
+}
\ No newline at end of file
diff --git a/docs/pages/docs/index.tsx b/docs/pages/docs/index.tsx
new file mode 100644
index 00000000..1f7c3dc9
--- /dev/null
+++ b/docs/pages/docs/index.tsx
@@ -0,0 +1,41 @@
+import React from 'react';
+import { useTranslation } from 'react-i18next';
+import { Description, OtherMeta, Title } from '../../components/Meta';
+import { Layout } from '../../components/Page/Layout';
+import { getAllPosts } from '../../lib/api';
+
+export default function Home({ docs }: any) {
+ const { t: strings } = useTranslation();
+
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ )
+}
+
+export const getStaticProps = async () => {
+ const blogItems = getAllPosts('docs', [
+ 'title',
+ 'date',
+ 'slug',
+ 'fileName',
+ 'category',
+ 'description',
+ 'image'
+ ])
+
+ return {
+ props: { blogItems: blogItems.map(item => ({...item, type: 'blog'})) },
+ }
+}
\ No newline at end of file
diff --git a/docs/pages/index.tsx b/docs/pages/index.tsx
index 1f447246..efc687ad 100644
--- a/docs/pages/index.tsx
+++ b/docs/pages/index.tsx
@@ -1,9 +1,27 @@
import type { NextPage } from 'next';
-import Head from 'next/head';
+import React from 'react';
+import { Description, OtherMeta, Title } from '../components/Meta';
+import { CTA } from '../components/Page/CTA';
+import { Features } from '../components/Page/Features';
+import { Generators } from '../components/Page/Generators';
+import { Layout } from '../components/Page/Layout';
+import { Extension } from '../constants/extension';
const Home: NextPage = () => {
return (
- Manage your static site with Front Matter
+ <>
+
+
+
+
+
+
+
+
+
+
+
+ >
)
}
diff --git a/docs/pages/showcase/index.tsx b/docs/pages/showcase/index.tsx
new file mode 100644
index 00000000..08125fe1
--- /dev/null
+++ b/docs/pages/showcase/index.tsx
@@ -0,0 +1,47 @@
+import React from 'react';
+import { useTranslation } from 'react-i18next';
+import { Description, OtherMeta, Title } from '../../components/Meta';
+import { Layout } from '../../components/Page/Layout';
+import showcases from '../../showcases.json';
+
+export default function Home({ showcases }: any) {
+ const { t: strings } = useTranslation();
+
+ return (
+ <>
+
+
+
+
+
+
+
+
{strings(`showcase_title`)}
+
+
{strings(`showcase_description`)}
+
+
+
+
+
+ >
+ )
+}
+
+export const getStaticProps = async () => {
+ return {
+ props: { showcases }
+ }
+}
\ No newline at end of file
diff --git a/docs/postcss.config.js b/docs/postcss.config.js
index 96bb01e7..4fa4cf1f 100644
--- a/docs/postcss.config.js
+++ b/docs/postcss.config.js
@@ -1,5 +1,6 @@
module.exports = {
plugins: {
+ "postcss-nested": {},
tailwindcss: {},
autoprefixer: {},
},
diff --git a/docs/public/android-chrome-192x192.png b/docs/public/android-chrome-192x192.png
new file mode 100644
index 00000000..8d3f215f
Binary files /dev/null and b/docs/public/android-chrome-192x192.png differ
diff --git a/docs/public/android-chrome-512x512.png b/docs/public/android-chrome-512x512.png
new file mode 100644
index 00000000..f21936d3
Binary files /dev/null and b/docs/public/android-chrome-512x512.png differ
diff --git a/docs/public/apple-touch-icon.png b/docs/public/apple-touch-icon.png
new file mode 100644
index 00000000..32a93fb5
Binary files /dev/null and b/docs/public/apple-touch-icon.png differ
diff --git a/docs/public/assets/frontmatter-min.svg b/docs/public/assets/frontmatter-min.svg
new file mode 100644
index 00000000..a2f82221
--- /dev/null
+++ b/docs/public/assets/frontmatter-min.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/public/assets/frontmatter-preview.png b/docs/public/assets/frontmatter-preview.png
new file mode 100644
index 00000000..dd81fc97
Binary files /dev/null and b/docs/public/assets/frontmatter-preview.png differ
diff --git a/docs/public/assets/logos/11ty.svg b/docs/public/assets/logos/11ty.svg
new file mode 100644
index 00000000..778e1b2b
--- /dev/null
+++ b/docs/public/assets/logos/11ty.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/public/assets/logos/docusaurus.svg b/docs/public/assets/logos/docusaurus.svg
new file mode 100644
index 00000000..f7f324fe
--- /dev/null
+++ b/docs/public/assets/logos/docusaurus.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/public/assets/logos/gatsby.svg b/docs/public/assets/logos/gatsby.svg
new file mode 100644
index 00000000..60024761
--- /dev/null
+++ b/docs/public/assets/logos/gatsby.svg
@@ -0,0 +1,12 @@
+
diff --git a/docs/public/assets/logos/hugo.svg b/docs/public/assets/logos/hugo.svg
new file mode 100644
index 00000000..d8616424
--- /dev/null
+++ b/docs/public/assets/logos/hugo.svg
@@ -0,0 +1,14 @@
+
diff --git a/docs/public/assets/logos/jekyll.svg b/docs/public/assets/logos/jekyll.svg
new file mode 100644
index 00000000..1c6b4ada
--- /dev/null
+++ b/docs/public/assets/logos/jekyll.svg
@@ -0,0 +1,31 @@
+
diff --git a/docs/public/assets/logos/nextjs.svg b/docs/public/assets/logos/nextjs.svg
new file mode 100644
index 00000000..085d54ea
--- /dev/null
+++ b/docs/public/assets/logos/nextjs.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/public/assets/logos/nuxtjs.svg b/docs/public/assets/logos/nuxtjs.svg
new file mode 100644
index 00000000..5e1c399c
--- /dev/null
+++ b/docs/public/assets/logos/nuxtjs.svg
@@ -0,0 +1,8 @@
+
diff --git a/docs/public/assets/site-preview.png b/docs/public/assets/site-preview.png
new file mode 100644
index 00000000..1ad6c146
Binary files /dev/null and b/docs/public/assets/site-preview.png differ
diff --git a/docs/public/browserconfig.xml b/docs/public/browserconfig.xml
new file mode 100644
index 00000000..b3930d0f
--- /dev/null
+++ b/docs/public/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #da532c
+
+
+
diff --git a/docs/public/favicon-16x16.png b/docs/public/favicon-16x16.png
new file mode 100644
index 00000000..71e32041
Binary files /dev/null and b/docs/public/favicon-16x16.png differ
diff --git a/docs/public/favicon-32x32.png b/docs/public/favicon-32x32.png
new file mode 100644
index 00000000..3f89a43e
Binary files /dev/null and b/docs/public/favicon-32x32.png differ
diff --git a/docs/public/favicon.ico b/docs/public/favicon.ico
new file mode 100644
index 00000000..ac80aa5c
Binary files /dev/null and b/docs/public/favicon.ico differ
diff --git a/docs/public/mstile-150x150.png b/docs/public/mstile-150x150.png
new file mode 100644
index 00000000..f040c40c
Binary files /dev/null and b/docs/public/mstile-150x150.png differ
diff --git a/docs/public/showcases/eliostruyf.png b/docs/public/showcases/eliostruyf.png
new file mode 100644
index 00000000..49ce4ddf
Binary files /dev/null and b/docs/public/showcases/eliostruyf.png differ
diff --git a/docs/public/showcases/pimpyourowndevice.png b/docs/public/showcases/pimpyourowndevice.png
new file mode 100644
index 00000000..32666034
Binary files /dev/null and b/docs/public/showcases/pimpyourowndevice.png differ
diff --git a/docs/public/showcases/squarl.png b/docs/public/showcases/squarl.png
new file mode 100644
index 00000000..7e846c9b
Binary files /dev/null and b/docs/public/showcases/squarl.png differ
diff --git a/docs/public/site.webmanifest b/docs/public/site.webmanifest
new file mode 100644
index 00000000..b20abb7c
--- /dev/null
+++ b/docs/public/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/docs/scripts/copy-changelog.js b/docs/scripts/copy-changelog.js
new file mode 100644
index 00000000..427afbf5
--- /dev/null
+++ b/docs/scripts/copy-changelog.js
@@ -0,0 +1,7 @@
+const fs = require('fs');
+const path = require('path');
+
+(() => {
+ const changelogPath = path.resolve(__dirname, '../../CHANGELOG.md');
+ fs.copyFileSync(changelogPath, path.resolve(__dirname, '../content/changelog/CHANGELOG.md'));
+})();
\ No newline at end of file
diff --git a/docs/showcases.json b/docs/showcases.json
new file mode 100644
index 00000000..f705c5d4
--- /dev/null
+++ b/docs/showcases.json
@@ -0,0 +1,23 @@
+[
+ {
+ "title": "Elio Struyf",
+ "link": "https://www.eliostruyf.com",
+ "description": "Personal website/blog from Elio Struyf created with Hugo and Tailwind. Managed by Front Matter.",
+ "image": "eliostruyf.png",
+ "generator": "Hugo"
+ },
+ {
+ "title": "PimpYourOwnDevice",
+ "link": "https://pimpyourowndevice.com",
+ "description": "Pimp Your Own Device is created with Hugo and Bootstrap. Managed by Front Matter.",
+ "image": "pimpyourowndevice.png",
+ "generator": "Hugo"
+ },
+ {
+ "title": "Squarl",
+ "link": "https://squarl.com",
+ "description": "Squarl is created with Next.js and Tailwind. Managed by Front Matter.",
+ "image": "squarl.png",
+ "generator": "Next.js"
+ }
+]
\ No newline at end of file
diff --git a/docs/styles/globals.css b/docs/styles/globals.css
index bd6213e1..fad82bdb 100644
--- a/docs/styles/globals.css
+++ b/docs/styles/globals.css
@@ -1,3 +1,29 @@
@tailwind base;
@tailwind components;
-@tailwind utilities;
\ No newline at end of file
+@tailwind utilities;
+
+html, body {height: 100%;}
+
+.changelog {
+ @apply py-8 space-y-4;
+
+ h1 {
+ @apply hidden;
+ }
+
+ h2 {
+ @apply text-3xl text-whisper-900;
+ }
+
+ ul {
+ @apply list-disc pl-4 pb-8;
+ }
+
+ a, a:visited {
+ @apply text-teal-500;
+ }
+
+ a:hover {
+ @apply text-teal-800;
+ }
+}
\ No newline at end of file
diff --git a/src/constants/Links.ts b/src/constants/Links.ts
index 23123acc..45975296 100644
--- a/src/constants/Links.ts
+++ b/src/constants/Links.ts
@@ -1,4 +1,4 @@
-export const GITHUB_LINK = "https://github.com/sponsors/estruyf";
+export const GITHUB_LINK = "https://github.com/estruyf/vscode-front-matter";
export const ISSUE_LINK = "https://github.com/estruyf/vscode-front-matter/issues";
-export const SPONSOR_LINK = "https://github.com/estruyf/vscode-front-matter";
+export const SPONSOR_LINK = "https://github.com/sponsors/estruyf";
export const REVIEW_LINK = "https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter&ssr=false#review-details";
\ No newline at end of file