mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 15:47:23 +02:00
chore(website): enable eslint in website (#5889)
* chore: enable eslint in website * Fixes * prettier users
This commit is contained in:
parent
0aba31de7b
commit
e0127c66be
29 changed files with 272 additions and 163 deletions
|
@ -6,7 +6,6 @@ build
|
||||||
coverage
|
coverage
|
||||||
jest.config.js
|
jest.config.js
|
||||||
jest.transform.js
|
jest.transform.js
|
||||||
website/
|
|
||||||
scripts
|
scripts
|
||||||
examples/
|
examples/
|
||||||
|
|
||||||
|
|
11
.eslintrc.js
11
.eslintrc.js
|
@ -49,7 +49,16 @@ module.exports = {
|
||||||
// Ignore certain webpack alias because it can't be resolved
|
// Ignore certain webpack alias because it can't be resolved
|
||||||
'import/no-unresolved': [
|
'import/no-unresolved': [
|
||||||
ERROR,
|
ERROR,
|
||||||
{ignore: ['^@theme', '^@docusaurus', '^@generated', 'unist', 'mdast']},
|
{
|
||||||
|
ignore: [
|
||||||
|
'^@theme',
|
||||||
|
'^@docusaurus',
|
||||||
|
'^@generated',
|
||||||
|
'^@site',
|
||||||
|
'unist',
|
||||||
|
'mdast',
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
'import/extensions': OFF,
|
'import/extensions': OFF,
|
||||||
'header/header': [
|
'header/header': [
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Layout from '@theme/Layout';
|
import Layout from '@theme/Layout';
|
||||||
|
|
||||||
import ErrorBoundaryTestButton from '@site/src/components/ErrorBoundaryTestButton';
|
import ErrorBoundaryTestButton from '@site/src/components/ErrorBoundaryTestButton';
|
||||||
|
|
||||||
export default function ErrorBoundaryTests() {
|
export default function ErrorBoundaryTests(): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ErrorBoundaryTestButton>Crash outside layout</ErrorBoundaryTestButton>
|
<ErrorBoundaryTestButton>Crash outside layout</ErrorBoundaryTestButton>
|
|
@ -1,3 +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.
|
||||||
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Layout from '@theme/Layout';
|
import Layout from '@theme/Layout';
|
||||||
|
|
||||||
|
@ -6,15 +13,18 @@ function BuggyText() {
|
||||||
return (
|
return (
|
||||||
<span>
|
<span>
|
||||||
Built using the{' '}
|
Built using the{' '}
|
||||||
<a href="https://www.electronjs.org/" target="_blank">
|
<a href="https://www.electronjs.org/" target="_blank" rel="noreferrer">
|
||||||
Electron
|
Electron
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
, based on{' '}
|
, based on{' '}
|
||||||
<a href="https://www.chromium.org/" target="_blank">
|
<a href="https://www.chromium.org/" target="_blank" rel="noreferrer">
|
||||||
Chromium
|
Chromium
|
||||||
</a>
|
</a>
|
||||||
, and written using{' '}
|
, and written using{' '}
|
||||||
<a href="https://www.typescriptlang.org/" target="_blank">
|
<a
|
||||||
|
href="https://www.typescriptlang.org/"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer">
|
||||||
TypeScript
|
TypeScript
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
, Xplorer promises you an unprecedented experience.
|
, Xplorer promises you an unprecedented experience.
|
||||||
|
@ -22,7 +32,7 @@ function BuggyText() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home(): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<BuggyText />
|
<BuggyText />
|
|
@ -7,7 +7,8 @@
|
||||||
|
|
||||||
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
|
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
|
||||||
|
|
||||||
export function onRouteUpdate({location}: {location: Location}) {
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
export function onRouteUpdate({location}: {location: Location}): void {
|
||||||
// console.log('onRouteUpdate', {location});
|
// console.log('onRouteUpdate', {location});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
*
|
*
|
||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
|
@ -64,7 +64,6 @@ module.exports = {
|
||||||
};
|
};
|
||||||
|
|
||||||
function generateHugeSidebarItems() {
|
function generateHugeSidebarItems() {
|
||||||
const maxLevel = 4;
|
|
||||||
const linksCount = 8;
|
const linksCount = 8;
|
||||||
const categoriesCount = 8;
|
const categoriesCount = 8;
|
||||||
|
|
||||||
|
@ -88,5 +87,5 @@ function generateHugeSidebarItems() {
|
||||||
return [...linkItems, ...categoryItems];
|
return [...linkItems, ...categoryItems];
|
||||||
}
|
}
|
||||||
|
|
||||||
return generateRecursive(maxLevel);
|
return generateRecursive(4);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +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.
|
||||||
|
*/
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
/** @type {import('@docusaurus/types').PluginConfig[]} */
|
/** @type {import('@docusaurus/types').PluginConfig[]} */
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
*
|
*
|
||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*
|
|
||||||
* @format
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
|
@ -11,11 +11,16 @@ const versions = require('./versions.json');
|
||||||
const math = require('remark-math');
|
const math = require('remark-math');
|
||||||
const katex = require('rehype-katex');
|
const katex = require('rehype-katex');
|
||||||
const VersionsArchived = require('./versionsArchived.json');
|
const VersionsArchived = require('./versionsArchived.json');
|
||||||
const ArchivedVersionsDropdownItems = Object.entries(VersionsArchived).splice(
|
|
||||||
0,
|
|
||||||
5,
|
|
||||||
);
|
|
||||||
const {dogfoodingPluginInstances} = require('./_dogfooding/dogfooding.config');
|
const {dogfoodingPluginInstances} = require('./_dogfooding/dogfooding.config');
|
||||||
|
const FeatureRequestsPlugin = require('./src/featureRequests/FeatureRequestsPlugin');
|
||||||
|
const npm2yarn = require('@docusaurus/remark-plugin-npm2yarn');
|
||||||
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||||
|
const lightTheme = require('prism-react-renderer/themes/github');
|
||||||
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||||
|
const darkTheme = require('prism-react-renderer/themes/dracula');
|
||||||
|
|
||||||
|
const ArchivedVersionsDropdownItems =
|
||||||
|
Object.entries(VersionsArchived).splice(0, 5);
|
||||||
|
|
||||||
// This probably only makes sense for the beta phase, temporary
|
// This probably only makes sense for the beta phase, temporary
|
||||||
function getNextBetaVersionName() {
|
function getNextBetaVersionName() {
|
||||||
|
@ -80,6 +85,7 @@ const config = {
|
||||||
],
|
],
|
||||||
i18n: {
|
i18n: {
|
||||||
defaultLocale: 'en',
|
defaultLocale: 'en',
|
||||||
|
// eslint-disable-next-line no-nested-ternary
|
||||||
locales: isDeployPreview
|
locales: isDeployPreview
|
||||||
? // Deploy preview: keep it fast!
|
? // Deploy preview: keep it fast!
|
||||||
['en']
|
['en']
|
||||||
|
@ -109,7 +115,7 @@ const config = {
|
||||||
clientModules: [require.resolve('./_dogfooding/clientModuleExample.ts')],
|
clientModules: [require.resolve('./_dogfooding/clientModuleExample.ts')],
|
||||||
themes: ['@docusaurus/theme-live-codeblock'],
|
themes: ['@docusaurus/theme-live-codeblock'],
|
||||||
plugins: [
|
plugins: [
|
||||||
require('./src/featureRequests/FeatureRequestsPlugin'),
|
FeatureRequestsPlugin,
|
||||||
[
|
[
|
||||||
'@docusaurus/plugin-content-docs',
|
'@docusaurus/plugin-content-docs',
|
||||||
/** @type {import('@docusaurus/plugin-content-docs').Options} */
|
/** @type {import('@docusaurus/plugin-content-docs').Options} */
|
||||||
|
@ -134,12 +140,13 @@ const config = {
|
||||||
/** @type {import('@docusaurus/plugin-client-redirects').Options} */
|
/** @type {import('@docusaurus/plugin-client-redirects').Options} */
|
||||||
({
|
({
|
||||||
fromExtensions: ['html'],
|
fromExtensions: ['html'],
|
||||||
createRedirects: function (path) {
|
createRedirects(routePath) {
|
||||||
// redirect to /docs from /docs/introduction,
|
// redirect to /docs from /docs/introduction,
|
||||||
// as introduction has been made the home doc
|
// as introduction has been made the home doc
|
||||||
if (allDocHomesPaths.includes(path)) {
|
if (allDocHomesPaths.includes(routePath)) {
|
||||||
return [`${path}/introduction`];
|
return [`${routePath}/introduction`];
|
||||||
}
|
}
|
||||||
|
return [];
|
||||||
},
|
},
|
||||||
redirects: [
|
redirects: [
|
||||||
{
|
{
|
||||||
|
@ -254,11 +261,12 @@ const config = {
|
||||||
showLastUpdateTime: true,
|
showLastUpdateTime: true,
|
||||||
remarkPlugins: [
|
remarkPlugins: [
|
||||||
math,
|
math,
|
||||||
[require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}],
|
[npm2yarn, {sync: true}],
|
||||||
],
|
],
|
||||||
rehypePlugins: [katex],
|
rehypePlugins: [katex],
|
||||||
disableVersioning: isVersioningDisabled,
|
disableVersioning: isVersioningDisabled,
|
||||||
lastVersion: isDev ? 'current' : undefined,
|
lastVersion: isDev ? 'current' : undefined,
|
||||||
|
// eslint-disable-next-line no-nested-ternary
|
||||||
onlyIncludeVersions: isBuildFast
|
onlyIncludeVersions: isBuildFast
|
||||||
? ['current']
|
? ['current']
|
||||||
: !isVersioningDisabled && (isDev || isDeployPreview)
|
: !isVersioningDisabled && (isDev || isDeployPreview)
|
||||||
|
@ -288,7 +296,7 @@ const config = {
|
||||||
blogSidebarTitle: 'All our posts',
|
blogSidebarTitle: 'All our posts',
|
||||||
},
|
},
|
||||||
pages: {
|
pages: {
|
||||||
remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')],
|
remarkPlugins: [npm2yarn],
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
customCss: [require.resolve('./src/css/custom.css')],
|
customCss: [require.resolve('./src/css/custom.css')],
|
||||||
|
@ -314,8 +322,8 @@ const config = {
|
||||||
content: `⭐️ If you like Docusaurus, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/facebook/docusaurus">GitHub</a> and follow us on <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/docusaurus" >Twitter</a> ${TwitterSvg}`,
|
content: `⭐️ If you like Docusaurus, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/facebook/docusaurus">GitHub</a> and follow us on <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/docusaurus" >Twitter</a> ${TwitterSvg}`,
|
||||||
},
|
},
|
||||||
prism: {
|
prism: {
|
||||||
theme: require('prism-react-renderer/themes/github'),
|
theme: lightTheme,
|
||||||
darkTheme: require('prism-react-renderer/themes/dracula'),
|
darkTheme,
|
||||||
additionalLanguages: ['java'],
|
additionalLanguages: ['java'],
|
||||||
},
|
},
|
||||||
image: 'img/docusaurus-soc.png',
|
image: 'img/docusaurus-soc.png',
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
"@docusaurus/preset-classic": "2.0.0-beta.9",
|
"@docusaurus/preset-classic": "2.0.0-beta.9",
|
||||||
"@docusaurus/remark-plugin-npm2yarn": "2.0.0-beta.9",
|
"@docusaurus/remark-plugin-npm2yarn": "2.0.0-beta.9",
|
||||||
"@docusaurus/theme-live-codeblock": "2.0.0-beta.9",
|
"@docusaurus/theme-live-codeblock": "2.0.0-beta.9",
|
||||||
|
"@docusaurus/utils": "2.0.0-beta.9",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"color": "^4.0.1",
|
"color": "^4.0.1",
|
||||||
"esbuild-loader": "2.13.1",
|
"esbuild-loader": "2.13.1",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
*
|
*
|
||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
*
|
*
|
||||||
* This source code is licensed under the MIT license found in the
|
* This source code is licensed under the MIT license found in the
|
||||||
|
|
|
@ -15,7 +15,7 @@ interface Props {
|
||||||
url: string;
|
url: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function BrowserWindow({children, minHeight, url}: Props) {
|
function BrowserWindow({children, minHeight, url}: Props): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div className={styles.browserWindow} style={{minHeight}}>
|
<div className={styles.browserWindow} style={{minHeight}}>
|
||||||
<div className={styles.browserWindowHeader}>
|
<div className={styles.browserWindowHeader}>
|
||||||
|
|
|
@ -66,10 +66,10 @@ const COLOR_SHADES: Record<
|
||||||
|
|
||||||
const DEFAULT_PRIMARY_COLOR = '3578e5';
|
const DEFAULT_PRIMARY_COLOR = '3578e5';
|
||||||
|
|
||||||
function ColorGenerator() {
|
function ColorGenerator(): JSX.Element {
|
||||||
const [baseColor, setBaseColor] = useState(DEFAULT_PRIMARY_COLOR);
|
const [baseColor, setBaseColor] = useState(DEFAULT_PRIMARY_COLOR);
|
||||||
const [shades, setShades] = useState(COLOR_SHADES);
|
const [shades, setShades] = useState(COLOR_SHADES);
|
||||||
const color = Color('#' + baseColor);
|
const color = Color(`#${baseColor}`);
|
||||||
const adjustedColors = Object.keys(shades)
|
const adjustedColors = Object.keys(shades)
|
||||||
.map((shade) => ({
|
.map((shade) => ({
|
||||||
...shades[shade],
|
...shades[shade],
|
||||||
|
@ -83,6 +83,7 @@ function ColorGenerator() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
|
{/* eslint-disable-next-line jsx-a11y/label-has-associated-control */}
|
||||||
<label htmlFor="primary_color">
|
<label htmlFor="primary_color">
|
||||||
<strong className="margin-right--sm">Primary Color:</strong>
|
<strong className="margin-right--sm">Primary Color:</strong>
|
||||||
</label>{' '}
|
</label>{' '}
|
||||||
|
@ -96,7 +97,7 @@ function ColorGenerator() {
|
||||||
const colorValue = event.target.value.replace(/^#+/, '');
|
const colorValue = event.target.value.replace(/^#+/, '');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Color('#' + colorValue);
|
Color(`#${baseColor}`);
|
||||||
setBaseColor(colorValue);
|
setBaseColor(colorValue);
|
||||||
} catch {
|
} catch {
|
||||||
// Don't update for invalid colors.
|
// Don't update for invalid colors.
|
||||||
|
@ -150,7 +151,7 @@ function ColorGenerator() {
|
||||||
[variableName]: {
|
[variableName]: {
|
||||||
...shades[variableName],
|
...shades[variableName],
|
||||||
adjustmentInput: event.target.value,
|
adjustmentInput: event.target.value,
|
||||||
adjustment: isNaN(newValue)
|
adjustment: Number.isNaN(newValue)
|
||||||
? adjustment
|
? adjustment
|
||||||
: newValue / 100.0,
|
: newValue / 100.0,
|
||||||
},
|
},
|
||||||
|
|
|
@ -5,12 +5,20 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React, {useState} from 'react';
|
import React, {ReactNode, useState} from 'react';
|
||||||
|
|
||||||
export default function ErrorBoundaryTestButton({children = 'Boom!'}) {
|
export default function ErrorBoundaryTestButton({
|
||||||
|
children = 'Boom!',
|
||||||
|
}: {
|
||||||
|
children?: ReactNode;
|
||||||
|
}): JSX.Element {
|
||||||
const [state, setState] = useState(false);
|
const [state, setState] = useState(false);
|
||||||
if (state) {
|
if (state) {
|
||||||
throw new Error('Boom!');
|
throw new Error('Boom!');
|
||||||
}
|
}
|
||||||
return <button onClick={() => setState(true)}>{children}</button>;
|
return (
|
||||||
|
<button type="button" onClick={() => setState(true)}>
|
||||||
|
{children}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Translate from '@docusaurus/Translate';
|
import Translate from '@docusaurus/Translate';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
|
@ -32,7 +34,7 @@ const Playgrounds = [
|
||||||
id="playground.stackblitz.description"
|
id="playground.stackblitz.description"
|
||||||
values={{
|
values={{
|
||||||
webContainersLink: (
|
webContainersLink: (
|
||||||
<Link target="https://blog.stackblitz.com/posts/introducing-webcontainers/">
|
<Link href="https://blog.stackblitz.com/posts/introducing-webcontainers/">
|
||||||
WebContainers
|
WebContainers
|
||||||
</Link>
|
</Link>
|
||||||
),
|
),
|
||||||
|
@ -77,7 +79,7 @@ function PlaygroundCard({name, image, url, description}: Props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PlaygroundCardsRow() {
|
export function PlaygroundCardsRow(): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div className="row">
|
<div className="row">
|
||||||
{Playgrounds.map((playground) => (
|
{Playgrounds.map((playground) => (
|
||||||
|
|
|
@ -41,7 +41,7 @@ function TeamProfileCard({
|
||||||
<div className="avatar avatar--vertical">
|
<div className="avatar avatar--vertical">
|
||||||
<img
|
<img
|
||||||
className="avatar__photo avatar__photo--xl"
|
className="avatar__photo avatar__photo--xl"
|
||||||
src={githubUrl + '.png'}
|
src={`${githubUrl}.png`}
|
||||||
alt={`${name}'s avatar`}
|
alt={`${name}'s avatar`}
|
||||||
/>
|
/>
|
||||||
<div className="avatar__intro">
|
<div className="avatar__intro">
|
||||||
|
@ -71,11 +71,11 @@ function TeamProfileCard({
|
||||||
|
|
||||||
function TeamProfileCardCol(props: ProfileProps) {
|
function TeamProfileCardCol(props: ProfileProps) {
|
||||||
return (
|
return (
|
||||||
<TeamProfileCard {...props} className={'col col--6 margin-bottom--lg'} />
|
<TeamProfileCard {...props} className="col col--6 margin-bottom--lg" />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ActiveTeamRow() {
|
export function ActiveTeamRow(): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<TeamProfileCardCol
|
<TeamProfileCardCol
|
||||||
|
@ -125,15 +125,15 @@ export function ActiveTeamRow() {
|
||||||
twitterUrl="https://twitter.com/yangshunz">
|
twitterUrl="https://twitter.com/yangshunz">
|
||||||
<Translate id="team.profile.Yangshun Tay.body">
|
<Translate id="team.profile.Yangshun Tay.body">
|
||||||
Full Front End Stack developer who likes working on the Jamstack.
|
Full Front End Stack developer who likes working on the Jamstack.
|
||||||
Working on Docusaurus made him Facebook's unofficial part-time Open
|
Working on Docusaurus made him Facebook's unofficial part-time
|
||||||
Source webmaster, which is an awesome role to be in.
|
Open Source webmaster, which is an awesome role to be in.
|
||||||
</Translate>
|
</Translate>
|
||||||
</TeamProfileCardCol>
|
</TeamProfileCardCol>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function HonoraryAlumniTeamRow() {
|
export function HonoraryAlumniTeamRow(): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<TeamProfileCardCol
|
<TeamProfileCardCol
|
||||||
|
@ -157,7 +157,7 @@ export function HonoraryAlumniTeamRow() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function StudentFellowsTeamRow() {
|
export function StudentFellowsTeamRow(): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<TeamProfileCardCol
|
<TeamProfileCardCol
|
||||||
|
@ -166,7 +166,7 @@ export function StudentFellowsTeamRow() {
|
||||||
twitterUrl="https://twitter.com/ar_goyal">
|
twitterUrl="https://twitter.com/ar_goyal">
|
||||||
Fullstack developer who loves to code and try new technologies. In his
|
Fullstack developer who loves to code and try new technologies. In his
|
||||||
free time, he contributes to open source, writes blog posts on his{' '}
|
free time, he contributes to open source, writes blog posts on his{' '}
|
||||||
<a href="https://anshulgoyal.dev/" target="_blank">
|
<a href="https://anshulgoyal.dev/" target="_blank" rel="noreferrer">
|
||||||
website
|
website
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
and watches Anime.
|
and watches Anime.
|
||||||
|
@ -184,11 +184,14 @@ export function StudentFellowsTeamRow() {
|
||||||
Fanny got started with web development in high school, building a
|
Fanny got started with web development in high school, building a
|
||||||
project for the school kitchen. In her free time she loves contributing
|
project for the school kitchen. In her free time she loves contributing
|
||||||
to Open Source, occasionally writing on{' '}
|
to Open Source, occasionally writing on{' '}
|
||||||
<a href="https://dev.to/fannyvieira" target="_blank">
|
<a href="https://dev.to/fannyvieira" target="_blank" rel="noreferrer">
|
||||||
her blog
|
her blog
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
about her experiences, cooking, and creating{' '}
|
about her experiences, cooking, and creating{' '}
|
||||||
<a href="https://open.spotify.com/user/anotherfanny" target="_blank">
|
<a
|
||||||
|
href="https://open.spotify.com/user/anotherfanny"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer">
|
||||||
Spotify playlists
|
Spotify playlists
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
|
|
|
@ -14,7 +14,12 @@ interface Props extends ComponentProps<'input'> {
|
||||||
label: ReactNode;
|
label: ReactNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ShowcaseCheckbox({title, className, label, ...props}: Props) {
|
function ShowcaseCheckbox({
|
||||||
|
title,
|
||||||
|
className,
|
||||||
|
label,
|
||||||
|
...props
|
||||||
|
}: Props): JSX.Element {
|
||||||
const id = `showcase_checkbox_id_${props.name};`;
|
const id = `showcase_checkbox_id_${props.name};`;
|
||||||
return (
|
return (
|
||||||
<div className={clsx(className, styles.checkboxContainer)} title={title}>
|
<div className={clsx(className, styles.checkboxContainer)} title={title}>
|
||||||
|
|
|
@ -13,7 +13,7 @@ interface Props extends ComponentProps<'select'> {
|
||||||
label: string;
|
label: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ShowcaseSelect({label, ...props}: Props) {
|
function ShowcaseSelect({label, ...props}: Props): JSX.Element {
|
||||||
const id = `showcase_select_id_${props.name};`;
|
const id = `showcase_select_id_${props.name};`;
|
||||||
return (
|
return (
|
||||||
<div className={styles.selectContainer}>
|
<div className={styles.selectContainer}>
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {difference, sortBy} from '../utils/jsUtils';
|
import {difference, sortBy} from '../utils/jsUtils';
|
||||||
|
|
||||||
|
@ -154,7 +156,8 @@ export const Tags: Record<TagType, Tag> = {
|
||||||
const Users: User[] = [
|
const Users: User[] = [
|
||||||
{
|
{
|
||||||
title: 'Aide Jeune',
|
title: 'Aide Jeune',
|
||||||
description: 'French Discord server that helps young people who have been bullied or feel bad about themselves',
|
description:
|
||||||
|
'French Discord server that helps young people who have been bullied or feel bad about themselves',
|
||||||
preview: require('./showcase/aide_jeune.png'),
|
preview: require('./showcase/aide_jeune.png'),
|
||||||
website: 'https://aidejeune.fr',
|
website: 'https://aidejeune.fr',
|
||||||
source: 'https://github.com/AideJeune',
|
source: 'https://github.com/AideJeune',
|
||||||
|
@ -200,7 +203,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/apache-apisix.png'),
|
preview: require('./showcase/apache-apisix.png'),
|
||||||
website: 'https://apisix.apache.org/',
|
website: 'https://apisix.apache.org/',
|
||||||
source: 'https://github.com/apache/apisix-website',
|
source: 'https://github.com/apache/apisix-website',
|
||||||
tags: ['opensource','i18n','large'],
|
tags: ['opensource', 'i18n', 'large'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Apex FP',
|
title: 'Apex FP',
|
||||||
|
@ -246,7 +249,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Blink Shell Docs',
|
title: 'Blink Shell Docs',
|
||||||
description: 'Documentation for Blink Shell a professional, desktop grade terminal for iOS',
|
description:
|
||||||
|
'Documentation for Blink Shell a professional, desktop grade terminal for iOS',
|
||||||
preview: require('./showcase/blinkshell.png'),
|
preview: require('./showcase/blinkshell.png'),
|
||||||
website: 'https://docs.blink.sh/',
|
website: 'https://docs.blink.sh/',
|
||||||
source: 'https://github.com/blinksh/docs',
|
source: 'https://github.com/blinksh/docs',
|
||||||
|
@ -258,7 +262,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/johnnyreilly.png'),
|
preview: require('./showcase/johnnyreilly.png'),
|
||||||
website: 'https://blog.johnnyreilly.com/',
|
website: 'https://blog.johnnyreilly.com/',
|
||||||
source: 'https://github.com/johnnyreilly/blog.johnnyreilly.com',
|
source: 'https://github.com/johnnyreilly/blog.johnnyreilly.com',
|
||||||
tags: ['opensource','personal','large'],
|
tags: ['opensource', 'personal', 'large'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Blogasaurus',
|
title: 'Blogasaurus',
|
||||||
|
@ -266,7 +270,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/Blogasaurus.png'),
|
preview: require('./showcase/Blogasaurus.png'),
|
||||||
website: 'https://blog.palashsh.me/',
|
website: 'https://blog.palashsh.me/',
|
||||||
source: 'https://github.com/BattleOfPlassey/blogasaurus',
|
source: 'https://github.com/BattleOfPlassey/blogasaurus',
|
||||||
tags: ['personal', 'opensource']
|
tags: ['personal', 'opensource'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Botonic',
|
title: 'Botonic',
|
||||||
|
@ -295,7 +299,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'ClarityChallenge',
|
title: 'ClarityChallenge',
|
||||||
description: 'Documentation for the Clarity machine learning challenges for improving hearing aid signal processing',
|
description:
|
||||||
|
'Documentation for the Clarity machine learning challenges for improving hearing aid signal processing',
|
||||||
preview: require('./showcase/claritychallenge.png'),
|
preview: require('./showcase/claritychallenge.png'),
|
||||||
website: 'https://claritychallenge.github.io/clarity_CEC1_doc',
|
website: 'https://claritychallenge.github.io/clarity_CEC1_doc',
|
||||||
source: 'https://github.com/claritychallenge/clarity_CEC1_doc',
|
source: 'https://github.com/claritychallenge/clarity_CEC1_doc',
|
||||||
|
@ -303,10 +308,12 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Cloudy with a chance of Big Data',
|
title: 'Cloudy with a chance of Big Data',
|
||||||
description: 'A blog only Docusaurus site showcasing cloud, data and full stack design patterns and tutorials',
|
description:
|
||||||
|
'A blog only Docusaurus site showcasing cloud, data and full stack design patterns and tutorials',
|
||||||
preview: require('./showcase/cloudywithachanceofbigdata.png'),
|
preview: require('./showcase/cloudywithachanceofbigdata.png'),
|
||||||
website: 'https://cloudywithachanceofbigdata.com/',
|
website: 'https://cloudywithachanceofbigdata.com/',
|
||||||
source: 'https://github.com/cloudywithachanceofbigdata/cloudywithachanceofbigdata.github.io',
|
source:
|
||||||
|
'https://github.com/cloudywithachanceofbigdata/cloudywithachanceofbigdata.github.io',
|
||||||
tags: ['opensource', 'personal'],
|
tags: ['opensource', 'personal'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -319,7 +326,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'CodeYourFuture',
|
title: 'CodeYourFuture',
|
||||||
description: 'The syllabus for CodeYourFuture - a free code school for refugees, asylum seekers and disadvantaged people',
|
description:
|
||||||
|
'The syllabus for CodeYourFuture - a free code school for refugees, asylum seekers and disadvantaged people',
|
||||||
preview: require('./showcase/codeyourfuture.png'),
|
preview: require('./showcase/codeyourfuture.png'),
|
||||||
website: 'https://syllabus.codeyourfuture.io/',
|
website: 'https://syllabus.codeyourfuture.io/',
|
||||||
source: 'https://github.com/CodeYourFuture/syllabus',
|
source: 'https://github.com/CodeYourFuture/syllabus',
|
||||||
|
@ -351,7 +359,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Country State City API',
|
title: 'Country State City API',
|
||||||
description: 'Get simplified countries, states & cities data without bloating up your database.',
|
description:
|
||||||
|
'Get simplified countries, states & cities data without bloating up your database.',
|
||||||
preview: require('./showcase/countrystatecity.png'),
|
preview: require('./showcase/countrystatecity.png'),
|
||||||
website: 'https://countrystatecity.in/',
|
website: 'https://countrystatecity.in/',
|
||||||
source: 'https://github.com/dr5hn/csc-website',
|
source: 'https://github.com/dr5hn/csc-website',
|
||||||
|
@ -367,7 +376,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'CryptoDevHub',
|
title: 'CryptoDevHub',
|
||||||
description: 'The place where Blockchain- and Crypto developers learn, meet and grow.',
|
description:
|
||||||
|
'The place where Blockchain- and Crypto developers learn, meet and grow.',
|
||||||
preview: require('./showcase/cryptodevhub.png'),
|
preview: require('./showcase/cryptodevhub.png'),
|
||||||
website: 'https://cryptodevhub.io',
|
website: 'https://cryptodevhub.io',
|
||||||
source: 'https://github.com/cryptodevhub/site',
|
source: 'https://github.com/cryptodevhub/site',
|
||||||
|
@ -384,7 +394,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Dart Code Metrics',
|
title: 'Dart Code Metrics',
|
||||||
description: 'Static analysis tool that helps analyse and improve Dart code quality.',
|
description:
|
||||||
|
'Static analysis tool that helps analyse and improve Dart code quality.',
|
||||||
preview: require('./showcase/dart-code-metrics.png'),
|
preview: require('./showcase/dart-code-metrics.png'),
|
||||||
website: 'https://dartcodemetrics.dev/',
|
website: 'https://dartcodemetrics.dev/',
|
||||||
source: 'https://github.com/dart-code-checker/dart-code-metrics',
|
source: 'https://github.com/dart-code-checker/dart-code-metrics',
|
||||||
|
@ -413,7 +424,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/djamaile.png'),
|
preview: require('./showcase/djamaile.png'),
|
||||||
website: 'https://djamaile.dev/',
|
website: 'https://djamaile.dev/',
|
||||||
source: 'https://github.com/djamaile/portfolio',
|
source: 'https://github.com/djamaile/portfolio',
|
||||||
tags: ['opensource','personal'],
|
tags: ['opensource', 'personal'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Draft.js',
|
title: 'Draft.js',
|
||||||
|
@ -421,7 +432,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/draftjs.png'),
|
preview: require('./showcase/draftjs.png'),
|
||||||
website: 'https://draftjs.org/',
|
website: 'https://draftjs.org/',
|
||||||
source: 'https://github.com/facebook/draft-js',
|
source: 'https://github.com/facebook/draft-js',
|
||||||
tags: ['opensource','facebook'],
|
tags: ['opensource', 'facebook'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Easyjwt',
|
title: 'Easyjwt',
|
||||||
|
@ -429,7 +440,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/easyjwt.png'),
|
preview: require('./showcase/easyjwt.png'),
|
||||||
website: 'https://www.easyjwt.org',
|
website: 'https://www.easyjwt.org',
|
||||||
source: 'https://github.com/authdog/easyjwt',
|
source: 'https://github.com/authdog/easyjwt',
|
||||||
tags: ['opensource','i18n'],
|
tags: ['opensource', 'i18n'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Eightshift Docs',
|
title: 'Eightshift Docs',
|
||||||
|
@ -459,7 +470,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Evan Tay's Personal Website",
|
title: "Evan Tay's Personal Website",
|
||||||
description: "A Software Engineer's blog, documentation and project portfolio.",
|
description:
|
||||||
|
"A Software Engineer's blog, documentation and project portfolio.",
|
||||||
preview: require('./showcase/evantay.png'),
|
preview: require('./showcase/evantay.png'),
|
||||||
website: 'https://evantay.com/',
|
website: 'https://evantay.com/',
|
||||||
source: 'https://github.com/DigiPie/kaya-folio',
|
source: 'https://github.com/DigiPie/kaya-folio',
|
||||||
|
@ -511,7 +523,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/flexit.png'),
|
preview: require('./showcase/flexit.png'),
|
||||||
website: 'https://learn.flexitanalytics.com/',
|
website: 'https://learn.flexitanalytics.com/',
|
||||||
source: 'https://github.com/ataft/flexit-docs',
|
source: 'https://github.com/ataft/flexit-docs',
|
||||||
tags: ['opensource','product'],
|
tags: ['opensource', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Flux',
|
title: 'Flux',
|
||||||
|
@ -560,7 +572,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/graphql-codegen.png'),
|
preview: require('./showcase/graphql-codegen.png'),
|
||||||
website: 'https://graphql-code-generator.com/',
|
website: 'https://graphql-code-generator.com/',
|
||||||
source: 'https://github.com/dotansimha/graphql-code-generator',
|
source: 'https://github.com/dotansimha/graphql-code-generator',
|
||||||
tags: ['favorite', 'opensource','design'],
|
tags: ['favorite', 'opensource', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'GraphQL Inspector',
|
title: 'GraphQL Inspector',
|
||||||
|
@ -568,7 +580,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/graphql-inspector.png'),
|
preview: require('./showcase/graphql-inspector.png'),
|
||||||
website: 'https://graphql-inspector.com',
|
website: 'https://graphql-inspector.com',
|
||||||
source: 'https://github.com/kamilkisiela/graphql-inspector',
|
source: 'https://github.com/kamilkisiela/graphql-inspector',
|
||||||
tags: ['opensource', 'design','product'],
|
tags: ['opensource', 'design', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'GraphQL Mesh',
|
title: 'GraphQL Mesh',
|
||||||
|
@ -633,19 +645,21 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/intelagent.png'),
|
preview: require('./showcase/intelagent.png'),
|
||||||
website: 'https://www.intelagent.ca/',
|
website: 'https://www.intelagent.ca/',
|
||||||
source: 'https://github.com/intelagentbilling/docs',
|
source: 'https://github.com/intelagentbilling/docs',
|
||||||
tags: ['opensource','product'],
|
tags: ['opensource', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Indent',
|
title: 'Indent',
|
||||||
description: 'Indent provides on-demand access control for cloud apps and infrastructure.',
|
description:
|
||||||
|
'Indent provides on-demand access control for cloud apps and infrastructure.',
|
||||||
preview: require('./showcase/indent.png'),
|
preview: require('./showcase/indent.png'),
|
||||||
website: 'https://indent.com/developers',
|
website: 'https://indent.com/developers',
|
||||||
source: null,
|
source: null,
|
||||||
tags: ['product','design'],
|
tags: ['product', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'InfraQL Technologies',
|
title: 'InfraQL Technologies',
|
||||||
description: 'InfraQL is a SQL based approach to cloud infrastructure coding, API querying and automation.',
|
description:
|
||||||
|
'InfraQL is a SQL based approach to cloud infrastructure coding, API querying and automation.',
|
||||||
preview: require('./showcase/infraql-docs.png'),
|
preview: require('./showcase/infraql-docs.png'),
|
||||||
website: 'https://docs.infraql.io/',
|
website: 'https://docs.infraql.io/',
|
||||||
source: null,
|
source: null,
|
||||||
|
@ -661,11 +675,12 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Jest',
|
title: 'Jest',
|
||||||
description: 'Jest is a delightful JavaScript Testing Framework with a focus on simplicity.',
|
description:
|
||||||
|
'Jest is a delightful JavaScript Testing Framework with a focus on simplicity.',
|
||||||
preview: require('./showcase/jest.png'),
|
preview: require('./showcase/jest.png'),
|
||||||
website: 'https://jestjs.io/',
|
website: 'https://jestjs.io/',
|
||||||
source: 'https://github.com/facebook/jest/tree/master/website',
|
source: 'https://github.com/facebook/jest/tree/master/website',
|
||||||
tags: ['favorite','opensource','design','i18n','versioning'],
|
tags: ['favorite', 'opensource', 'design', 'i18n', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Kosko',
|
title: 'Kosko',
|
||||||
|
@ -673,7 +688,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/kosko.png'),
|
preview: require('./showcase/kosko.png'),
|
||||||
website: 'https://kosko.dev',
|
website: 'https://kosko.dev',
|
||||||
source: 'https://github.com/tommy351/kosko',
|
source: 'https://github.com/tommy351/kosko',
|
||||||
tags: ['opensource']
|
tags: ['opensource'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Kotest',
|
title: 'Kotest',
|
||||||
|
@ -725,7 +740,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Meli',
|
title: 'Meli',
|
||||||
description: 'Platform to deploy static sites, frontend applications and hosted forms',
|
description:
|
||||||
|
'Platform to deploy static sites, frontend applications and hosted forms',
|
||||||
preview: require('./showcase/meli.png'),
|
preview: require('./showcase/meli.png'),
|
||||||
website: 'https://docs.meli.sh/',
|
website: 'https://docs.meli.sh/',
|
||||||
source: 'https://github.com/getmeli/meli',
|
source: 'https://github.com/getmeli/meli',
|
||||||
|
@ -741,7 +757,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Mia-Platform',
|
title: 'Mia-Platform',
|
||||||
description: 'Mia-Platform is the simplest way to develop and operate modern applications on Kubernetes. Don\'t waste time to set up your platform, just push the code!',
|
description:
|
||||||
|
"Mia-Platform is the simplest way to develop and operate modern applications on Kubernetes. Don't waste time to set up your platform, just push the code!",
|
||||||
preview: require('./showcase/mia-platform.png'),
|
preview: require('./showcase/mia-platform.png'),
|
||||||
website: 'https://docs.mia-platform.eu/',
|
website: 'https://docs.mia-platform.eu/',
|
||||||
source: null,
|
source: null,
|
||||||
|
@ -776,7 +793,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'nanos world documentation',
|
title: 'nanos world documentation',
|
||||||
description: "nanos world is the next-generation multiplayer open world sandbox game.",
|
description:
|
||||||
|
'nanos world is the next-generation multiplayer open world sandbox game.',
|
||||||
preview: require('./showcase/nanos-world.png'),
|
preview: require('./showcase/nanos-world.png'),
|
||||||
website: 'https://docs.nanos.world/',
|
website: 'https://docs.nanos.world/',
|
||||||
source: 'https://github.com/nanos-world/docs',
|
source: 'https://github.com/nanos-world/docs',
|
||||||
|
@ -792,7 +810,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Netdata Learn',
|
title: 'Netdata Learn',
|
||||||
description: 'An educational site for monitoring and troubleshooting systems',
|
description:
|
||||||
|
'An educational site for monitoring and troubleshooting systems',
|
||||||
preview: require('./showcase/netdata.png'),
|
preview: require('./showcase/netdata.png'),
|
||||||
website: 'https://learn.netdata.cloud',
|
website: 'https://learn.netdata.cloud',
|
||||||
source: 'https://github.com/netdata/netdata-learn-docusaurus',
|
source: 'https://github.com/netdata/netdata-learn-docusaurus',
|
||||||
|
@ -812,7 +831,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/nextauthjs.png'),
|
preview: require('./showcase/nextauthjs.png'),
|
||||||
website: 'https://next-auth.js.org/',
|
website: 'https://next-auth.js.org/',
|
||||||
source: 'https://github.com/nextauthjs/next-auth',
|
source: 'https://github.com/nextauthjs/next-auth',
|
||||||
tags: ['opensource','design'],
|
tags: ['opensource', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Node SerialPort',
|
title: 'Node SerialPort',
|
||||||
|
@ -820,7 +839,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/node-serialport.png'),
|
preview: require('./showcase/node-serialport.png'),
|
||||||
website: 'https://serialport.io',
|
website: 'https://serialport.io',
|
||||||
source: 'https://github.com/serialport/node-serialport',
|
source: 'https://github.com/serialport/node-serialport',
|
||||||
tags: ['opensource','versioning'],
|
tags: ['opensource', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Nodify',
|
title: 'Nodify',
|
||||||
|
@ -863,7 +882,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/orbitjs.png'),
|
preview: require('./showcase/orbitjs.png'),
|
||||||
website: 'https://orbitjs.com',
|
website: 'https://orbitjs.com',
|
||||||
source: 'https://github.com/orbitjs/orbit/tree/main/website',
|
source: 'https://github.com/orbitjs/orbit/tree/main/website',
|
||||||
tags: ['opensource','versioning'],
|
tags: ['opensource', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Oxidizer',
|
title: 'Oxidizer',
|
||||||
|
@ -879,9 +898,9 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/paubox.png'),
|
preview: require('./showcase/paubox.png'),
|
||||||
website: 'https://docs.paubox.com/',
|
website: 'https://docs.paubox.com/',
|
||||||
source: null,
|
source: null,
|
||||||
tags: ["product"],
|
tags: ['product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Pipeline UI',
|
title: 'Pipeline UI',
|
||||||
description: 'Pipeline UI Documentation',
|
description: 'Pipeline UI Documentation',
|
||||||
preview: require('./showcase/pipeline-ui.png'),
|
preview: require('./showcase/pipeline-ui.png'),
|
||||||
|
@ -891,11 +910,12 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Plausible Analytics Docs',
|
title: 'Plausible Analytics Docs',
|
||||||
description: 'Plausible Analytics is a simple, open source, lightweight (< 1 KB) and privacy-friendly alternative to Google Analytics. ',
|
description:
|
||||||
|
'Plausible Analytics is a simple, open source, lightweight (< 1 KB) and privacy-friendly alternative to Google Analytics. ',
|
||||||
preview: require('./showcase/plausible.png'),
|
preview: require('./showcase/plausible.png'),
|
||||||
website: 'https://plausible.io/docs',
|
website: 'https://plausible.io/docs',
|
||||||
source: 'https://github.com/plausible/docs',
|
source: 'https://github.com/plausible/docs',
|
||||||
tags: ['opensource','product'],
|
tags: ['opensource', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'pnpm',
|
title: 'pnpm',
|
||||||
|
@ -903,7 +923,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/pnpm.png'),
|
preview: require('./showcase/pnpm.png'),
|
||||||
website: 'https://pnpm.js.org/',
|
website: 'https://pnpm.js.org/',
|
||||||
source: 'https://github.com/pnpm/pnpm.github.io/',
|
source: 'https://github.com/pnpm/pnpm.github.io/',
|
||||||
tags: ['opensource','i18n'],
|
tags: ['opensource', 'i18n'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Postgres.ai – Database Lab',
|
title: 'Postgres.ai – Database Lab',
|
||||||
|
@ -928,7 +948,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/pptxgenjs.png'),
|
preview: require('./showcase/pptxgenjs.png'),
|
||||||
website: 'https://gitbrent.github.io/PptxGenJS/',
|
website: 'https://gitbrent.github.io/PptxGenJS/',
|
||||||
source: 'https://github.com/gitbrent/PptxGenJS',
|
source: 'https://github.com/gitbrent/PptxGenJS',
|
||||||
tags: ['opensource','design'],
|
tags: ['opensource', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Prismatic',
|
title: 'Prismatic',
|
||||||
|
@ -970,7 +990,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/quantcdn.png'),
|
preview: require('./showcase/quantcdn.png'),
|
||||||
website: 'https://docs.quantcdn.io',
|
website: 'https://docs.quantcdn.io',
|
||||||
source: 'https://github.com/quantcdn/docs',
|
source: 'https://github.com/quantcdn/docs',
|
||||||
tags: ['opensource','product'],
|
tags: ['opensource', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'QuestDB',
|
title: 'QuestDB',
|
||||||
|
@ -991,7 +1011,8 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'React Complex Tree',
|
title: 'React Complex Tree',
|
||||||
description: 'Unopinionated Accessible React Tree Component with Multi-Select and Drag-And-Drop',
|
description:
|
||||||
|
'Unopinionated Accessible React Tree Component with Multi-Select and Drag-And-Drop',
|
||||||
preview: require('./showcase/react-complex-tree.png'),
|
preview: require('./showcase/react-complex-tree.png'),
|
||||||
website: 'https://rct.lukasbach.com/',
|
website: 'https://rct.lukasbach.com/',
|
||||||
source: 'https://github.com/lukasbach/react-complex-tree',
|
source: 'https://github.com/lukasbach/react-complex-tree',
|
||||||
|
@ -1056,18 +1077,21 @@ const Users: User[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'React Native Reanimated',
|
title: 'React Native Reanimated',
|
||||||
description: 'React Native\'s Animated library reimplemented',
|
description: "React Native's Animated library reimplemented",
|
||||||
preview: require('./showcase/react-native-reanimated.png'),
|
preview: require('./showcase/react-native-reanimated.png'),
|
||||||
website: 'https://docs.swmansion.com/react-native-reanimated/',
|
website: 'https://docs.swmansion.com/react-native-reanimated/',
|
||||||
source: 'https://github.com/software-mansion/react-native-reanimated/tree/master/docs',
|
source:
|
||||||
tags: ['opensource','design','versioning'],
|
'https://github.com/software-mansion/react-native-reanimated/tree/master/docs',
|
||||||
|
tags: ['opensource', 'design', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "React Native Render HTML",
|
title: 'React Native Render HTML',
|
||||||
description: "The hackable, full-featured Open Source HTML rendering solution for React Native.",
|
description:
|
||||||
|
'The hackable, full-featured Open Source HTML rendering solution for React Native.',
|
||||||
preview: require('./showcase/rnrh.png'),
|
preview: require('./showcase/rnrh.png'),
|
||||||
website: "https://meliorence.github.io/react-native-render-html",
|
website: 'https://meliorence.github.io/react-native-render-html',
|
||||||
source: "https://github.com/meliorence/react-native-render-html/tree/master/apps/website",
|
source:
|
||||||
|
'https://github.com/meliorence/react-native-render-html/tree/master/apps/website',
|
||||||
tags: ['opensource', 'design'],
|
tags: ['opensource', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1084,7 +1108,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/react-navigation.png'),
|
preview: require('./showcase/react-navigation.png'),
|
||||||
website: 'https://reactnavigation.org/',
|
website: 'https://reactnavigation.org/',
|
||||||
source: 'https://github.com/react-navigation/react-navigation.github.io',
|
source: 'https://github.com/react-navigation/react-navigation.github.io',
|
||||||
tags: ['opensource','design','versioning'],
|
tags: ['opensource', 'design', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'React Redux',
|
title: 'React Redux',
|
||||||
|
@ -1117,7 +1141,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/redis-developer.png'),
|
preview: require('./showcase/redis-developer.png'),
|
||||||
website: 'https://developer.redislabs.com',
|
website: 'https://developer.redislabs.com',
|
||||||
source: 'https://github.com/redis-developer/redis-developer.github.io',
|
source: 'https://github.com/redis-developer/redis-developer.github.io',
|
||||||
tags: ['opensource','product','design','favorite'],
|
tags: ['opensource', 'product', 'design', 'favorite'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Rematch',
|
title: 'Rematch',
|
||||||
|
@ -1134,7 +1158,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/relay.png'),
|
preview: require('./showcase/relay.png'),
|
||||||
website: 'https://relay.dev/',
|
website: 'https://relay.dev/',
|
||||||
source: 'https://github.com/facebook/relay/tree/main/website',
|
source: 'https://github.com/facebook/relay/tree/main/website',
|
||||||
tags: ['opensource','favorite','design','versioning'],
|
tags: ['opensource', 'favorite', 'design', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Remotion',
|
title: 'Remotion',
|
||||||
|
@ -1142,7 +1166,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/remotion.png'),
|
preview: require('./showcase/remotion.png'),
|
||||||
website: 'https://www.remotion.dev/',
|
website: 'https://www.remotion.dev/',
|
||||||
source: 'https://github.com/JonnyBurger/remotion/tree/main/packages/docs',
|
source: 'https://github.com/JonnyBurger/remotion/tree/main/packages/docs',
|
||||||
tags: ['opensource','product'],
|
tags: ['opensource', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Repeater.js',
|
title: 'Repeater.js',
|
||||||
|
@ -1177,7 +1201,7 @@ const Users: User[] = [
|
||||||
source: 'https://github.com/runletapp/website',
|
source: 'https://github.com/runletapp/website',
|
||||||
tags: ['opensource'],
|
tags: ['opensource'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Runiac',
|
title: 'Runiac',
|
||||||
description: 'Run IaC Anywhere with Ease',
|
description: 'Run IaC Anywhere with Ease',
|
||||||
preview: require('./showcase/runiac.png'),
|
preview: require('./showcase/runiac.png'),
|
||||||
|
@ -1215,7 +1239,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/smashgg.png'),
|
preview: require('./showcase/smashgg.png'),
|
||||||
website: 'https://developer.smash.gg',
|
website: 'https://developer.smash.gg',
|
||||||
source: 'https://github.com/smashgg/developer-portal',
|
source: 'https://github.com/smashgg/developer-portal',
|
||||||
tags: ['opensource','product'],
|
tags: ['opensource', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Shabad OS Docs',
|
title: 'Shabad OS Docs',
|
||||||
|
@ -1273,7 +1297,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/supabase.png'),
|
preview: require('./showcase/supabase.png'),
|
||||||
website: 'https://www.supabase.io/',
|
website: 'https://www.supabase.io/',
|
||||||
source: 'https://github.com/supabase/monorepo',
|
source: 'https://github.com/supabase/monorepo',
|
||||||
tags: ['opensource', 'favorite', 'design', 'large','product'],
|
tags: ['opensource', 'favorite', 'design', 'large', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'T-Regx',
|
title: 'T-Regx',
|
||||||
|
@ -1315,15 +1339,16 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/the-diff.png'),
|
preview: require('./showcase/the-diff.png'),
|
||||||
website: 'https://thediffpodcast.com',
|
website: 'https://thediffpodcast.com',
|
||||||
source: null,
|
source: null,
|
||||||
tags: [ 'facebook'],
|
tags: ['facebook'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Tinaël Devresse',
|
title: 'Tinaël Devresse',
|
||||||
description: 'Personal website of Tinaël Devresse, a blog about anything that crosses my mind which I think could interest y\'all.',
|
description:
|
||||||
|
"Personal website of Tinaël Devresse, a blog about anything that crosses my mind which I think could interest y'all.",
|
||||||
preview: require('./showcase/tinaeldevresse.png'),
|
preview: require('./showcase/tinaeldevresse.png'),
|
||||||
website: 'https://tinaeldevresse.eu/',
|
website: 'https://tinaeldevresse.eu/',
|
||||||
source: 'https://github.com/hunteroi/tinaeldevresse.eu',
|
source: 'https://github.com/hunteroi/tinaeldevresse.eu',
|
||||||
tags: ['personal', 'opensource', 'i18n']
|
tags: ['personal', 'opensource', 'i18n'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'TRPG Engine',
|
title: 'TRPG Engine',
|
||||||
|
@ -1390,7 +1415,7 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/webdriverio.png'),
|
preview: require('./showcase/webdriverio.png'),
|
||||||
website: 'https://webdriver.io/',
|
website: 'https://webdriver.io/',
|
||||||
source: 'https://github.com/webdriverio/webdriverio',
|
source: 'https://github.com/webdriverio/webdriverio',
|
||||||
tags: ['opensource', 'design', 'large','favorite'],
|
tags: ['opensource', 'design', 'large', 'favorite'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Wisdom',
|
title: 'Wisdom',
|
||||||
|
@ -1400,14 +1425,13 @@ const Users: User[] = [
|
||||||
source: 'https://github.com/Wisdom/dev-docs',
|
source: 'https://github.com/Wisdom/dev-docs',
|
||||||
tags: ['opensource', 'design', 'product'],
|
tags: ['opensource', 'design', 'product'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Whirl',
|
title: 'Whirl',
|
||||||
description:
|
description: "Whirl's Personal Website and Blog",
|
||||||
'Whirl\'s Personal Website and Blog',
|
|
||||||
preview: require('./showcase/whirlcodes.png'),
|
preview: require('./showcase/whirlcodes.png'),
|
||||||
website: 'https://whirl.codes',
|
website: 'https://whirl.codes',
|
||||||
source: 'https://github.com/whirl21/website',
|
source: 'https://github.com/whirl21/website',
|
||||||
tags: ['opensource', 'personal']
|
tags: ['opensource', 'personal'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'KubeVela',
|
title: 'KubeVela',
|
||||||
|
@ -1432,31 +1456,34 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/joelpo.png'),
|
preview: require('./showcase/joelpo.png'),
|
||||||
website: 'https://joelpo.github.io',
|
website: 'https://joelpo.github.io',
|
||||||
source: 'https://github.com/Joelpo/joelpo.github.io',
|
source: 'https://github.com/Joelpo/joelpo.github.io',
|
||||||
tags: ['personal', 'opensource']
|
tags: ['personal', 'opensource'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'LiveKit',
|
title: 'LiveKit',
|
||||||
description: 'Open source, scalable, real-time audio and video rooms over WebRTC',
|
description:
|
||||||
|
'Open source, scalable, real-time audio and video rooms over WebRTC',
|
||||||
preview: require('./showcase/livekit.png'),
|
preview: require('./showcase/livekit.png'),
|
||||||
website: 'https://docs.livekit.io',
|
website: 'https://docs.livekit.io',
|
||||||
source: 'https://github.com/livekit/livekit-docs',
|
source: 'https://github.com/livekit/livekit-docs',
|
||||||
tags: ['opensource', 'product', 'design']
|
tags: ['opensource', 'product', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Zowe',
|
title: 'Zowe',
|
||||||
description: 'Open source framework for leveraging data and applications in z/OS',
|
description:
|
||||||
|
'Open source framework for leveraging data and applications in z/OS',
|
||||||
preview: require('./showcase/zowe.png'),
|
preview: require('./showcase/zowe.png'),
|
||||||
website: 'https://docs.zowe.org',
|
website: 'https://docs.zowe.org',
|
||||||
source: 'https://github.com/zowe/docs-site',
|
source: 'https://github.com/zowe/docs-site',
|
||||||
tags: ['opensource', 'product', 'large', 'design', 'versioning']
|
tags: ['opensource', 'product', 'large', 'design', 'versioning'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Quickwit',
|
title: 'Quickwit',
|
||||||
description: 'The open source search engine on object storage with subsecond latency',
|
description:
|
||||||
|
'The open source search engine on object storage with subsecond latency',
|
||||||
preview: require('./showcase/quickwit.png'),
|
preview: require('./showcase/quickwit.png'),
|
||||||
website: 'https://quickwit.io',
|
website: 'https://quickwit.io',
|
||||||
source: 'https://github.com/quickwit-inc/quickwit',
|
source: 'https://github.com/quickwit-inc/quickwit',
|
||||||
tags: ['favorite', 'opensource', 'design']
|
tags: ['favorite', 'opensource', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Verdaccio',
|
title: 'Verdaccio',
|
||||||
|
@ -1464,23 +1491,25 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/verdaccio.png'),
|
preview: require('./showcase/verdaccio.png'),
|
||||||
website: 'https://verdaccio.org',
|
website: 'https://verdaccio.org',
|
||||||
source: 'https://github.com/verdaccio/verdaccio',
|
source: 'https://github.com/verdaccio/verdaccio',
|
||||||
tags: ['favorite', 'opensource', 'large', 'i18n', 'design' ]
|
tags: ['favorite', 'opensource', 'large', 'i18n', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Unmand',
|
title: 'Unmand',
|
||||||
description: 'A business automation platform that liberates users from repetitive tasks.',
|
description:
|
||||||
|
'A business automation platform that liberates users from repetitive tasks.',
|
||||||
preview: require('./showcase/unmand.png'),
|
preview: require('./showcase/unmand.png'),
|
||||||
website: 'https://unmand.com',
|
website: 'https://unmand.com',
|
||||||
source: null,
|
source: null,
|
||||||
tags: ['product', 'design']
|
tags: ['product', 'design'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Haochen',
|
title: 'Haochen',
|
||||||
description: 'My personal website with a blog section to record all tech-related issues I encountered.',
|
description:
|
||||||
|
'My personal website with a blog section to record all tech-related issues I encountered.',
|
||||||
preview: require('./showcase/haochen.png'),
|
preview: require('./showcase/haochen.png'),
|
||||||
website: 'https://haochenqi.com/',
|
website: 'https://haochenqi.com/',
|
||||||
source: 'https://github.com/HaochenQ/Haochen-Blog',
|
source: 'https://github.com/HaochenQ/Haochen-Blog',
|
||||||
tags: ['personal', 'opensource']
|
tags: ['personal', 'opensource'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Drayman',
|
title: 'Drayman',
|
||||||
|
@ -1488,15 +1517,16 @@ const Users: User[] = [
|
||||||
preview: require('./showcase/drayman.png'),
|
preview: require('./showcase/drayman.png'),
|
||||||
website: 'https://drayman.io/',
|
website: 'https://drayman.io/',
|
||||||
source: 'https://github.com/Claviz/drayman',
|
source: 'https://github.com/Claviz/drayman',
|
||||||
tags: ['opensource']
|
tags: ['opensource'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Nocalhost',
|
title: 'Nocalhost',
|
||||||
description: 'An open-source toolsets help to build cloud-native applications easier and faster.',
|
description:
|
||||||
|
'An open-source toolsets help to build cloud-native applications easier and faster.',
|
||||||
preview: require('./showcase/nocalhost.png'),
|
preview: require('./showcase/nocalhost.png'),
|
||||||
website: 'https://nocalhost.dev/',
|
website: 'https://nocalhost.dev/',
|
||||||
source: 'https://github.com/nocalhost/nocalhost',
|
source: 'https://github.com/nocalhost/nocalhost',
|
||||||
tags: ['opensource', 'i18n']
|
tags: ['opensource', 'i18n'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Patrik Mäsiar',
|
title: 'Patrik Mäsiar',
|
||||||
|
@ -1507,7 +1537,6 @@ const Users: User[] = [
|
||||||
tags: ['personal', 'opensource'],
|
tags: ['personal', 'opensource'],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Pro Tip: add your site in alphabetical order.
|
Pro Tip: add your site in alphabetical order.
|
||||||
Appending your site here (at the end) is more likely to produce Git conflicts.
|
Appending your site here (at the end) is more likely to produce Git conflicts.
|
||||||
|
|
|
@ -14,10 +14,11 @@ import styles from './styles.module.css';
|
||||||
|
|
||||||
const BOARD_TOKEN = '054e0e53-d951-b14c-7e74-9eb8f9ed2f91';
|
const BOARD_TOKEN = '054e0e53-d951-b14c-7e74-9eb8f9ed2f91';
|
||||||
|
|
||||||
function FeatureRequests() {
|
function FeatureRequests(): JSX.Element {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
cannyScript();
|
cannyScript();
|
||||||
const Canny = (window as any).Canny;
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
const {Canny} = window as any;
|
||||||
Canny('render', {
|
Canny('render', {
|
||||||
boardToken: BOARD_TOKEN,
|
boardToken: BOARD_TOKEN,
|
||||||
basePath: '/feature-requests',
|
basePath: '/feature-requests',
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
/**
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Provided by Canny.
|
// Provided by Canny.
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
function cannyScript() {
|
function cannyScript() {
|
||||||
!(function (w, d, i, s) {
|
!(function (w, d, i, s) {
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
* LICENSE file in the root directory of this source tree.
|
* LICENSE file in the root directory of this source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Link from '@docusaurus/Link';
|
import Link from '@docusaurus/Link';
|
||||||
import Translate, {translate} from '@docusaurus/Translate';
|
import Translate, {translate} from '@docusaurus/Translate';
|
||||||
|
@ -78,7 +80,7 @@ const QUOTES = [
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
function Home() {
|
function Home(): JSX.Element {
|
||||||
const {
|
const {
|
||||||
siteConfig: {
|
siteConfig: {
|
||||||
customFields: {description},
|
customFields: {description},
|
||||||
|
@ -98,6 +100,7 @@ function Home() {
|
||||||
/>
|
/>
|
||||||
<span
|
<span
|
||||||
className={styles.heroTitleTextHtml}
|
className={styles.heroTitleTextHtml}
|
||||||
|
// eslint-disable-next-line react/no-danger
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: translate({
|
__html: translate({
|
||||||
id: 'homepage.hero.title',
|
id: 'homepage.hero.title',
|
||||||
|
@ -162,11 +165,11 @@ function Home() {
|
||||||
</h2>
|
</h2>
|
||||||
<p className="padding-horiz--md">
|
<p className="padding-horiz--md">
|
||||||
<Translate>
|
<Translate>
|
||||||
Save time and focus on your project's documentation. Simply
|
Save time and focus on your project's documentation.
|
||||||
write docs and blog posts with Markdown/MDX and Docusaurus
|
Simply write docs and blog posts with Markdown/MDX and
|
||||||
will publish a set of static HTML files ready to serve. You
|
Docusaurus will publish a set of static HTML files ready to
|
||||||
can even embed JSX components into your Markdown thanks to
|
serve. You can even embed JSX components into your Markdown
|
||||||
MDX.
|
thanks to MDX.
|
||||||
</Translate>
|
</Translate>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -181,9 +184,9 @@ function Home() {
|
||||||
</h2>
|
</h2>
|
||||||
<p className="padding-horiz--md">
|
<p className="padding-horiz--md">
|
||||||
<Translate>
|
<Translate>
|
||||||
Extend or customize your project's layout by reusing React.
|
Extend or customize your project's layout by reusing
|
||||||
Docusaurus can be extended while reusing the same header and
|
React. Docusaurus can be extended while reusing the same
|
||||||
footer.
|
header and footer.
|
||||||
</Translate>
|
</Translate>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -105,9 +105,10 @@ function ShowcaseHeader() {
|
||||||
<p>{DESCRIPTION}</p>
|
<p>{DESCRIPTION}</p>
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
className={'button button--primary'}
|
className="button button--primary"
|
||||||
href={EDIT_URL}
|
href={EDIT_URL}
|
||||||
target={'_blank'}>
|
target="_blank"
|
||||||
|
rel="noreferrer">
|
||||||
🙏 Add your site now!
|
🙏 Add your site now!
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -195,7 +196,7 @@ function ShowcaseCards({filteredUsers}: {filteredUsers: User[]}) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Showcase() {
|
function Showcase(): JSX.Element {
|
||||||
const {selectedTags, toggleTag} = useSelectedTags();
|
const {selectedTags, toggleTag} = useSelectedTags();
|
||||||
const [operator, setOperator] = useState<Operator>('OR');
|
const [operator, setOperator] = useState<Operator>('OR');
|
||||||
const filteredUsers = useFilteredUsers(SortedUsers, selectedTags, operator);
|
const filteredUsers = useFilteredUsers(SortedUsers, selectedTags, operator);
|
||||||
|
|
|
@ -16,7 +16,7 @@ import VersionsArchived from '@site/versionsArchived.json';
|
||||||
|
|
||||||
const VersionsArchivedList = Object.entries(VersionsArchived);
|
const VersionsArchivedList = Object.entries(VersionsArchived);
|
||||||
|
|
||||||
function Version() {
|
function Version(): JSX.Element {
|
||||||
const {
|
const {
|
||||||
siteConfig: {organizationName, projectName},
|
siteConfig: {organizationName, projectName},
|
||||||
} = useDocusaurusContext();
|
} = useDocusaurusContext();
|
||||||
|
@ -128,7 +128,9 @@ function Version() {
|
||||||
<tr>
|
<tr>
|
||||||
<th>1.x</th>
|
<th>1.x</th>
|
||||||
<td>
|
<td>
|
||||||
<a href={`https://v1.docusaurus.io/docs/en/installation`}>
|
<a
|
||||||
|
href="https://v1.docusaurus.io/docs/en/installation"
|
||||||
|
rel="noreferrer">
|
||||||
Documentation
|
Documentation
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
import React, {ComponentProps} from 'react';
|
import React, {ComponentProps} from 'react';
|
||||||
|
|
||||||
export const ButtonExample = (props: ComponentProps<'button'>) => (
|
export const ButtonExample = (props: ComponentProps<'button'>): JSX.Element => (
|
||||||
<button
|
<button
|
||||||
|
type="button"
|
||||||
{...props}
|
{...props}
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: 'white',
|
backgroundColor: 'white',
|
||||||
|
|
7
website/src/types.d.ts
vendored
7
website/src/types.d.ts
vendored
|
@ -1 +1,8 @@
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
/// <reference types="@docusaurus/plugin-ideal-image" />
|
/// <reference types="@docusaurus/plugin-ideal-image" />
|
||||||
|
|
|
@ -1,21 +1,26 @@
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
// Inspired by https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_difference
|
// Inspired by https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_difference
|
||||||
export function difference<T>(...arrays: T[][]) {
|
export function difference<T>(...arrays: T[][]): T[] {
|
||||||
return arrays.reduce((a, b) => a.filter((c) => !b.includes(c)));
|
return arrays.reduce((a, b) => a.filter((c) => !b.includes(c)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inspired by https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_sortby-and-_orderby
|
// Inspired by https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_sortby-and-_orderby
|
||||||
export function sortBy<T>(array: T[], getter: (item: T) => unknown) {
|
export function sortBy<T>(array: T[], getter: (item: T) => unknown): T[] {
|
||||||
function compareBy(getter: (item: T) => unknown) {
|
|
||||||
return (a: T, b: T) =>
|
|
||||||
getter(a) > getter(b) ? 1 : getter(b) > getter(a) ? -1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const sortedArray = [...array];
|
const sortedArray = [...array];
|
||||||
sortedArray.sort(compareBy(getter));
|
sortedArray.sort((a, b) =>
|
||||||
|
// eslint-disable-next-line no-nested-ternary
|
||||||
|
getter(a) > getter(b) ? 1 : getter(b) > getter(a) ? -1 : 0,
|
||||||
|
);
|
||||||
return sortedArray;
|
return sortedArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toggleListItem<T>(list: T[], item: T) {
|
export function toggleListItem<T>(list: T[], item: T): T[] {
|
||||||
const itemIndex = list.indexOf(item);
|
const itemIndex = list.indexOf(item);
|
||||||
if (itemIndex === -1) {
|
if (itemIndex === -1) {
|
||||||
return list.concat(item);
|
return list.concat(item);
|
||||||
|
|
|
@ -39,6 +39,7 @@ async function hasBuildInProgress() {
|
||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
const timeBefore = Date.now();
|
const timeBefore = Date.now();
|
||||||
|
// eslint-disable-next-line no-constant-condition
|
||||||
while (true) {
|
while (true) {
|
||||||
if (Date.now() - timeBefore > timeout) {
|
if (Date.now() - timeBefore > timeout) {
|
||||||
console.warn(
|
console.warn(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue