Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ packages/docusaurus-plugin-sitemap/lib/
packages/docusaurus-plugin-ideal-image/lib/
packages/docusaurus-plugin-ideal-image/copyUntypedFiles.js
packages/docusaurus-theme-classic/lib/
packages/docusaurus-theme-bootstrap/lib/
packages/docusaurus-migrate/lib/

packages/docusaurus-1.x/.eslintrc.js
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ packages/docusaurus-plugin-debug/lib/
packages/docusaurus-plugin-sitemap/lib/
packages/docusaurus-plugin-ideal-image/lib/
packages/docusaurus-theme-classic/lib/
packages/docusaurus-theme-bootstrap/lib/
packages/docusaurus-migrate/lib/

website/netlifyDeployPreview
Expand Down
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,20 @@

> **We are working hard on Docusaurus v2. If you are new to Docusaurus, try using the new version instead of v1. See the [Docusaurus v2 website](https://v2.docusaurus.io/) for more details.**
>
> You can see the clean live demo with classic theme by clicking this badge [![Runme](https://runme.io/static/button.svg)](https://runme.io/run?app_id=0dd80306-47bb-4e80-95dc-dc95eb05d3fd)
> You can see the clean live demo with classic theme by clicking this badge [![Runme](https://runme.io/static/button.svg)](https://runme.io/run?app_id=0dd80306-47bb-4e80-95dc-dc95eb05d3fd)

## Introduction

Docusaurus is a project for building, deploying, and maintaining open source project websites easily.

- **Simple to Start**
- **Simple to Start**

>Docusaurus is built in a way so that it can [get running](https://docusaurus.io/docs/en/installation/) in as little time as possible. We've built Docusaurus to handle the website build process so you can focus on your project.
- **Localizable**
>Docusaurus ships with [localization support](https://docusaurus.io/docs/en/translation/) via CrowdIn. Empower and grow your international community by translating your documentation.
- **Customizable**
>While Docusaurus ships with the key pages and sections you need to get started, including a home page, a docs section, a [blog](https://docusaurus.io/docs/en/adding-blog/), and additional support pages, it is also [customizable](https://docusaurus.io/docs/en/custom-pages/) as well to ensure you have a site that is [uniquely yours](https://docusaurus.io/docs/en/api-pages/).
> Docusaurus is built in a way so that it can [get running](https://docusaurus.io/docs/en/installation/) in as little time as possible. We've built Docusaurus to handle the website build process so you can focus on your project.

- **Localizable**
> Docusaurus ships with [localization support](https://docusaurus.io/docs/en/translation/) via CrowdIn. Empower and grow your international community by translating your documentation.
- **Customizable**
> While Docusaurus ships with the key pages and sections you need to get started, including a home page, a docs section, a [blog](https://docusaurus.io/docs/en/adding-blog/), and additional support pages, it is also [customizable](https://docusaurus.io/docs/en/custom-pages/) as well to ensure you have a site that is [uniquely yours](https://docusaurus.io/docs/en/api-pages/).

## Installation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ function Feature({imageUrl, title, description}) {
function Home() {
const context = useDocusaurusContext();
const {siteConfig = {}} = context;

return (
<Layout
title={`Hello from ${siteConfig.title}`}
Expand Down
10 changes: 10 additions & 0 deletions packages/docusaurus-theme-bootstrap/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* 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.
*/

module.exports = {
presets: [['@babel/preset-typescript', {isTSX: true, allExtensions: true}]],
};
14 changes: 14 additions & 0 deletions packages/docusaurus-theme-bootstrap/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,33 @@
"version": "2.0.0-alpha.64",
"description": "Bootstrap theme for docusaurus",
"main": "src/index.js",
"types": "src/types.d.ts",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"dependencies": {
"@docusaurus/core": "2.0.0-alpha.64",
"@docusaurus/types": "2.0.0-alpha.64",
"@docusaurus/plugin-content-blog": "2.0.0-alpha.64",
"@docusaurus/plugin-content-docs": "2.0.0-alpha.64",
"@docusaurus/plugin-content-pages": "2.0.0-alpha.64",
"@mdx-js/react": "^1.5.8",
"bootstrap": "^4.4.1",
"classnames": "^2.2.6",
"clsx": "^1.1.1",
"prism-react-renderer": "^1.1.0",
"reactstrap": "^8.4.1"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "2.0.0-alpha.64"
},
"scripts": {
"build": "tsc --noEmit && yarn babel && yarn prettier",
"watch": "yarn babel --watch",
"babel": "babel src -d lib --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files",
"prettier": "prettier --config ../../.prettierrc --write \"**/*.{js,ts}\""
},
"peerDependencies": {
"react": "^16.8.4",
"react-dom": "^16.8.4"
Expand Down
3 changes: 3 additions & 0 deletions packages/docusaurus-theme-bootstrap/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ module.exports = function () {
return {
name: 'docusaurus-theme-bootstrap',
getThemePath() {
return path.resolve(__dirname, '..', 'lib', 'theme');
},
getTypeScriptThemePath() {
return path.resolve(__dirname, './theme');
},
getClientModules() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import BlogPostCard from '@theme/BlogPostItem';
import BlogListPaginator from '@theme/BlogListPaginator';
import Layout from '@theme/Layout';
import type {Props} from '@theme/BlogListPage';

function BlogListPage(props) {
function BlogListPage(props: Props): JSX.Element {
const {items, metadata} = props;
const {
siteConfig: {title: siteTitle},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@

import React from 'react';
import Link from '@docusaurus/Link';
import type {Props} from '@theme/BlogListPaginator';

function BlogListPaginator(props) {
function BlogListPaginator(props: Props): JSX.Element {
const {previousPage, nextPage} = props.metadata;

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import React from 'react';
import {MDXProvider} from '@mdx-js/react';
import MDXComponents from '@theme/MDXComponents';
import Link from '@docusaurus/Link';
import type {Props} from '@theme/BlogPostItem';

const MONTHS = [
'January',
Expand All @@ -29,7 +30,7 @@ const getReadingTime = (readingTime) => {
return Math.ceil(readingTime);
};

function BlogPostItem(props) {
function BlogPostItem(props: Props): JSX.Element {
const {
children,
frontMatter,
Expand Down Expand Up @@ -61,7 +62,7 @@ function BlogPostItem(props) {
<div className="col">
{author && (
<h5>
<a href={authorURL} alt={author}>
<a href={authorURL} rel={author}>
{author}
</a>
</h5>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ import React from 'react';
import Layout from '@theme/Layout';
import BlogPostItem from '@theme/BlogPostItem';
import BlogPostPaginator from '@theme/BlogPostPaginator';
import type {Props} from '@theme/BlogPostPage';

function BlogPostPage(props) {
function BlogPostPage(props: Props): JSX.Element {
const {content: BlogPostContents} = props;
const {title, description, frontMatter, metadata} = BlogPostContents;
const {nextItem, prevItem} = metadata;
const {frontMatter, metadata} = BlogPostContents;
const {title, description, nextItem, prevItem} = metadata;

return (
<Layout title={title} description={description}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@

import React from 'react';
import Link from '@docusaurus/Link';
import type {Props} from '@theme/BlogPostPaginator';

function BlogPostPaginator(props) {
function BlogPostPaginator(props: Props): JSX.Element {
const {nextItem, prevItem} = props;

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
import React from 'react';
import Layout from '@theme/Layout';
import Link from '@docusaurus/Link';
import type {Props} from '@theme/BlogTagsListPage';

function BlogTagsListPage(props) {
function BlogTagsListPage(props: Props): JSX.Element {
const {tags} = props;
const renderAllTags = () => (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ import React from 'react';
import BlogPostItem from '@theme/BlogPostItem';
import Layout from '@theme/Layout';
import Link from '@docusaurus/Link';
import type {Props} from '@theme/BlogTagsPostsPage';

function pluralize(count, word) {
return count > 1 ? `${word}s` : word;
}

function BlogTagsPostPage(props) {
function BlogTagsPostPage(props: Props): JSX.Element {
const {metadata, items} = props;
const {allTagsPath, name, count} = metadata;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import React from 'react';
import Highlight, {defaultProps} from 'prism-react-renderer';
import theme from 'prism-react-renderer/themes/nightOwl';

export default ({children, className}) => {
export default ({children, className}): JSX.Element => {
const language = className && className.replace(/language-/, '');

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@ import useBaseUrl from '@docusaurus/useBaseUrl';

import Navbar from '@theme/Navbar';
import Footer from '@theme/Footer';
import type {Props} from '@theme/Layout';

function Layout(props) {
function Layout(props: Props): JSX.Element {
const {siteConfig = {}} = useDocusaurusContext();
const {
favicon,
title: siteTitle,
themeConfig: {image: defaultImage},
themeConfig: {image: defaultImage, metadatas},
url: siteUrl,
titleDelimiter,
} = siteConfig;
Expand All @@ -32,7 +33,6 @@ function Layout(props) {
image,
keywords,
permalink,
version,
} = props;
const metaTitle = title
? `${title} ${titleDelimiter} ${siteTitle}`
Expand All @@ -57,7 +57,6 @@ function Layout(props) {
{description && (
<meta property="og:description" content={description} />
)}
{version && <meta name="docsearch:version" content={version} />}
{keywords && keywords.length && (
<meta name="keywords" content={keywords.join(',')} />
)}
Expand All @@ -69,6 +68,18 @@ function Layout(props) {
{permalink && <meta property="og:url" content={siteUrl + permalink} />}
<meta name="twitter:card" content="summary_large_image" />
</Head>
<Head
// it's important to have an additional <Head> element here,
// as it allows react-helmet to override values set in previous <Head>
// ie we can override default metadatas such as "twitter:card"
// In same Head, the same meta would appear twice instead of overriding
// See react-helmet doc
>
{metadatas?.length > 0 &&
metadatas.map((metadata, i) => (
<meta key={`metadata_${i}`} {...metadata} />
))}
</Head>
<Navbar />
<div className="container-fluid px-0 d-inline-flex flex-row">
{children}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ import Head from '@docusaurus/Head';
import DocPaginator from '@theme/DocPaginator';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl';
import {Props} from '@theme/DocItem';

function DocItem(props) {
function DocItem(props: Props): JSX.Element {
const {siteConfig = {}} = useDocusaurusContext();
const {url: siteUrl, title: siteTitle, titleDelimiter} = siteConfig;
const {url: siteUrl, title: siteTitle, titleDelimiter = ' | '} = siteConfig;
const {content: DocContent} = props;
const {metadata} = DocContent;
const {description, title, permalink} = metadata;
Expand All @@ -25,7 +26,8 @@ function DocItem(props) {
const metaTitle = title
? `${title} ${titleDelimiter} ${siteTitle}`
: siteTitle;
let metaImageUrl = siteUrl + useBaseUrl(metaImage);
let metaImageUrl: string | undefined = siteUrl + useBaseUrl(metaImage);

if (!isInternalUrl(metaImage)) {
metaImageUrl = metaImage;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,49 @@
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';
import React, {ReactNode} from 'react';
import renderRoutes from '@docusaurus/renderRoutes';
import NotFound from '@theme/NotFound';
import DocSidebar from '@theme/DocSidebar';
import MDXComponents from '@theme/MDXComponents';
import Layout from '@theme/Layout';
import {MDXProvider} from '@mdx-js/react';
import {matchPath} from '@docusaurus/router';
import type {Props} from '@theme/DocPage';
import type {DocumentRoute} from '@theme/DocItem';
import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';

function DocPageContent({currentDocRoute, versionMetadata, children}) {
type DocPageContentProps = {
readonly currentDocRoute: DocumentRoute;
readonly versionMetadata: PropVersionMetadata;
readonly children: ReactNode;
};

function DocPageContent({
currentDocRoute,
versionMetadata,
children,
}: DocPageContentProps): JSX.Element {
const {permalinkToSidebar, docsSidebars} = versionMetadata;
const sidebarName = permalinkToSidebar[currentDocRoute.path];
const sidebar = docsSidebars[sidebarName];
return (
<Layout title="Doc page" description="My Doc page">
<div className="d-flex vh-100 overflow-hidden">
<div className="d-flex vh-100">
{sidebar && (
<div className="vh-100" role="complementary">
<DocSidebar
key={sidebarName}
path={currentDocRoute.path}
sidebar={sidebar}
/>
<div role="complementary">
<DocSidebar key={sidebarName} sidebar={sidebar} />
</div>
)}
<main className="vh-100 w-100 d-flex flex-column align-items-center overflow-auto p-5">
<main className="w-100 align-items-center overflow-auto p-5">
<MDXProvider components={MDXComponents}>{children}</MDXProvider>
</main>
</div>
</Layout>
);
}

function DocPage(props) {
function DocPage(props: Props): JSX.Element {
const {
route: {routes: docRoutes},
versionMetadata,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@

import React from 'react';
import Link from '@docusaurus/Link';
import {Props} from '@theme/DocPaginator';

function DocPaginator(props) {
function DocPaginator(props: Props): JSX.Element {
const {previous, next} = props.metadata;

return (
Expand Down
Loading