Browse Source
* feat:Integrate docusaraus for docs * Update docs for Excalidraw Co-authored-by: David Luzar <luzar.david@gmail.com> * remove blogs * remove blog authors * get started docs * typo * add static assets * change port number * Add script to build docs only if docs updated * dummy * update script to be compatible with ignoreBuild in vercel * remove script and dummy log Co-authored-by: David Luzar <luzar.david@gmail.com>aakansha-refct
28 changed files with 8110 additions and 1 deletions
@ -0,0 +1,20 @@ |
|||||||
|
# Dependencies |
||||||
|
/node_modules |
||||||
|
|
||||||
|
# Production |
||||||
|
/build |
||||||
|
|
||||||
|
# Generated files |
||||||
|
.docusaurus |
||||||
|
.cache-loader |
||||||
|
|
||||||
|
# Misc |
||||||
|
.DS_Store |
||||||
|
.env.local |
||||||
|
.env.development.local |
||||||
|
.env.test.local |
||||||
|
.env.production.local |
||||||
|
|
||||||
|
npm-debug.log* |
||||||
|
yarn-debug.log* |
||||||
|
yarn-error.log* |
||||||
@ -0,0 +1,41 @@ |
|||||||
|
# Website |
||||||
|
|
||||||
|
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. |
||||||
|
|
||||||
|
### Installation |
||||||
|
|
||||||
|
``` |
||||||
|
$ yarn |
||||||
|
``` |
||||||
|
|
||||||
|
### Local Development |
||||||
|
|
||||||
|
``` |
||||||
|
$ yarn start |
||||||
|
``` |
||||||
|
|
||||||
|
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. |
||||||
|
|
||||||
|
### Build |
||||||
|
|
||||||
|
``` |
||||||
|
$ yarn build |
||||||
|
``` |
||||||
|
|
||||||
|
This command generates static content into the `build` directory and can be served using any static contents hosting service. |
||||||
|
|
||||||
|
### Deployment |
||||||
|
|
||||||
|
Using SSH: |
||||||
|
|
||||||
|
``` |
||||||
|
$ USE_SSH=true yarn deploy |
||||||
|
``` |
||||||
|
|
||||||
|
Not using SSH: |
||||||
|
|
||||||
|
``` |
||||||
|
$ GIT_USER=<Your GitHub username> yarn deploy |
||||||
|
``` |
||||||
|
|
||||||
|
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
module.exports = { |
||||||
|
presets: [require.resolve("@docusaurus/core/lib/babel/preset")], |
||||||
|
}; |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
--- |
||||||
|
sidebar_position: 1 |
||||||
|
title: Overview |
||||||
|
--- |
||||||
|
|
||||||
|
In development. For now, refer to [excalidraw Readme](https://github.com/excalidraw/excalidraw/blob/master/README.md). |
||||||
@ -0,0 +1,8 @@ |
|||||||
|
--- |
||||||
|
sidebar_position: 1 |
||||||
|
title: Introduction |
||||||
|
--- |
||||||
|
|
||||||
|
Want to integrate Excalidraw into your app? Head over to the [package docs](/docs/package/overview). |
||||||
|
|
||||||
|
If you're looking into the Excalidraw codebase itself, start [here](/docs/codebase/overview). |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
--- |
||||||
|
sidebar_position: 1 |
||||||
|
title: Overview |
||||||
|
--- |
||||||
|
|
||||||
|
In development. For now, refer to [excalidraw package readme](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md). |
||||||
@ -0,0 +1,46 @@ |
|||||||
|
{ |
||||||
|
"name": "docs", |
||||||
|
"version": "0.0.0", |
||||||
|
"private": true, |
||||||
|
"scripts": { |
||||||
|
"docusaurus": "docusaurus", |
||||||
|
"start": "docusaurus start --port 3003", |
||||||
|
"build": "docusaurus build", |
||||||
|
"swizzle": "docusaurus swizzle", |
||||||
|
"deploy": "docusaurus deploy", |
||||||
|
"clear": "docusaurus clear", |
||||||
|
"serve": "docusaurus serve", |
||||||
|
"write-translations": "docusaurus write-translations", |
||||||
|
"write-heading-ids": "docusaurus write-heading-ids", |
||||||
|
"typecheck": "tsc" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"@docusaurus/core": "2.0.0-rc.1", |
||||||
|
"@docusaurus/preset-classic": "2.0.0-rc.1", |
||||||
|
"@mdx-js/react": "^1.6.22", |
||||||
|
"clsx": "^1.2.1", |
||||||
|
"prism-react-renderer": "^1.3.5", |
||||||
|
"react": "^17.0.2", |
||||||
|
"react-dom": "^17.0.2" |
||||||
|
}, |
||||||
|
"devDependencies": { |
||||||
|
"@docusaurus/module-type-aliases": "2.0.0-rc.1", |
||||||
|
"@tsconfig/docusaurus": "^1.0.5", |
||||||
|
"typescript": "^4.7.4" |
||||||
|
}, |
||||||
|
"browserslist": { |
||||||
|
"production": [ |
||||||
|
">0.5%", |
||||||
|
"not dead", |
||||||
|
"not op_mini all" |
||||||
|
], |
||||||
|
"development": [ |
||||||
|
"last 1 chrome version", |
||||||
|
"last 1 firefox version", |
||||||
|
"last 1 safari version" |
||||||
|
] |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=16.14" |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
/** |
||||||
|
* Creating a sidebar enables you to: |
||||||
|
- create an ordered group of docs |
||||||
|
- render a sidebar for each doc of that group |
||||||
|
- provide next/previous navigation |
||||||
|
|
||||||
|
The sidebars can be generated from the filesystem, or explicitly defined here. |
||||||
|
|
||||||
|
Create as many sidebars as you want. |
||||||
|
*/ |
||||||
|
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ |
||||||
|
const sidebars = { |
||||||
|
// By default, Docusaurus generates a sidebar from the docs folder structure
|
||||||
|
tutorialSidebar: [{ type: "autogenerated", dirName: "." }], |
||||||
|
|
||||||
|
// But you can create a sidebar manually
|
||||||
|
/* |
||||||
|
tutorialSidebar: [ |
||||||
|
{ |
||||||
|
type: 'category', |
||||||
|
label: 'Tutorial', |
||||||
|
items: ['hello'], |
||||||
|
}, |
||||||
|
], |
||||||
|
*/ |
||||||
|
}; |
||||||
|
|
||||||
|
module.exports = sidebars; |
||||||
@ -0,0 +1,62 @@ |
|||||||
|
import React from "react"; |
||||||
|
import clsx from "clsx"; |
||||||
|
import styles from "./styles.module.css"; |
||||||
|
|
||||||
|
const FeatureList = [ |
||||||
|
{ |
||||||
|
title: "Learn how Excalidraw works", |
||||||
|
Svg: require("@site/static/img/undraw_innovative.svg").default, |
||||||
|
description: ( |
||||||
|
<>Want to contribute to Excalidraw but got lost in the codebase?</> |
||||||
|
), |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: "Integrate Excalidraw", |
||||||
|
Svg: require("@site/static/img/undraw_blank_canvas.svg").default, |
||||||
|
description: ( |
||||||
|
<> |
||||||
|
Want to build your own app powered by Excalidraw by don't know where to |
||||||
|
start? |
||||||
|
</> |
||||||
|
), |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: "Help us improve", |
||||||
|
Svg: require("@site/static/img/undraw_add_files.svg").default, |
||||||
|
description: ( |
||||||
|
<> |
||||||
|
Are the docs missing something? Anything you had trouble understanding |
||||||
|
or needs an explanation? Come contribute to the docs to make them even |
||||||
|
better! |
||||||
|
</> |
||||||
|
), |
||||||
|
}, |
||||||
|
]; |
||||||
|
|
||||||
|
function Feature({ Svg, title, description }) { |
||||||
|
return ( |
||||||
|
<div className={clsx("col col--4")}> |
||||||
|
<div className="text--center"> |
||||||
|
<Svg className={styles.featureSvg} role="img" /> |
||||||
|
</div> |
||||||
|
<div className="text--center padding-horiz--md"> |
||||||
|
<h3>{title}</h3> |
||||||
|
<p>{description}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
export default function HomepageFeatures() { |
||||||
|
return ( |
||||||
|
<section className={styles.features}> |
||||||
|
<div className="container"> |
||||||
|
<div className="row"> |
||||||
|
{FeatureList.map((props, idx) => ( |
||||||
|
<Feature key={idx} {...props} /> |
||||||
|
))} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</section> |
||||||
|
); |
||||||
|
} |
||||||
@ -0,0 +1,70 @@ |
|||||||
|
import React from "react"; |
||||||
|
import clsx from "clsx"; |
||||||
|
import styles from "./styles.module.css"; |
||||||
|
|
||||||
|
type FeatureItem = { |
||||||
|
title: string; |
||||||
|
Svg: React.ComponentType<React.ComponentProps<"svg">>; |
||||||
|
description: JSX.Element; |
||||||
|
}; |
||||||
|
|
||||||
|
const FeatureList: FeatureItem[] = [ |
||||||
|
{ |
||||||
|
title: "Easy to Use", |
||||||
|
Svg: require("@site/static/img/undraw_docusaurus_mountain.svg").default, |
||||||
|
description: ( |
||||||
|
<> |
||||||
|
Docusaurus was designed from the ground up to be easily installed and |
||||||
|
used to get your website up and running quickly. |
||||||
|
</> |
||||||
|
), |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: "Focus on What Matters", |
||||||
|
Svg: require("@site/static/img/undraw_docusaurus_tree.svg").default, |
||||||
|
description: ( |
||||||
|
<> |
||||||
|
Docusaurus lets you focus on your docs, and we'll do the chores. Go |
||||||
|
ahead and move your docs into the <code>docs</code> directory. |
||||||
|
</> |
||||||
|
), |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: "Powered by React", |
||||||
|
Svg: require("@site/static/img/undraw_docusaurus_react.svg").default, |
||||||
|
description: ( |
||||||
|
<> |
||||||
|
Extend or customize your website layout by reusing React. Docusaurus can |
||||||
|
be extended while reusing the same header and footer. |
||||||
|
</> |
||||||
|
), |
||||||
|
}, |
||||||
|
]; |
||||||
|
|
||||||
|
function Feature({ title, Svg, description }: FeatureItem) { |
||||||
|
return ( |
||||||
|
<div className={clsx("col col--4")}> |
||||||
|
<div className="text--center"> |
||||||
|
<Svg className={styles.featureSvg} role="img" /> |
||||||
|
</div> |
||||||
|
<div className="text--center padding-horiz--md"> |
||||||
|
<h3>{title}</h3> |
||||||
|
<p>{description}</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
export default function HomepageFeatures(): JSX.Element { |
||||||
|
return ( |
||||||
|
<section className={styles.features}> |
||||||
|
<div className="container"> |
||||||
|
<div className="row"> |
||||||
|
{FeatureList.map((props, idx) => ( |
||||||
|
<Feature key={idx} {...props} /> |
||||||
|
))} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</section> |
||||||
|
); |
||||||
|
} |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
.features { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
padding: 2rem 0; |
||||||
|
width: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
.featureSvg { |
||||||
|
height: 200px; |
||||||
|
width: 200px; |
||||||
|
} |
||||||
@ -0,0 +1,43 @@ |
|||||||
|
/** |
||||||
|
* Any CSS included here will be global. The classic template |
||||||
|
* bundles Infima by default. Infima is a CSS framework designed to |
||||||
|
* work well for content-centric websites. |
||||||
|
*/ |
||||||
|
|
||||||
|
/* You can override the default Infima variables here. */ |
||||||
|
:root { |
||||||
|
--ifm-color-primary: #6965db; |
||||||
|
--ifm-color-primary-dark: #5b57d1; |
||||||
|
--ifm-color-primary-darker: #5b57d1; |
||||||
|
--ifm-color-primary-darkest: #4a47b1; |
||||||
|
--ifm-color-primary-light: #5b57d1; |
||||||
|
--ifm-color-primary-lighter: #5b57d1; |
||||||
|
--ifm-color-primary-lightest: #5b57d1; |
||||||
|
--ifm-code-font-size: 95%; |
||||||
|
} |
||||||
|
|
||||||
|
/* For readability concerns, you should choose a lighter palette in dark mode. */ |
||||||
|
[data-theme="dark"] { |
||||||
|
--ifm-color-primary: #5650f0; |
||||||
|
--ifm-color-primary-dark: #4b46d8; |
||||||
|
--ifm-color-primary-darker: #4b46d8; |
||||||
|
--ifm-color-primary-darkest: #3e39be; |
||||||
|
--ifm-color-primary-light: #3f3d64; |
||||||
|
--ifm-color-primary-lighter: #3f3d64; |
||||||
|
--ifm-color-primary-lightest: #3f3d64; |
||||||
|
} |
||||||
|
|
||||||
|
.docusaurus-highlight-code-line { |
||||||
|
background-color: rgba(0, 0, 0, 0.1); |
||||||
|
display: block; |
||||||
|
margin: 0 calc(-1 * var(--ifm-pre-padding)); |
||||||
|
padding: 0 var(--ifm-pre-padding); |
||||||
|
} |
||||||
|
|
||||||
|
[data-theme="dark"] .docusaurus-highlight-code-line { |
||||||
|
background-color: rgba(0, 0, 0, 0.3); |
||||||
|
} |
||||||
|
|
||||||
|
[data-theme="dark"] .navbar__logo { |
||||||
|
filter: invert(93%) hue-rotate(180deg); |
||||||
|
} |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
import React from "react"; |
||||||
|
import clsx from "clsx"; |
||||||
|
import Layout from "@theme/Layout"; |
||||||
|
import Link from "@docusaurus/Link"; |
||||||
|
import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; |
||||||
|
import styles from "./index.module.css"; |
||||||
|
import HomepageFeatures from "@site/src/components/Homepage"; |
||||||
|
|
||||||
|
function HomepageHeader() { |
||||||
|
const { siteConfig } = useDocusaurusContext(); |
||||||
|
return ( |
||||||
|
<header className={clsx("hero hero--primary", styles.heroBanner)}> |
||||||
|
<div className="container"> |
||||||
|
<h1 className="hero__title">{siteConfig.title}</h1> |
||||||
|
<p className="hero__subtitle">{siteConfig.tagline}</p> |
||||||
|
<div className={styles.buttons}> |
||||||
|
<Link |
||||||
|
className="button button--secondary button--lg" |
||||||
|
to="/docs/get-started" |
||||||
|
> |
||||||
|
Get started |
||||||
|
</Link> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</header> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
export default function Home() { |
||||||
|
const { siteConfig } = useDocusaurusContext(); |
||||||
|
return ( |
||||||
|
<Layout |
||||||
|
title={`Hello from ${siteConfig.title}`} |
||||||
|
description="Description will go into a meta tag in <head />" |
||||||
|
> |
||||||
|
<HomepageHeader /> |
||||||
|
<main> |
||||||
|
<HomepageFeatures /> |
||||||
|
</main> |
||||||
|
</Layout> |
||||||
|
); |
||||||
|
} |
||||||
@ -0,0 +1,27 @@ |
|||||||
|
/** |
||||||
|
* CSS files with the .module.css suffix will be treated as CSS modules |
||||||
|
* and scoped locally. |
||||||
|
*/ |
||||||
|
|
||||||
|
.heroBanner { |
||||||
|
padding: 4rem 0; |
||||||
|
text-align: center; |
||||||
|
position: relative; |
||||||
|
overflow: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
[data-theme="dark"] .heroBanner { |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
@media screen and (max-width: 996px) { |
||||||
|
.heroBanner { |
||||||
|
padding: 2rem; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.buttons { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
} |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
import React from "react"; |
||||||
|
import clsx from "clsx"; |
||||||
|
import Layout from "@theme/Layout"; |
||||||
|
import Link from "@docusaurus/Link"; |
||||||
|
import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; |
||||||
|
import styles from "./index.module.css"; |
||||||
|
import HomepageFeatures from "@site/src/components/Homepage"; |
||||||
|
|
||||||
|
function HomepageHeader() { |
||||||
|
const { siteConfig } = useDocusaurusContext(); |
||||||
|
return ( |
||||||
|
<header className={clsx("hero hero--primary", styles.heroBanner)}> |
||||||
|
<div className="container"> |
||||||
|
<h1 className="hero__title">{siteConfig.title}</h1> |
||||||
|
<p className="hero__subtitle">{siteConfig.tagline}</p> |
||||||
|
<div className={styles.buttons}> |
||||||
|
<Link |
||||||
|
className="button button--secondary button--lg" |
||||||
|
to="/docs/get-started" |
||||||
|
> |
||||||
|
Get started |
||||||
|
</Link> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</header> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
export default function Home() { |
||||||
|
const { siteConfig } = useDocusaurusContext(); |
||||||
|
return ( |
||||||
|
<Layout |
||||||
|
title={`Hello from ${siteConfig.title}`} |
||||||
|
description="Description will go into a meta tag in <head />" |
||||||
|
> |
||||||
|
<HomepageHeader /> |
||||||
|
<main> |
||||||
|
<HomepageFeatures /> |
||||||
|
</main> |
||||||
|
</Layout> |
||||||
|
); |
||||||
|
} |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
--- |
||||||
|
title: Markdown page example |
||||||
|
--- |
||||||
|
|
||||||
|
# Markdown page example |
||||||
|
|
||||||
|
You don't need React to write simple standalone pages. |
||||||
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@ -0,0 +1,7 @@ |
|||||||
|
{ |
||||||
|
// This file is not used in compilation. It is here just for a nice editor experience. |
||||||
|
"extends": "@tsconfig/docusaurus/tsconfig.json", |
||||||
|
"compilerOptions": { |
||||||
|
"baseUrl": "." |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
const { exec } = require("child_process"); |
||||||
|
|
||||||
|
// get files changed between prev and head commit
|
||||||
|
exec(`git diff --name-only HEAD^ HEAD`, async (error, stdout, stderr) => { |
||||||
|
if (error || stderr) { |
||||||
|
console.error(error); |
||||||
|
process.exit(1); |
||||||
|
} |
||||||
|
const changedFiles = stdout.trim().split("\n"); |
||||||
|
|
||||||
|
const docFiles = changedFiles.filter((file) => { |
||||||
|
return file.indexOf("docs") >= 0; |
||||||
|
}); |
||||||
|
|
||||||
|
if (!docFiles.length) { |
||||||
|
console.info("Skipping building docs as no valid diff found"); |
||||||
|
process.exit(0); |
||||||
|
} |
||||||
|
// Exit code 1 to build the docs in ignoredBuildStep
|
||||||
|
process.exit(1); |
||||||
|
}); |
||||||
Loading…
Reference in new issue