docs: replace jekyll with docusaurus

- jsnon5 not handled by pre-commit

Co-authored-by: Zachary Klosko <zklosko@users.noreply.github.com>
This commit is contained in:
jo 2022-02-09 08:01:07 +01:00 committed by Jonas L
parent 9eab3b8d17
commit 8d8e55f236
42 changed files with 8428 additions and 4263 deletions

149
website/.gitignore vendored Normal file
View file

@ -0,0 +1,149 @@
## Custom .gitignore
################################################################################
# production
/build
# generated files
.cache-loader
# misc
.env.local
.env.development.local
.env.test.local
.env.production.local
## Github Node .gitignore
## See https://github.com/github/gitignore/blob/main/Node.gitignore
################################################################################
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

25
website/README.md Normal file
View file

@ -0,0 +1,25 @@
# 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.

3
website/babel.config.js Normal file
View file

@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve("@docusaurus/core/lib/babel/preset")],
};

View file

@ -0,0 +1,108 @@
// @ts-check
// Note: type annotations allow type checking and IDEs autocompletion
const lightCodeTheme = require("prism-react-renderer/themes/github");
const darkCodeTheme = require("prism-react-renderer/themes/dracula");
/** @type {import('@docusaurus/types').Config} */
const config = {
title: "Libretime",
tagline: "Broadcast without limits",
url: "https://libretime.org",
baseUrl: "/",
onBrokenLinks: "throw",
onBrokenMarkdownLinks: "throw",
favicon: "img/favicon.ico",
organizationName: "libretime",
projectName: "libretime",
trailingSlash: true,
plugins: [
[
require.resolve("@cmfcmf/docusaurus-search-local"),
{
indexBlog: false,
indexPages: false,
},
],
],
i18n: {
defaultLocale: "en",
locales: ["en"],
},
presets: [
[
"classic",
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
path: "../docs",
sidebarPath: require.resolve("./sidebars.js"),
editUrl: "https://github.com/libretime/libretime",
},
blog: false,
theme: {
customCss: require.resolve("./src/css/custom.css"),
},
}),
],
],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
navbar: {
title: "Libretime",
logo: {
alt: "Libretime tower",
src: "img/logo.svg",
},
items: [
{ to: "/contribute", label: "Contribute", position: "left" },
{ type: "localeDropdown", position: "right" },
{
href: "https://github.com/libretime/libretime",
label: "GitHub",
position: "right",
},
],
},
footer: {
style: "dark",
links: [
{
title: "Community",
items: [
{
label: "Discourse",
href: "https://discourse.libretime.org",
},
{
label: "Mattermost",
href: "https://chat.libretime.org",
},
],
},
{
title: "More",
items: [
{
label: "GitHub",
href: "https://github.com/libretime/libretime",
},
],
},
],
copyright: `Code licensed under AGPLv3; docs licensed under GPLv2.`,
},
prism: {
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
additionalLanguages: ["apacheconf", "ini"],
},
}),
};
module.exports = config;

45
website/package.json Normal file
View file

@ -0,0 +1,45 @@
{
"name": "website",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"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": {
"@cmfcmf/docusaurus-search-local": "^0.10.0",
"@docusaurus/core": "^2.0.0-beta.15",
"@docusaurus/preset-classic": "^2.0.0-beta.15",
"@mdx-js/react": "^1.6.21",
"clsx": "^1.1.1",
"prism-react-renderer": "^1.3.1",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "2.0.0-beta.15",
"@tsconfig/docusaurus": "^1.0.4",
"@types/node": "^17.0.16",
"typescript": "^4.5.5"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

31
website/sidebars.js Normal file
View file

@ -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;

View file

@ -0,0 +1,11 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureSvg {
height: 200px;
width: 200px;
}

View file

@ -0,0 +1,75 @@
import useBaseUrl from "@docusaurus/useBaseUrl";
import React from "react";
import clsx from "clsx";
import styles from "./HomepageFeatures.module.css";
type FeatureItem = {
title: string;
image: string;
description: JSX.Element;
};
const FeatureList: FeatureItem[] = [
{
title: "Easy to Use",
image: "/img/undraw_happy_news.svg",
description: (
<>
Libretime was designed from the ground up to be easily installed and
used to get your radio station on the air quickly.
</>
),
},
{
title: "Powerful Library Management",
image: "/img/undraw_upload.svg",
description: (
<>
Import everything from music to sweepers to full-length programs, then
have shows and podcasts scheduled automatically.
</>
),
},
{
title: "AM/FM & Web",
image: "/img/undraw_podcast.svg",
description: (
<>
Audio playout to your broadcasting console or transmitter, or start an
internet radio station directly from the cloud. Libretime can do it all.
</>
),
},
];
function Feature({ title, image, description }: FeatureItem) {
return (
<div className={clsx("col col--4")}>
<div className="text--center">
<img
className={styles.featureSvg}
alt={title}
src={useBaseUrl(image)}
/>
</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>
);
}

View file

@ -0,0 +1,39 @@
/**
* 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: #ee4b28;
--ifm-color-primary-dark: #e83812;
--ifm-color-primary-darker: #db3511;
--ifm-color-primary-darkest: #b42c0e;
--ifm-color-primary-light: #f06142;
--ifm-color-primary-lighter: #f16b4f;
--ifm-color-primary-lightest: #f48c75;
--ifm-code-font-size: 95%;
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
html[data-theme="dark"] {
--ifm-color-primary: #e57962;
--ifm-color-primary-dark: #e06146;
--ifm-color-primary-darker: #de5538;
--ifm-color-primary-darkest: #c43d21;
--ifm-color-primary-light: #ea917e;
--ifm-color-primary-lighter: #ec9d8c;
--ifm-color-primary-lightest: #f3c1b6;
}
.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);
}
html[data-theme="dark"] .docusaurus-highlight-code-line {
background-color: rgba(0, 0, 0, 0.3);
}

View file

@ -0,0 +1,87 @@
---
title: Contribute to Libretime
---
# Contribute to Libretime
LibreTime is a fork of AirTime due to stalled development of the open source version. For background on this, see this [open letter to the Airtime community](https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d).
## Code of conduct
Before any contribution, read and be prepared to adhere to our
[code of conduct](https://github.com/libretime/code-of-conduct/blob/main/code_of_conduct.md).
In addition, LibreTime follow the standardized
[C4 development process](https://rfc.zeromq.org/spec:42/c4/), in which you can
find explanation about most of the development workflows for LibreTime.
## Bug reporting
Following these guidelines helps maintainers and the community understand your
report, reproduce the behavior, and find related reports.
Before creating bug reports, please check the following list, to be sure that
you need to create one:
- Check the [LibreTime forum](https://discourse.libretime.org/) for existing
questions and discussion.
- Check that your issue does not already exist in the
[issue tracker](https://github.com/libretime/libretime/issues?q=is%3aissue+label%3abug).
:::note
If you find a closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
:::
When you are creating a bug report, please include as many details as possible.
Fill out the [required template](https://github.com/libretime/libretime/issues/new?labels=bug&template=bug_report.md),
the information it asks helps the maintainers resolve the issue faster.
Bugs are tracked on the [official issue tracker](https://github.com/libretime/libretime/issues).
## Suggesting enhancements
This section guides you through submitting an enhancement suggestion for
LibreTime, including completely new features and minor improvements to existing
functionality. Following these guidelines helps maintainers and the community
understand your suggestion and find related suggestions.
Before creating enhancement suggestions, please check the following list, as you
might find out that you don't need to create one:
- **Check the [LibreTime forum](https://discourse.libretime.org/)** for existing
questions and discussion.
- **Check that your issue does not already exist in the
[issue tracker](https://github.com/libretime/libretime/issues?q=is%3aissue+label%3afeature-request)**.
When you are creating an enhancement suggestion, please include as many details
as possible. Fill in [the template](https://github.com/libretime/libretime/issues/new?labels=feature-request&template=feature_request.md),
including the steps that you imagine you would take if the feature you're
requesting existed.
## Financial
LibreTime is run by volunteers who write code and manage the project in their
spare time. Financial contributions help us pay for our domain and back-end
infrastructure. It can also be used to cover the costs of development for
important features and conference attendance. If you wish to contribute
financially, you can do so through our
[OpenCollective](https://opencollective.com/libretime).
## Translation
LibreTime can run in over 15 different languages due to the gracious help of our volunteers.
Libretime is now localized using [Weblate](https://weblate.org/en/). If you would like to contribute a language translation, create an account and start working on [our Weblate page](https://hosted.weblate.org/projects/libretime/).
## Write documentation
One of the simplest ways to get started contributing to a project is through
improving documentation. LibreTime is constantly evolving, this means that
sometimes our documentation has gaps. You can help by adding missing sections,
editing the existing content so it is more accessible or creating new content
(tutorials, FAQs, etc).
Issues pertaining to the documentation are usually marked with the [Documentation](https://github.com/libretime/libretime/labels/documentation)
label.

View file

@ -0,0 +1,28 @@
/**
* 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;
}
@media screen and (max-width: 966px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}
.buttonPadding {
margin-left: 0.25rem !important;
margin-right: 0.25rem !important;
}

View file

@ -0,0 +1,52 @@
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 "../components/HomepageFeatures";
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={clsx(
"button button--secondary button--lg",
styles.buttonPadding
)}
to="/docs/intro"
>
Get started 🚀
</Link>
<Link
className={clsx(
"button button--secondary button--lg",
styles.buttonPadding
)}
to="/release-notes"
>
Release Notes
</Link>
</div>
</div>
</header>
);
}
export default function Home(): JSX.Element {
const { siteConfig } = useDocusaurusContext();
return (
<Layout title={siteConfig.title} description={siteConfig.tagline}>
<HomepageHeader />
<main>
<HomepageFeatures />
</main>
</Layout>
);
}

View file

@ -0,0 +1,159 @@
---
title: Libretime 3.0 Alpha 10 Released
---
# Release Notes for Libretime 3.0 Alpha 10
The full tarball for the **3.0.0-alpha.10** release of LibreTime is available [here](https://github.com/LibreTime/libretime/releases/download/3.0.0-alpha.10/libretime-3.0.0-alpha.10.tar.gz).
Since this is an alpha release there will be bugs in the code.
Please report new issues and/or feature requests in the [issue tracker](https://github.com/LibreTime/libretime/issues). Join our [discourse](https://discourse.libretime.org/) or chat to us on our [Mattermost](https://chat.libretime.org/e) instance if you need help and for general discussion.
## Features
- Support `force_ssl` configuration option in Python applications
- Move `airtime_mvc` to `legacy` and move all PHP related files under it
- Support `Authorization: Api-Key` header in API v1
- Use pip for LibreTime Python package installation
- Move Python scripts into `/usr/local/bin`
- Add REST API v2 (unstable and subject to change)
## Bug Fixes
- Renamed airtime_analyzer to libretime-analyzer
- Prevent autoload playlists running on deleted show instances
- Playout history can be exported as CSV and PDF
- Explicitly fail if the HTTP requests made by the Python applications fail
- Fix API v2 schedule endpoint item filtering and overlapping playout
- Fix pypo overlapping track playout
- Fix installation when Icecast is already installed
- Request 1Gb of memory on libvirt Vagrant boxes
- Clean up CORS setup in the installer
- Pin the `setuptools` version to ensure older versions of LibreTime can still be installed
## Deprecated Features
- Removed broken Soundcloud integration
- Dropped support for Ubuntu Xenial as it is end-of-life
- Dropped support for Debian Stretch as it is end-of-life
- Removed SysV and Upstart init system files
- Removed broken My Podcasts feature
## Contributors
The LibreTime project wants to thank the following contributors for authoring PRs to this release:
- [@jooola](https://github.com/jooola)
- [@paddatrapper](https://github.com/paddatrapper)
- [@xabispacebiker](https://github.com/xabispacebiker)
- [@malespiaut](https://github.com/malespiaut)
- [@zklosko](https://zklosko.github.io)
- [@brekemeier](https://github.com/brekemeier)
- [@jeromelebleu](https://github.com/jeromelebleu)
- [@danielhjames](https://github.com/danielhjames)
- [@rjhelms](https://github.com/rjhelms)
- [@hairmare](https://github.com/hairmare)
## Installation
The main installation docs may be found [here](/docs/getting-started/install/). They describe a "developer" install using the bundled `install` script.
We are preparing packages for supported distros and you can take those for a spin if you would like to. Usually the packages get built pretty soon after a release is published. If the current version is not available from the below sources you should wait for a while until they get uploaded.
- [Ubuntu packages](https://github.com/LibreTime/libretime-debian-packaging/releases)
- [Debian packages](https://github.com/LibreTime/libretime-debian-packaging/releases)
- [CentOS packages](https://build.opensuse.org/package/show/home:radiorabe:airtime/libretime)
Please reference these links for further information on how to install from packages. The install docs will get updated to show how to install packages once we have validated that the packages work properly and when the packages are available from a repository allowing you to automate updating to a new version.
If you want to skip the installer GUI completely you can configure LibreTime using `legacy/build/airtime.example.conf` as an template. Due to some Python/PHP differences you must remove all comments from the example to use it 😞. You'll also have to create some folder structures manually and check if the music dir got properly created directly in the database. Referencing a second install -fiap install on a non productive system for reference can help with this type of bootstrap.
## Updating
See [the docs](/docs/upgrading) for complete information on updating. Please ensure that you have proper backups and a rollback scenario in place before updating.
If the update does not go smoothly, it may cause significant downtime, so you should always have a fallback system available during the update to ensure broadcast continuity.
If you installed from GitHub you can `git pull` in your local working copy and re-run the `./install` script with the same `--web-root` and `--web-user` arguments you used during the initial install. Tarball users can leave out the git pull part and just call the new version of the install script.
Once the update has taken place, you will need to run the following commands to clean up old scripts and configuration:
```shell
# Remove the old packages
sudo pip3 uninstall \
airtime-playout \
airtime-celery \
api_clients
# Remove old entrypoints
sudo rm -f \
/usr/bin/airtime-liquidsoap \
/usr/bin/airtime-playout \
/usr/bin/pyponotify
# Remove old config files
sudo rm -f \
/etc/logrotate.d/airtime-liquidsoap
# Remove the old runtime and PHP directories
sudo rm -rf \
/var/run/airtime \
/run/airtime \
/usr/share/airtime/php/airtime_mvc
# Remove old python libraries entrypoints
sudo rm -f \
/usr/bin/airtime-liquidsoap \
/usr/bin/airtime-playout \
/usr/bin/libretime-analyzer \
/usr/bin/libretime-api \
/usr/bin/collectiongain \
/usr/bin/django-admin \
/usr/bin/django-admin.py \
/usr/bin/markdown_py \
/usr/bin/mid3cp \
/usr/bin/mid3iconv \
/usr/bin/mid3v2 \
/usr/bin/moggsplit \
/usr/bin/mutagen-inspect \
/usr/bin/mutagen-pony \
/usr/bin/pyponotify \
/usr/bin/replaygain \
/usr/bin/sqlformat
```
## Known Issues
The following issues may need a workaround for the time being. Please search [the issues](https://github.com/LibreTime/libretime/issues) before reporting problems not listed below.
### Interface Customization Issues
The UI works best if you don't use it in an opinionated fashion and change just the bare minimal.
### No watched folder support
Currently LibreTime does not support watching folders. Uploading files through the web interface works fine and can be automated via a REST API. Re-implementing watched folder support is on the roadmap. Please consider helping out with the code to help speed things along if you want to use the feature. This is tracked in [#70](https://github.com/LibreTime/libretime/issues/70).
### No line in support
This feature went missing from LibreTime due to the fact that we based our code off of the saas-dev branch of legacy upstream and support for recording hasn't been ported to the new airtime analyzer ingest system. #42 currently tracks the progress being made on line in recording. This is tracked in [#42](https://github.com/LibreTime/libretime/issues/42).
### Playout won't work if locale is missing
Some minimal OS installs do not have a default locale configured. This only seems to affect some VPS installs as they often do not have a locale setup in the default images provided. This is tracked in [#317](https://github.com/LibreTime/libretime/issues/317).
You can set up the locale using a combination of the following commands. You might also want to consult the documentation of your VPS provider as it may contain an official way to set up locales when provisioning a VPS.
```shell
# Set locale using systemds localectl
localectl set-locale LANG="en_US.utf8"
```
These instructions do not seem to work on all Debian based distros so you might need to use update-locale as follows.
```shell
#Purge all locales but en_US.UTF-8
sudo locale-gen --purge en_US.UTF-8
#Populate LANGUAGE=
sudo update-locale LANGUAGE="en_US.UTF-8"
```

0
website/static/.nojekyll Normal file
View file

1
website/static/CNAME Normal file
View file

@ -0,0 +1 @@
libretime.org

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View file

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="163.839" height="127.68" viewBox="0 0 4335 3378" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd">
<defs>
<style>
.fil2{fill:#e62129}
</style>
</defs>
<g id="Layer_x0020_1">
<g id="_986080032">
<path d="M3469 230 3701-2c393 393 635 935 635 1533 0 599-242 1141-635 1534l-232-232c333-333 539-793 539-1302 0-508-206-968-539-1301z" fill="none" />
<path d="M2167 614c225 0 431 81 590 215l-233 233c-99-75-223-120-357-120-133 0-257 45-356 120l-233-233c159-134 365-215 589-215zm141 1824 111 942h-504l112-942c-169-26-323-98-449-204l233-233c85 64 187 106 299 117v-117h-57c-70 0-127-58-127-128v-546c0-70 57-128 127-128h229c70 0 127 58 127 128v546c0 70-57 128-127 128h-57v117c112-11 214-53 299-117l233 233c-126 106-280 178-449 204zm8-1171c27 0 49 21 49 48s-22 49-49 49c-26 0-48-22-48-49s22-48 48-48zm-126 15c19 0 34 15 34 33 0 19-15 33-34 33-18 0-33-14-33-33 0-18 15-33 33-33zm-105 5c15 0 28 13 28 28 0 16-13 28-28 28-16 0-28-12-28-28 0-15 12-28 28-28zm-94 7c12 0 21 9 21 21s-9 21-21 21-21-9-21-21 9-21 21-21zm325 115c27 0 49 22 49 49 0 26-22 48-49 48-26 0-48-22-48-48 0-27 22-49 48-49zm-126 15c19 0 34 15 34 34 0 18-15 33-34 33-18 0-33-15-33-33 0-19 15-34 33-34zm-105 6c15 0 28 12 28 28 0 15-13 28-28 28-16 0-28-13-28-28 0-16 12-28 28-28zm-94 6c12 0 21 10 21 22 0 11-9 21-21 21s-21-10-21-21c0-12 9-22 21-22zm325 115c27 0 49 22 49 49s-22 49-49 49c-26 0-48-22-48-49s22-49 48-49zm-126 16c19 0 34 15 34 33s-15 33-34 33c-18 0-33-15-33-33s15-33 33-33zm-105 5c15 0 28 13 28 28 0 16-13 28-28 28-16 0-28-12-28-28 0-15 12-28 28-28zm-94 7c12 0 21 9 21 21s-9 21-21 21-21-9-21-21 9-21 21-21zm325 115c27 0 49 22 49 48 0 27-22 49-49 49-26 0-48-22-48-49 0-26 22-48 48-48zm-126 15c19 0 34 15 34 33 0 19-15 34-34 34-18 0-33-15-33-34 0-18 15-33 33-33zm-105 5c15 0 28 13 28 28 0 16-13 29-28 29-16 0-28-13-28-29 0-15 12-28 28-28zm-94 7c12 0 21 10 21 21 0 12-9 22-21 22s-21-10-21-22c0-11 9-21 21-21zm325 115c27 0 49 22 49 49s-22 49-49 49c-26 0-48-22-48-49s22-49 48-49zm-126 16c19 0 34 15 34 33s-15 33-34 33c-18 0-33-15-33-33s15-33 33-33zm-105 5c15 0 28 12 28 28 0 15-13 28-28 28-16 0-28-13-28-28 0-16 12-28 28-28zm-94 7c12 0 21 9 21 21s-9 21-21 21-21-9-21-21 9-21 21-21zm-240-749c-107 106-173 254-173 416 0 163 66 310 173 417l-232 232c-166-166-269-395-269-649 0-253 103-482 269-648l232 232zm1065-232c166 166 269 395 269 648 0 254-103 483-269 649l-232-232c107-107 173-254 173-417 0-162-66-310-173-416l232-232z" fill="#474443" />
<path class="fil2" d="M1308 2390c-220-220-356-523-356-859 0-335 136-639 356-859l-232-232c-279 280-452 665-452 1091s173 812 452 1091l232-232zM3027 672c220 220 355 524 355 859 0 336-135 639-355 859l232 232c279-279 452-665 452-1091s-173-811-452-1091l-232 232z" />
<path class="fil2" d="M866 2833c-333-333-539-793-539-1302 0-508 206-968 539-1301L634-2C241 391-1 933-1 1531c0 599 242 1141 635 1534l232-232zM3469 230c333 333 539 793 539 1301 0 509-206 969-539 1302l232 232c393-393 635-935 635-1534 0-598-242-1140-635-1533l-232 232z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

6
website/tsconfig.json Normal file
View file

@ -0,0 +1,6 @@
{
"extends": "@tsconfig/docusaurus/tsconfig.json",
"compilerOptions": {
"baseUrl": "."
}
}

7799
website/yarn.lock Normal file

File diff suppressed because it is too large Load diff