Skip to content

admin/dorfarchiv

PublicMirror

Mirror of https://forge.levinkeller.de/levin/dorfarchiv.git

Initial commit

Levin Keller authored root commitcommit 140869e5f8f8800ceb90c04a2f58ab0a1065b01aBrowse files

Showing 49 changed files with 4182 additions and 0 deletions.

Added.devcontainer/devcontainer.json+39 -0
@@ -0,0 +1,39 @@
1added: {
2added: "name": "Node.js & TypeScript",
3added: "image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm",
4added: "features": {
5added: "ghcr.io/devcontainers/features/common-utils:2": {},
6added: "ghcr.io/devcontainers/features/docker-in-docker:2": {}
7added: },
8added: "postCreateCommand": "npm install",
9added: "customizations": {
10added: "vscode": {
11added: "extensions": [
12added: "unifiedjs.vscode-mdx",
13added: "streetsidesoftware.code-spell-checker",
14added: "streetsidesoftware.code-spell-checker-german",
15added: "tomoki1207.pdf",
16added: "DavidAnson.vscode-markdownlint",
17added: "biomejs.biome"
18added: ],
19added: "settings": {
20added: "terminal.integrated.defaultProfile.linux": "zsh",
21added: "cSpell.language": "de-DE",
22added: "cSpell.words": [
23added: "Barnten",
24added: "Elze",
25added: "Großteilige",
26added: "Ludolph",
27added: "Masch",
28added: "Nordstemmen",
29added: "Rössing",
30added: "Rössingbach",
31added: "Rössinger",
32added: "Rössings",
33added: "Welfenschloss"
34added: ],
35added: "editor.defaultFormatter": "biomejs.biome"
36added: }
37added: }
38added: }
39added: }
Added.github/workflows/claude.yml+50 -0
@@ -0,0 +1,50 @@
1added: name: Claude Code
2added:
3added: on:
4added: issue_comment:
5added: types: [created]
6added: pull_request_review_comment:
7added: types: [created]
8added: issues:
9added: types: [opened, assigned]
10added: pull_request_review:
11added: types: [submitted]
12added:
13added: jobs:
14added: claude:
15added: if: |
16added: (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
17added: (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
18added: (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
19added: (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
20added: runs-on: ubuntu-latest
21added: permissions:
22added: contents: read
23added: pull-requests: read
24added: issues: read
25added: id-token: write
26added: actions: read # Required for Claude to read CI results on PRs
27added: steps:
28added: - name: Checkout repository
29added: uses: actions/checkout@v4
30added: with:
31added: fetch-depth: 1
32added:
33added: - name: Run Claude Code
34added: id: claude
35added: uses: anthropics/claude-code-action@v1
36added: with:
37added: claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38added:
39added: # This is an optional setting that allows Claude to read CI results on PRs
40added: additional_permissions: |
41added: actions: read
42added:
43added: # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
44added: # prompt: 'Update the pull request description to include a summary of changes.'
45added:
46added: # Optional: Add claude_args to customize behavior and configuration
47added: # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
48added: # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options
49added: claude_args: '--dangerously-skip-permissions'
50added:
Added.gitignore+20 -0
@@ -0,0 +1,20 @@
1added: # Dependencies
2added: /node_modules
3added:
4added: # Production
5added: /build
6added:
7added: # Generated files
8added: .docusaurus
9added: .cache-loader
10added:
11added: # Misc
12added: .DS_Store
13added: .env.local
14added: .env.development.local
15added: .env.test.local
16added: .env.production.local
17added:
18added: npm-debug.log*
19added: yarn-debug.log*
20added: yarn-error.log*
AddedDockerfile+26 -0
@@ -0,0 +1,26 @@
1added: FROM node:alpine AS builder
2added:
3added: WORKDIR /usr/src/app
4added:
5added: COPY package.json package-lock.json ./
6added:
7added: RUN npm ci
8added: # Copy the rest of the source files into the image.
9added: COPY . .
10added:
11added: RUN npm run build
12added:
13added: FROM ghcr.io/levino/levins-pocketbase-auth-layer:v1
14added:
15added: ENV POCKETBASE_URL=https://api.levinkeller.de
16added: ENV POCKETBASE_GROUP=example
17added: ENV PORT=8000
18added: EXPOSE 8000
19added:
20added: # Copy the built files from the builder stage
21added: COPY --from=builder /usr/src/app/build /app/build
22added:
23added: COPY --from=builder /usr/src/app/node_modules/pocketbase/dist/pocketbase.umd.js /app/build/public/
24added:
25added: # Start the Node.js application
26added: CMD ["npm", "run", "start"]
AddedREADME.de.md+276 -0
@@ -0,0 +1,276 @@
1added: # Geschützte Dokumentations-Vorlage
2added:
3added: Eine moderne Vorlage für die Erstellung **geschützter Dokumentations-Websites**, die die Leistungsfähigkeit von [Docusaurus](https://docusaurus.io/) mit robuster Authentifizierung und Zugriffskontrolle kombiniert.
4added:
5added: ![Protected Docs Template](https://img.shields.io/badge/docs-protected-green)
6added: ![Docusaurus](https://img.shields.io/badge/Docusaurus-3.8-blue)
7added: ![Node.js](https://img.shields.io/badge/Node.js-18+-green)
8added: ![Docker](https://img.shields.io/badge/Docker-ready-blue)
9added:
10added: ## 🎯 Was ist das?
11added:
12added: Diese Vorlage bietet eine vollständige Lösung für die Erstellung von Dokumentations-Websites, die nur für authentifizierte Benutzer zugänglich sind. Perfekt geeignet für:
13added:
14added: - **Interne Unternehmensdokumentation**, die nur für Mitarbeiter zugänglich sein soll
15added: - **Mitglieder-exklusive Inhalte** für Organisationen, Communities oder Premium-Nutzer
16added: - **Private API-Dokumentation**, die Benutzerauthentifizierung erfordert
17added: - **Kundenportale** mit eingeschränktem Zugriff für bestimmte Benutzergruppen
18added: - **Bildungsinhalte** mit Zugriffskontrolle basierend auf Anmeldung oder Mitgliedschaft
19added:
20added: ## 🏗️ Wie es funktioniert
21added:
22added: Die Vorlage besteht aus zwei Hauptkomponenten, die zusammenarbeiten:
23added:
24added: ### 1. Dokumentations-Website (Docusaurus)
25added: - Erstellt mit **Docusaurus 3.8**, einem modernen statischen Website-Generator
26added: - Unterstützt **Markdown** für einfache Inhaltserstellung
27added: - Bietet **Internationalisierungs**-Support (i18n)
28added: - Beinhaltet **Blog-Funktionalität** und **Versionierung**
29added: - Responsives Design mit Dunkel-/Hell-Modus-Unterstützung
30added:
31added: ### 2. Authentifizierungs-Server (Node.js + Express)
32added: - **OAuth-Authentifizierung** über GitHub, Google und andere Anbieter
33added: - **PocketBase**-Integration für Benutzerverwaltung und Zugriffskontrolle
34added: - **Gruppenbasierte Zugriffskontrolle** - Benutzer müssen Mitglieder bestimmter Gruppen sein
35added: - **Session-Management** mit sicheren Cookies
36added: - **Mehrsprachige Unterstützung** (deutsche und englische Login-Seiten)
37added:
38added: ### Authentifizierungs-Ablauf
39added: 1. Benutzer besucht die Dokumentations-Website
40added: 2. Server prüft auf gültiges Authentifizierungs-Cookie
41added: 3. Falls nicht authentifiziert, wird der Benutzer zur Login-Seite weitergeleitet
42added: 4. Benutzer authentifiziert sich über OAuth-Anbieter (GitHub, Google, etc.)
43added: 5. Server überprüft, ob Benutzer Mitglied der erforderlichen Gruppe(n) ist
44added: 6. Falls autorisiert, erhält der Benutzer Zugriff auf die geschützte Dokumentation
45added:
46added: ## 🚀 Schnellstart
47added:
48added: ### Voraussetzungen
49added: - **Node.js 18+**
50added: - **Docker** (optional, für containerisierte Bereitstellung)
51added: - **PocketBase-Instanz** (für Benutzerverwaltung)
52added:
53added: ### 1. Klonen und Installieren
54added: ```bash
55added: git clone <ihr-fork-dieses-repos>
56added: cd protected-docs-template
57added: npm install
58added: ```
59added:
60added: ### 2. Umgebung Konfigurieren
61added: Erstellen Sie eine `.env.local`-Datei im Stammverzeichnis:
62added: ```env
63added: POCKETBASE_URL=https://ihre-pocketbase-instanz.com
64added: POCKETBASE_GROUP=ihr-gruppen-name
65added: PORT=8000
66added: ```
67added:
68added: ### 3. PocketBase Einrichten
69added: 1. Erstellen Sie eine PocketBase-Instanz (selbst gehostet oder Cloud)
70added: 2. Erstellen Sie eine `groups`-Sammlung mit `user_id` und `ihr-gruppen-name` Feldern
71added: 3. Konfigurieren Sie OAuth-Anbieter (GitHub, Google, etc.)
72added: 4. Fügen Sie Benutzer zu den entsprechenden Gruppen hinzu
73added:
74added: ### 4. Ihre Dokumentation Anpassen
75added: Navigieren Sie zum `website/`-Verzeichnis und:
76added: ```bash
77added: cd website
78added: # Bearbeiten Sie Ihre Dokumentationsdateien in docs/
79added: # Passen Sie die Website-Konfiguration in docusaurus.config.ts an
80added: # Fügen Sie Ihr Branding, Farben und Inhalte hinzu
81added: ```
82added:
83added: ### 5. Erstellen und Ausführen
84added:
85added: #### Entwicklungsmodus
86added: ```bash
87added: # Website-Entwicklungsserver starten
88added: cd website
89added: npm run start
90added:
91added: # In einem anderen Terminal den Auth-Server starten
92added: cd server
93added: npm run start
94added: ```
95added:
96added: #### Produktionsmodus
97added: ```bash
98added: # Website erstellen
99added: cd website
100added: npm run build
101added:
102added: # Produktionsserver starten
103added: cd server
104added: npm run start
105added: ```
106added:
107added: #### Docker-Bereitstellung
108added: ```bash
109added: docker compose up --build
110added: ```
111added:
112added: Die Anwendung ist unter `http://localhost:8000` verfügbar
113added:
114added: ## 📁 Projekt-Struktur
115added:
116added: ```
117added: protected-docs-template/
118added: ├── website/ # Docusaurus-Dokumentations-Website
119added: │ ├── docs/ # Dokumentationsinhalte (Markdown-Dateien)
120added: │ ├── blog/ # Blog-Beiträge
121added: │ ├── src/ # React-Komponenten und Seiten
122added: │ ├── static/ # Statische Assets
123added: │ └── docusaurus.config.ts # Website-Konfiguration
124added: ├── server/ # Authentifizierungs-Server
125added: │ ├── index.ts # Haupt-Server-Datei
126added: │ └── views/ # Login-Seiten-Vorlagen
127added: ├── Dockerfile # Container-Konfiguration
128added: ├── docker-compose.yaml # Multi-Container-Setup
129added: └── package.json # Workspace-Konfiguration
130added: ```
131added:
132added: ## 🔧 Konfiguration
133added:
134added: ### Authentifizierungs-Anbieter
135added: Das System unterstützt mehrere OAuth-Anbieter über PocketBase:
136added: - **GitHub** (Standard)
137added: - **Google** (Standard)
138added: - **Microsoft**
139added: - **Facebook**
140added: - **GitLab**
141added: - **Discord**
142added: - **Spotify**
143added: - Und viele mehr...
144added:
145added: Um neue Anbieter hinzuzufügen, konfigurieren Sie diese in Ihrem PocketBase-Admin-Panel.
146added:
147added: ### Zugriffskontrolle
148added: Benutzer müssen Mitglieder einer bestimmten Gruppe sein, um auf die Dokumentation zugreifen zu können. Konfigurieren Sie dies in Ihrer `.env.local`:
149added: ```env
150added: POCKETBASE_GROUP=mitarbeiter # Nur Benutzer in der "mitarbeiter"-Gruppe können zugreifen
151added: ```
152added:
153added: ### Internationalisierung
154added: Die Vorlage beinhaltet standardmäßig deutsche Sprachunterstützung. Um weitere Sprachen hinzuzufügen:
155added:
156added: 1. Aktualisieren Sie `docusaurus.config.ts`:
157added: ```typescript
158added: i18n: {
159added: defaultLocale: 'de',
160added: locales: ['de', 'en', 'fr'], // Fügen Sie Ihre Sprachen hinzu
161added: },
162added: ```
163added:
164added: 2. Erstellen Sie Übersetzungsdateien in `website/i18n/`
165added:
166added: ### Anpassung
167added: - **Branding**: Bearbeiten Sie `website/docusaurus.config.ts` und `website/src/css/custom.css`
168added: - **Inhalte**: Fügen Sie Ihre Dokumentation zu `website/docs/` hinzu
169added: - **Login-Seiten**: Passen Sie `server/views/login.ejs` und `server/views/not_a_member.ejs` an
170added:
171added: ## 🎨 Anwendungsfälle
172added:
173added: ### Interne Unternehmensdokumentation
174added: Perfekt für Unternehmen, die interne Dokumentation, Prozesse oder Wissensdatenbanken nur mit Mitarbeitern teilen müssen.
175added:
176added: ```env
177added: POCKETBASE_GROUP=mitarbeiter
178added: ```
179added:
180added: ### Kundenportale
181added: Erstellen Sie Dokumentationsportale für spezifische Kunden oder Kundensegmente.
182added:
183added: ```env
184added: POCKETBASE_GROUP=premium_kunden
185added: ```
186added:
187added: ### Bildungsplattformen
188added: Stellen Sie Kursmaterialien oder Lernressourcen für eingeschriebene Studenten oder Mitglieder bereit.
189added:
190added: ```env
191added: POCKETBASE_GROUP=kurs_teilnehmer
192added: ```
193added:
194added: ### API-Dokumentation
195added: Teilen Sie private API-Dokumentation mit autorisierten Entwicklern oder Partnern.
196added:
197added: ```env
198added: POCKETBASE_GROUP=api_partner
199added: ```
200added:
201added: ## 🛠️ Entwicklung
202added:
203added: ### Neue Inhalte Hinzufügen
204added: 1. Erstellen Sie Markdown-Dateien in `website/docs/`
205added: 2. Aktualisieren Sie `website/sidebars.ts` falls nötig
206added: 3. Fügen Sie Blog-Beiträge zu `website/blog/` hinzu
207added:
208added: ### Authentifizierung Anpassen
209added: - Ändern Sie `server/index.ts` um die Authentifizierungslogik zu modifizieren
210added: - Aktualisieren Sie Login-Vorlagen in `server/views/`
211added: - Konfigurieren Sie zusätzliche OAuth-Anbieter in PocketBase
212added:
213added: ### Styling und Theming
214added: - Bearbeiten Sie `website/src/css/custom.css` für globale Styles
215added: - Ändern Sie `website/docusaurus.config.ts` für Theme-Konfiguration
216added: - Erstellen Sie benutzerdefinierte React-Komponenten in `website/src/components/`
217added:
218added: ## 🚀 Bereitstellung
219added:
220added: ### Docker (Empfohlen)
221added: ```bash
222added: docker compose up --build -d
223added: ```
224added:
225added: ### Manuelle Bereitstellung
226added: 1. Website erstellen: `cd website && npm run build`
227added: 2. Server mit erstellten Dateien bereitstellen
228added: 3. Umgebungsvariablen konfigurieren
229added: 4. Reverse Proxy einrichten (nginx, Apache, etc.)
230added:
231added: ### Cloud-Plattformen
232added: Die Vorlage funktioniert gut mit:
233added: - **Vercel** (für die Dokumentations-Website)
234added: - **Railway** / **Heroku** (für den Auth-Server)
235added: - **Digital Ocean** / **AWS** / **Google Cloud** (vollständiger Stack)
236added:
237added: ## 🔒 Sicherheitsfeatures
238added:
239added: - **Nur OAuth-Authentifizierung** - keine Passwort-Speicherung erforderlich
240added: - **Gruppenbasierte Zugriffskontrolle** - feingliedrige Berechtigungen
241added: - **Sicheres Session-Management** - httpOnly-Cookies mit ordnungsgemäßen Einstellungen
242added: - **CSRF-Schutz** - in den Authentifizierungsablauf integriert
243added: - **Regelmäßige Sicherheitsupdates** - basierend auf gewarteten Abhängigkeiten
244added:
245added: ## 📝 Lizenz
246added:
247added: Diese Vorlage ist Open Source und unter der [MIT-Lizenz](LICENSE) verfügbar.
248added:
249added: ## 🤝 Mitwirken
250added:
251added: 1. Repository forken
252added: 2. Feature-Branch erstellen
253added: 3. Änderungen vornehmen
254added: 4. Tests hinzufügen falls zutreffend
255added: 5. Pull Request einreichen
256added:
257added: ## 📞 Support
258added:
259added: - **Issues**: Melden Sie Bugs oder fordern Sie Features über GitHub Issues an
260added: - **Diskussionen**: Nehmen Sie an Community-Diskussionen in GitHub Discussions teil
261added: - **Dokumentation**: Prüfen Sie die [Docusaurus-Dokumentation](https://docusaurus.io/docs) für Website-Anpassungen
262added:
263added: ## 🏷️ Version
264added:
265added: Aktuelle Version: **1.0.0**
266added:
267added: Erstellt mit:
268added: - Docusaurus 3.8.1
269added: - Node.js 18+
270added: - PocketBase 0.26
271added: - Express 4.21
272added: - TypeScript 5.6
273added:
274added: ---
275added:
276added: **Mit ❤️ für die Entwickler-Community gemacht**
AddedREADME.md+41 -0
@@ -0,0 +1,41 @@
1added: # Website
2added:
3added: This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
4added:
5added: ## Installation
6added:
7added: ```bash
8added: yarn
9added: ```
10added:
11added: ## Local Development
12added:
13added: ```bash
14added: yarn start
15added: ```
16added:
17added: This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18added:
19added: ## Build
20added:
21added: ```bash
22added: yarn build
23added: ```
24added:
25added: This command generates static content into the `build` directory and can be served using any static contents hosting service.
26added:
27added: ## Deployment
28added:
29added: Using SSH:
30added:
31added: ```bash
32added: USE_SSH=true yarn deploy
33added: ```
34added:
35added: Not using SSH:
36added:
37added: ```bash
38added: GIT_USER=<Your GitHub username> yarn deploy
39added: ```
40added:
41added: If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
Addedbiome.json+31 -0
@@ -0,0 +1,31 @@
1added: {
2added: "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3added: "vcs": {
4added: "enabled": false,
5added: "clientKind": "git",
6added: "useIgnoreFile": false
7added: },
8added: "files": {
9added: "ignoreUnknown": false,
10added: "ignore": ["**/build/**"]
11added: },
12added: "formatter": {
13added: "enabled": true,
14added: "indentStyle": "tab"
15added: },
16added: "organizeImports": {
17added: "enabled": true
18added: },
19added: "linter": {
20added: "enabled": true,
21added: "rules": {
22added: "recommended": true
23added: }
24added: },
25added: "javascript": {
26added: "formatter": {
27added: "semicolons": "asNeeded",
28added: "quoteStyle": "single"
29added: }
30added: }
31added: }
Addedblog/2019-05-28-first-blog-post.md+12 -0
@@ -0,0 +1,12 @@
1added: ---
2added: slug: first-blog-post
3added: title: First Blog Post
4added: authors: [slorber, yangshun]
5added: tags: [hola, docusaurus]
6added: ---
7added:
8added: Lorem ipsum dolor sit amet...
9added:
10added: <!-- truncate -->
11added:
12added: ...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Addedblog/2019-05-29-long-blog-post.md+44 -0
@@ -0,0 +1,44 @@
1added: ---
2added: slug: long-blog-post
3added: title: Long Blog Post
4added: authors: yangshun
5added: tags: [hello, docusaurus]
6added: ---
7added:
8added: This is the summary of a very long blog post,
9added:
10added: Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.
11added:
12added: <!-- truncate -->
13added:
14added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
15added:
16added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
17added:
18added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
19added:
20added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
21added:
22added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
23added:
24added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
25added:
26added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
27added:
28added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
29added:
30added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
31added:
32added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
33added:
34added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
35added:
36added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
37added:
38added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
39added:
40added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
41added:
42added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
43added:
44added: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
Addedblog/2021-08-01-mdx-blog-post.mdx+24 -0
@@ -0,0 +1,24 @@
1added: ---
2added: slug: mdx-blog-post
3added: title: MDX Blog Post
4added: authors: [slorber]
5added: tags: [docusaurus]
6added: ---
7added:
8added: Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).
9added:
10added: :::tip
11added:
12added: Use the power of React to create interactive blog posts.
13added:
14added: :::
15added:
16added: {/* truncate */}
17added:
18added: For example, use JSX to create an interactive button:
19added:
20added: ```js
21added: <button onClick={() => alert('button clicked!')}>Click me!</button>
22added: ```
23added:
24added: <button onClick={() => alert('button clicked!')}>Click me!</button>
Addedblog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg

Binary file not shown.

Addedblog/2021-08-26-welcome/index.md+29 -0
@@ -0,0 +1,29 @@
1added: ---
2added: slug: welcome
3added: title: Welcome
4added: authors: [slorber, yangshun]
5added: tags: [facebook, hello, docusaurus]
6added: ---
7added:
8added: [Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).
9added:
10added: Here are a few tips you might find useful.
11added:
12added: <!-- truncate -->
13added:
14added: Simply add Markdown files (or folders) to the `blog` directory.
15added:
16added: Regular blog authors can be added to `authors.yml`.
17added:
18added: The blog post date can be extracted from filenames, such as:
19added:
20added: - `2019-05-30-welcome.md`
21added: - `2019-05-30-welcome/index.md`
22added:
23added: A blog post folder can be convenient to co-locate blog post images:
24added:
25added: ![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)
26added:
27added: The blog supports tags as well!
28added:
29added: **And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
Addedblog/authors.yml+25 -0
@@ -0,0 +1,25 @@
1added: yangshun:
2added: name: Yangshun Tay
3added: title: Ex-Meta Staff Engineer, Co-founder GreatFrontEnd
4added: url: https://linkedin.com/in/yangshun
5added: image_url: https://github.com/yangshun.png
6added: page: true
7added: socials:
8added: x: yangshunz
9added: linkedin: yangshun
10added: github: yangshun
11added: newsletter: https://www.greatfrontend.com
12added:
13added: slorber:
14added: name: Sébastien Lorber
15added: title: Docusaurus maintainer
16added: url: https://sebastienlorber.com
17added: image_url: https://github.com/slorber.png
18added: page:
19added: # customize the url of the author page at /blog/authors/<permalink>
20added: permalink: '/all-sebastien-lorber-articles'
21added: socials:
22added: x: sebastienlorber
23added: linkedin: sebastienlorber
24added: github: slorber
25added: newsletter: https://thisweekinreact.com
Addedblog/tags.yml+19 -0
@@ -0,0 +1,19 @@
1added: facebook:
2added: label: Facebook
3added: permalink: /facebook
4added: description: Facebook tag description
5added:
6added: hello:
7added: label: Hello
8added: permalink: /hello
9added: description: Hello tag description
10added:
11added: docusaurus:
12added: label: Docusaurus
13added: permalink: /docusaurus
14added: description: Docusaurus tag description
15added:
16added: hola:
17added: label: Hola
18added: permalink: /hola
19added: description: Hola tag description
Addeddocker-compose.yaml+13 -0
@@ -0,0 +1,13 @@
1added: services:
2added: app:
3added: build:
4added: context: .
5added: dockerfile: Dockerfile
6added: ports:
7added: - "3000:3000"
8added: environment:
9added: - POCKETBASE_URL=${POCKETBASE_URL:-https://your-pocketbase.example.com}
10added: - POCKETBASE_GROUP=${POCKETBASE_GROUP:-members}
11added: - PORT=3000
12added: env_file:
13added: - .env.local
Addeddocs/intro.md+47 -0
@@ -0,0 +1,47 @@
1added: ---
2added: sidebar_position: 1
3added: ---
4added:
5added: # Tutorial Intro
6added:
7added: Let's discover **Docusaurus in less than 5 minutes**.
8added:
9added: ## Getting Started
10added:
11added: Get started by **creating a new site**.
12added:
13added: Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
14added:
15added: ### What you'll need
16added:
17added: - [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
18added: - When installing Node.js, you are recommended to check all checkboxes related to dependencies.
19added:
20added: ## Generate a new site
21added:
22added: Generate a new Docusaurus site using the **classic template**.
23added:
24added: The classic template will automatically be added to your project after you run the command:
25added:
26added: ```bash
27added: npm init docusaurus@latest my-website classic
28added: ```
29added:
30added: You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
31added:
32added: The command also installs all necessary dependencies you need to run Docusaurus.
33added:
34added: ## Start your site
35added:
36added: Run the development server:
37added:
38added: ```bash
39added: cd my-website
40added: npm run start
41added: ```
42added:
43added: The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
44added:
45added: The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.
46added:
47added: Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
Addeddocs/tutorial-basics/_category_.json+8 -0
@@ -0,0 +1,8 @@
1added: {
2added: "label": "Tutorial - Basics",
3added: "position": 2,
4added: "link": {
5added: "type": "generated-index",
6added: "description": "5 minutes to learn the most important Docusaurus concepts."
7added: }
8added: }
Addeddocs/tutorial-basics/congratulations.md+23 -0
@@ -0,0 +1,23 @@
1added: ---
2added: sidebar_position: 6
3added: ---
4added:
5added: # Congratulations!
6added:
7added: You have just learned the **basics of Docusaurus** and made some changes to the **initial template**.
8added:
9added: Docusaurus has **much more to offer**!
10added:
11added: Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**.
12added:
13added: Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610)
14added:
15added: ## What's next?
16added:
17added: - Read the [official documentation](https://docusaurus.io/)
18added: - Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config)
19added: - Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration)
20added: - Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout)
21added: - Add a [search bar](https://docusaurus.io/docs/search)
22added: - Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase)
23added: - Get involved in the [Docusaurus Community](https://docusaurus.io/community/support)
Addeddocs/tutorial-basics/create-a-blog-post.md+34 -0
@@ -0,0 +1,34 @@
1added: ---
2added: sidebar_position: 3
3added: ---
4added:
5added: # Create a Blog Post
6added:
7added: Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed...
8added:
9added: ## Create your first Post
10added:
11added: Create a file at `blog/2021-02-28-greetings.md`:
12added:
13added: ```md title="blog/2021-02-28-greetings.md"
14added: ---
15added: slug: greetings
16added: title: Greetings!
17added: authors:
18added: - name: Joel Marcey
19added: title: Co-creator of Docusaurus 1
20added: url: https://github.com/JoelMarcey
21added: image_url: https://github.com/JoelMarcey.png
22added: - name: Sébastien Lorber
23added: title: Docusaurus maintainer
24added: url: https://sebastienlorber.com
25added: image_url: https://github.com/slorber.png
26added: tags: [greetings]
27added: ---
28added:
29added: Congratulations, you have made your first post!
30added:
31added: Feel free to play around and edit this post as much as you like.
32added: ```
33added:
34added: A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings).
Addeddocs/tutorial-basics/create-a-document.md+57 -0
@@ -0,0 +1,57 @@
1added: ---
2added: sidebar_position: 2
3added: ---
4added:
5added: # Create a Document
6added:
7added: Documents are **groups of pages** connected through:
8added:
9added: - a **sidebar**
10added: - **previous/next navigation**
11added: - **versioning**
12added:
13added: ## Create your first Doc
14added:
15added: Create a Markdown file at `docs/hello.md`:
16added:
17added: ```md title="docs/hello.md"
18added: # Hello
19added:
20added: This is my **first Docusaurus document**!
21added: ```
22added:
23added: A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello).
24added:
25added: ## Configure the Sidebar
26added:
27added: Docusaurus automatically **creates a sidebar** from the `docs` folder.
28added:
29added: Add metadata to customize the sidebar label and position:
30added:
31added: ```md title="docs/hello.md" {1-4}
32added: ---
33added: sidebar_label: 'Hi!'
34added: sidebar_position: 3
35added: ---
36added:
37added: # Hello
38added:
39added: This is my **first Docusaurus document**!
40added: ```
41added:
42added: It is also possible to create your sidebar explicitly in `sidebars.js`:
43added:
44added: ```js title="sidebars.js"
45added: export default {
46added: tutorialSidebar: [
47added: 'intro',
48added: // highlight-next-line
49added: 'hello',
50added: {
51added: type: 'category',
52added: label: 'Tutorial',
53added: items: ['tutorial-basics/create-a-document'],
54added: },
55added: ],
56added: };
57added: ```
Addeddocs/tutorial-basics/create-a-page.md+43 -0
@@ -0,0 +1,43 @@
1added: ---
2added: sidebar_position: 1
3added: ---
4added:
5added: # Create a Page
6added:
7added: Add **Markdown or React** files to `src/pages` to create a **standalone page**:
8added:
9added: - `src/pages/index.js` → `localhost:3000/`
10added: - `src/pages/foo.md` → `localhost:3000/foo`
11added: - `src/pages/foo/bar.js` → `localhost:3000/foo/bar`
12added:
13added: ## Create your first React Page
14added:
15added: Create a file at `src/pages/my-react-page.js`:
16added:
17added: ```jsx title="src/pages/my-react-page.js"
18added: import React from 'react';
19added: import Layout from '@theme/Layout';
20added:
21added: export default function MyReactPage() {
22added: return (
23added: <Layout>
24added: <h1>My React page</h1>
25added: <p>This is a React page</p>
26added: </Layout>
27added: );
28added: }
29added: ```
30added:
31added: A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page).
32added:
33added: ## Create your first Markdown Page
34added:
35added: Create a file at `src/pages/my-markdown-page.md`:
36added:
37added: ```mdx title="src/pages/my-markdown-page.md"
38added: # My Markdown page
39added:
40added: This is a Markdown page
41added: ```
42added:
43added: A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page).
Addeddocs/tutorial-basics/deploy-your-site.md+31 -0
@@ -0,0 +1,31 @@
1added: ---
2added: sidebar_position: 5
3added: ---
4added:
5added: # Deploy your site
6added:
7added: Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**).
8added:
9added: It builds your site as simple **static HTML, JavaScript and CSS files**.
10added:
11added: ## Build your site
12added:
13added: Build your site **for production**:
14added:
15added: ```bash
16added: npm run build
17added: ```
18added:
19added: The static files are generated in the `build` folder.
20added:
21added: ## Deploy your site
22added:
23added: Test your production build locally:
24added:
25added: ```bash
26added: npm run serve
27added: ```
28added:
29added: The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/).
30added:
31added: You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**).
Addeddocs/tutorial-basics/markdown-features.mdx+152 -0
@@ -0,0 +1,152 @@
1added: ---
2added: sidebar_position: 4
3added: ---
4added:
5added: # Markdown Features
6added:
7added: Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**.
8added:
9added: ## Front Matter
10added:
11added: Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/):
12added:
13added: ```text title="my-doc.md"
14added: // highlight-start
15added: ---
16added: id: my-doc-id
17added: title: My document title
18added: description: My document description
19added: slug: /my-custom-url
20added: ---
21added: // highlight-end
22added:
23added: ## Markdown heading
24added:
25added: Markdown text with [links](./hello.md)
26added: ```
27added:
28added: ## Links
29added:
30added: Regular Markdown links are supported, using url paths or relative file paths.
31added:
32added: ```md
33added: Let's see how to [Create a page](/create-a-page).
34added: ```
35added:
36added: ```md
37added: Let's see how to [Create a page](./create-a-page.md).
38added: ```
39added:
40added: **Result:** Let's see how to [Create a page](./create-a-page.md).
41added:
42added: ## Images
43added:
44added: Regular Markdown images are supported.
45added:
46added: You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`):
47added:
48added: ```md
49added: ![Docusaurus logo](/img/docusaurus.png)
50added: ```
51added:
52added: ![Docusaurus logo](/img/docusaurus.png)
53added:
54added: You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
55added:
56added: ```md
57added: ![Docusaurus logo](./img/docusaurus.png)
58added: ```
59added:
60added: ## Code Blocks
61added:
62added: Markdown code blocks are supported with Syntax highlighting.
63added:
64added: ````md
65added: ```jsx title="src/components/HelloDocusaurus.js"
66added: function HelloDocusaurus() {
67added: return <h1>Hello, Docusaurus!</h1>;
68added: }
69added: ```
70added: ````
71added:
72added: ```jsx title="src/components/HelloDocusaurus.js"
73added: function HelloDocusaurus() {
74added: return <h1>Hello, Docusaurus!</h1>;
75added: }
76added: ```
77added:
78added: ## Admonitions
79added:
80added: Docusaurus has a special syntax to create admonitions and callouts:
81added:
82added: ```md
83added: :::tip My tip
84added:
85added: Use this awesome feature option
86added:
87added: :::
88added:
89added: :::danger Take care
90added:
91added: This action is dangerous
92added:
93added: :::
94added: ```
95added:
96added: :::tip My tip
97added:
98added: Use this awesome feature option
99added:
100added: :::
101added:
102added: :::danger Take care
103added:
104added: This action is dangerous
105added:
106added: :::
107added:
108added: ## MDX and React Components
109added:
110added: [MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**:
111added:
112added: ```jsx
113added: export const Highlight = ({children, color}) => (
114added: <span
115added: style={{
116added: backgroundColor: color,
117added: borderRadius: '20px',
118added: color: '#fff',
119added: padding: '10px',
120added: cursor: 'pointer',
121added: }}
122added: onClick={() => {
123added: alert(`You clicked the color ${color} with label ${children}`)
124added: }}>
125added: {children}
126added: </span>
127added: );
128added:
129added: This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !
130added:
131added: This is <Highlight color="#1877F2">Facebook blue</Highlight> !
132added: ```
133added:
134added: export const Highlight = ({children, color}) => (
135added: <span
136added: style={{
137added: backgroundColor: color,
138added: borderRadius: '20px',
139added: color: '#fff',
140added: padding: '10px',
141added: cursor: 'pointer',
142added: }}
143added: onClick={() => {
144added: alert(`You clicked the color ${color} with label ${children}`);
145added: }}>
146added: {children}
147added: </span>
148added: );
149added:
150added: This is <Highlight color="#25c2a0">Docusaurus green</Highlight> !
151added:
152added: This is <Highlight color="#1877F2">Facebook blue</Highlight> !
Addeddocs/tutorial-extras/_category_.json+7 -0
@@ -0,0 +1,7 @@
1added: {
2added: "label": "Tutorial - Extras",
3added: "position": 3,
4added: "link": {
5added: "type": "generated-index"
6added: }
7added: }
Addeddocs/tutorial-extras/img/docsVersionDropdown.png

Binary file not shown.

Addeddocs/tutorial-extras/img/localeDropdown.png

Binary file not shown.

Addeddocs/tutorial-extras/manage-docs-versions.md+55 -0
@@ -0,0 +1,55 @@
1added: ---
2added: sidebar_position: 1
3added: ---
4added:
5added: # Manage Docs Versions
6added:
7added: Docusaurus can manage multiple versions of your docs.
8added:
9added: ## Create a docs version
10added:
11added: Release a version 1.0 of your project:
12added:
13added: ```bash
14added: npm run docusaurus docs:version 1.0
15added: ```
16added:
17added: The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created.
18added:
19added: Your docs now have 2 versions:
20added:
21added: - `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs
22added: - `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs**
23added:
24added: ## Add a Version Dropdown
25added:
26added: To navigate seamlessly across versions, add a version dropdown.
27added:
28added: Modify the `docusaurus.config.js` file:
29added:
30added: ```js title="docusaurus.config.js"
31added: export default {
32added: themeConfig: {
33added: navbar: {
34added: items: [
35added: // highlight-start
36added: {
37added: type: 'docsVersionDropdown',
38added: },
39added: // highlight-end
40added: ],
41added: },
42added: },
43added: };
44added: ```
45added:
46added: The docs version dropdown appears in your navbar:
47added:
48added: ![Docs Version Dropdown](./img/docsVersionDropdown.png)
49added:
50added: ## Update an existing version
51added:
52added: It is possible to edit versioned docs in their respective folder:
53added:
54added: - `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello`
55added: - `docs/hello.md` updates `http://localhost:3000/docs/next/hello`
Addeddocs/tutorial-extras/translate-your-site.md+88 -0
@@ -0,0 +1,88 @@
1added: ---
2added: sidebar_position: 2
3added: ---
4added:
5added: # Translate your site
6added:
7added: Let's translate `docs/intro.md` to French.
8added:
9added: ## Configure i18n
10added:
11added: Modify `docusaurus.config.js` to add support for the `fr` locale:
12added:
13added: ```js title="docusaurus.config.js"
14added: export default {
15added: i18n: {
16added: defaultLocale: 'en',
17added: locales: ['en', 'fr'],
18added: },
19added: };
20added: ```
21added:
22added: ## Translate a doc
23added:
24added: Copy the `docs/intro.md` file to the `i18n/fr` folder:
25added:
26added: ```bash
27added: mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/
28added:
29added: cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md
30added: ```
31added:
32added: Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French.
33added:
34added: ## Start your localized site
35added:
36added: Start your site on the French locale:
37added:
38added: ```bash
39added: npm run start -- --locale fr
40added: ```
41added:
42added: Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated.
43added:
44added: :::caution
45added:
46added: In development, you can only use one locale at a time.
47added:
48added: :::
49added:
50added: ## Add a Locale Dropdown
51added:
52added: To navigate seamlessly across languages, add a locale dropdown.
53added:
54added: Modify the `docusaurus.config.js` file:
55added:
56added: ```js title="docusaurus.config.js"
57added: export default {
58added: themeConfig: {
59added: navbar: {
60added: items: [
61added: // highlight-start
62added: {
63added: type: 'localeDropdown',
64added: },
65added: // highlight-end
66added: ],
67added: },
68added: },
69added: };
70added: ```
71added:
72added: The locale dropdown now appears in your navbar:
73added:
74added: ![Locale Dropdown](./img/localeDropdown.png)
75added:
76added: ## Build your localized site
77added:
78added: Build your site for a specific locale:
79added:
80added: ```bash
81added: npm run build -- --locale fr
82added: ```
83added:
84added: Or build your site to include all the locales at once:
85added:
86added: ```bash
87added: npm run build
88added: ```
Addeddocusaurus.config.ts+148 -0
@@ -0,0 +1,148 @@
1added: import {themes as prismThemes} from 'prism-react-renderer';
2added: import type {Config} from '@docusaurus/types';
3added: import type * as Preset from '@docusaurus/preset-classic';
4added:
5added: // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
6added:
7added: const config: Config = {
8added: title: 'My Site',
9added: tagline: 'Dinosaurs are cool',
10added: favicon: 'img/favicon.ico',
11added:
12added: // Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
13added: future: {
14added: v4: true, // Improve compatibility with the upcoming Docusaurus v4
15added: },
16added:
17added: // Set the production url of your site here
18added: url: 'https://your-docusaurus-site.example.com',
19added: // Set the /<baseUrl>/ pathname under which your site is served
20added: // For GitHub pages deployment, it is often '/<projectName>/'
21added: baseUrl: '/',
22added:
23added: // GitHub pages deployment config.
24added: // If you aren't using GitHub pages, you don't need these.
25added: organizationName: 'facebook', // Usually your GitHub org/user name.
26added: projectName: 'docusaurus', // Usually your repo name.
27added:
28added: onBrokenLinks: 'throw',
29added: onBrokenMarkdownLinks: 'warn',
30added:
31added: // Even if you don't use internationalization, you can use this field to set
32added: // useful metadata like html lang. For example, if your site is Chinese, you
33added: // may want to replace "en" with "zh-Hans".
34added: i18n: {
35added: defaultLocale: 'en',
36added: locales: ['en'],
37added: },
38added:
39added: presets: [
40added: [
41added: 'classic',
42added: {
43added: docs: {
44added: sidebarPath: './sidebars.ts',
45added: // Please change this to your repo.
46added: // Remove this to remove the "edit this page" links.
47added: editUrl:
48added: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
49added: },
50added: blog: {
51added: showReadingTime: true,
52added: feedOptions: {
53added: type: ['rss', 'atom'],
54added: xslt: true,
55added: },
56added: // Please change this to your repo.
57added: // Remove this to remove the "edit this page" links.
58added: editUrl:
59added: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
60added: // Useful options to enforce blogging best practices
61added: onInlineTags: 'warn',
62added: onInlineAuthors: 'warn',
63added: onUntruncatedBlogPosts: 'warn',
64added: },
65added: theme: {
66added: customCss: './src/css/custom.css',
67added: },
68added: } satisfies Preset.Options,
69added: ],
70added: ],
71added:
72added: themeConfig: {
73added: // Replace with your project's social card
74added: image: 'img/docusaurus-social-card.jpg',
75added: navbar: {
76added: title: 'My Site',
77added: logo: {
78added: alt: 'My Site Logo',
79added: src: 'img/logo.svg',
80added: },
81added: items: [
82added: {
83added: type: 'docSidebar',
84added: sidebarId: 'tutorialSidebar',
85added: position: 'left',
86added: label: 'Tutorial',
87added: },
88added: {to: '/blog', label: 'Blog', position: 'left'},
89added: {
90added: href: 'https://github.com/facebook/docusaurus',
91added: label: 'GitHub',
92added: position: 'right',
93added: },
94added: ],
95added: },
96added: footer: {
97added: style: 'dark',
98added: links: [
99added: {
100added: title: 'Docs',
101added: items: [
102added: {
103added: label: 'Tutorial',
104added: to: '/docs/intro',
105added: },
106added: ],
107added: },
108added: {
109added: title: 'Community',
110added: items: [
111added: {
112added: label: 'Stack Overflow',
113added: href: 'https://stackoverflow.com/questions/tagged/docusaurus',
114added: },
115added: {
116added: label: 'Discord',
117added: href: 'https://discordapp.com/invite/docusaurus',
118added: },
119added: {
120added: label: 'X',
121added: href: 'https://x.com/docusaurus',
122added: },
123added: ],
124added: },
125added: {
126added: title: 'More',
127added: items: [
128added: {
129added: label: 'Blog',
130added: to: '/blog',
131added: },
132added: {
133added: label: 'GitHub',
134added: href: 'https://github.com/facebook/docusaurus',
135added: },
136added: ],
137added: },
138added: ],
139added: copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`,
140added: },
141added: prism: {
142added: theme: prismThemes.github,
143added: darkTheme: prismThemes.dracula,
144added: },
145added: } satisfies Preset.ThemeConfig,
146added: };
147added:
148added: export default config;
Addedpackage-lock.json

The file is too large to show.

Addedpackage.json+48 -0
@@ -0,0 +1,48 @@
1added: {
2added: "name": "website",
3added: "version": "0.0.0",
4added: "private": true,
5added: "scripts": {
6added: "docusaurus": "docusaurus",
7added: "start": "docusaurus start",
8added: "build": "cp node_modules/pocketbase/dist/pocketbase.umd.js static/public/pocketbase.umd.js && docusaurus build",
9added: "swizzle": "docusaurus swizzle",
10added: "deploy": "docusaurus deploy",
11added: "clear": "docusaurus clear",
12added: "serve": "docusaurus serve",
13added: "write-translations": "docusaurus write-translations",
14added: "write-heading-ids": "docusaurus write-heading-ids",
15added: "typecheck": "tsc"
16added: },
17added: "dependencies": {
18added: "@docusaurus/core": "^3.8.1",
19added: "@docusaurus/preset-classic": "^3.8.1",
20added: "@mdx-js/react": "^3.0.0",
21added: "clsx": "^2.0.0",
22added: "pocketbase": "^0.26.2",
23added: "prism-react-renderer": "^2.3.0",
24added: "react": "^19.0.0",
25added: "react-dom": "^19.0.0"
26added: },
27added: "devDependencies": {
28added: "@docusaurus/module-type-aliases": "^3.8.1",
29added: "@docusaurus/tsconfig": "^3.8.1",
30added: "@docusaurus/types": "^3.8.1",
31added: "typescript": "~5.6.2"
32added: },
33added: "browserslist": {
34added: "production": [
35added: ">0.5%",
36added: "not dead",
37added: "not op_mini all"
38added: ],
39added: "development": [
40added: "last 3 chrome version",
41added: "last 3 firefox version",
42added: "last 5 safari version"
43added: ]
44added: },
45added: "engines": {
46added: "node": ">=22.0"
47added: }
48added: }
Addedsidebars.ts+33 -0
@@ -0,0 +1,33 @@
1added: import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
2added:
3added: // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
4added:
5added: /**
6added: * Creating a sidebar enables you to:
7added: - create an ordered group of docs
8added: - render a sidebar for each doc of that group
9added: - provide next/previous navigation
10added:
11added: The sidebars can be generated from the filesystem, or explicitly defined here.
12added:
13added: Create as many sidebars as you want.
14added: */
15added: const sidebars: SidebarsConfig = {
16added: // By default, Docusaurus generates a sidebar from the docs folder structure
17added: tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
18added:
19added: // But you can create a sidebar manually
20added: /*
21added: tutorialSidebar: [
22added: 'intro',
23added: 'hello',
24added: {
25added: type: 'category',
26added: label: 'Tutorial',
27added: items: ['tutorial-basics/create-a-document'],
28added: },
29added: ],
30added: */
31added: };
32added:
33added: export default sidebars;
Addedsrc/components/HomepageFeatures/index.tsx+71 -0
@@ -0,0 +1,71 @@
1added: import type {ReactNode} from 'react';
2added: import clsx from 'clsx';
3added: import Heading from '@theme/Heading';
4added: import styles from './styles.module.css';
5added:
6added: type FeatureItem = {
7added: title: string;
8added: Svg: React.ComponentType<React.ComponentProps<'svg'>>;
9added: description: ReactNode;
10added: };
11added:
12added: const FeatureList: FeatureItem[] = [
13added: {
14added: title: 'Easy to Use',
15added: Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
16added: description: (
17added: <>
18added: Docusaurus was designed from the ground up to be easily installed and
19added: used to get your website up and running quickly.
20added: </>
21added: ),
22added: },
23added: {
24added: title: 'Focus on What Matters',
25added: Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
26added: description: (
27added: <>
28added: Docusaurus lets you focus on your docs, and we&apos;ll do the chores. Go
29added: ahead and move your docs into the <code>docs</code> directory.
30added: </>
31added: ),
32added: },
33added: {
34added: title: 'Powered by React',
35added: Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
36added: description: (
37added: <>
38added: Extend or customize your website layout by reusing React. Docusaurus can
39added: be extended while reusing the same header and footer.
40added: </>
41added: ),
42added: },
43added: ];
44added:
45added: function Feature({title, Svg, description}: FeatureItem) {
46added: return (
47added: <div className={clsx('col col--4')}>
48added: <div className="text--center">
49added: <Svg className={styles.featureSvg} role="img" />
50added: </div>
51added: <div className="text--center padding-horiz--md">
52added: <Heading as="h3">{title}</Heading>
53added: <p>{description}</p>
54added: </div>
55added: </div>
56added: );
57added: }
58added:
59added: export default function HomepageFeatures(): ReactNode {
60added: return (
61added: <section className={styles.features}>
62added: <div className="container">
63added: <div className="row">
64added: {FeatureList.map((props, idx) => (
65added: <Feature key={idx} {...props} />
66added: ))}
67added: </div>
68added: </div>
69added: </section>
70added: );
71added: }
Addedsrc/components/HomepageFeatures/styles.module.css+11 -0
@@ -0,0 +1,11 @@
1added: .features {
2added: display: flex;
3added: align-items: center;
4added: padding: 2rem 0;
5added: width: 100%;
6added: }
7added:
8added: .featureSvg {
9added: height: 200px;
10added: width: 200px;
11added: }
Addedsrc/css/custom.css+30 -0
@@ -0,0 +1,30 @@
1added: /**
2added: * Any CSS included here will be global. The classic template
3added: * bundles Infima by default. Infima is a CSS framework designed to
4added: * work well for content-centric websites.
5added: */
6added:
7added: /* You can override the default Infima variables here. */
8added: :root {
9added: --ifm-color-primary: #2e8555;
10added: --ifm-color-primary-dark: #29784c;
11added: --ifm-color-primary-darker: #277148;
12added: --ifm-color-primary-darkest: #205d3b;
13added: --ifm-color-primary-light: #33925d;
14added: --ifm-color-primary-lighter: #359962;
15added: --ifm-color-primary-lightest: #3cad6e;
16added: --ifm-code-font-size: 95%;
17added: --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
18added: }
19added:
20added: /* For readability concerns, you should choose a lighter palette in dark mode. */
21added: [data-theme='dark'] {
22added: --ifm-color-primary: #25c2a0;
23added: --ifm-color-primary-dark: #21af90;
24added: --ifm-color-primary-darker: #1fa588;
25added: --ifm-color-primary-darkest: #1a8870;
26added: --ifm-color-primary-light: #29d5b0;
27added: --ifm-color-primary-lighter: #32d8b4;
28added: --ifm-color-primary-lightest: #4fddbf;
29added: --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
30added: }
Addedsrc/pages/index.module.css+23 -0
@@ -0,0 +1,23 @@
1added: /**
2added: * CSS files with the .module.css suffix will be treated as CSS modules
3added: * and scoped locally.
4added: */
5added:
6added: .heroBanner {
7added: padding: 4rem 0;
8added: text-align: center;
9added: position: relative;
10added: overflow: hidden;
11added: }
12added:
13added: @media screen and (max-width: 996px) {
14added: .heroBanner {
15added: padding: 2rem;
16added: }
17added: }
18added:
19added: .buttons {
20added: display: flex;
21added: align-items: center;
22added: justify-content: center;
23added: }
Addedsrc/pages/index.tsx+44 -0
@@ -0,0 +1,44 @@
1added: import type {ReactNode} from 'react';
2added: import clsx from 'clsx';
3added: import Link from '@docusaurus/Link';
4added: import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
5added: import Layout from '@theme/Layout';
6added: import HomepageFeatures from '@site/src/components/HomepageFeatures';
7added: import Heading from '@theme/Heading';
8added:
9added: import styles from './index.module.css';
10added:
11added: function HomepageHeader() {
12added: const {siteConfig} = useDocusaurusContext();
13added: return (
14added: <header className={clsx('hero hero--primary', styles.heroBanner)}>
15added: <div className="container">
16added: <Heading as="h1" className="hero__title">
17added: {siteConfig.title}
18added: </Heading>
19added: <p className="hero__subtitle">{siteConfig.tagline}</p>
20added: <div className={styles.buttons}>
21added: <Link
22added: className="button button--secondary button--lg"
23added: to="/docs/intro">
24added: Docusaurus Tutorial - 5min ⏱️
25added: </Link>
26added: </div>
27added: </div>
28added: </header>
29added: );
30added: }
31added:
32added: export default function Home(): ReactNode {
33added: const {siteConfig} = useDocusaurusContext();
34added: return (
35added: <Layout
36added: title={`Hello from ${siteConfig.title}`}
37added: description="Description will go into a meta tag in <head />">
38added: <HomepageHeader />
39added: <main>
40added: <HomepageFeatures />
41added: </main>
42added: </Layout>
43added: );
44added: }
Addedsrc/pages/markdown-page.md+7 -0
@@ -0,0 +1,7 @@
1added: ---
2added: title: Markdown page example
3added: ---
4added:
5added: # Markdown page example
6added:
7added: You don't need React to write simple standalone pages.
Addedstatic/.nojekyll+0 -0

Empty file.

Addedstatic/img/docusaurus-social-card.jpg

Binary file not shown.

Addedstatic/img/docusaurus.png

Binary file not shown.

Addedstatic/img/favicon.ico

Binary file not shown.

Addedstatic/img/logo.svg+1 -0
@@ -0,0 +1 @@
1added: <svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#FFF" d="M99 52h84v34H99z"/><path d="M23 163c-7.398 0-13.843-4.027-17.303-10A19.886 19.886 0 0 0 3 163c0 11.046 8.954 20 20 20h20v-20H23z" fill="#3ECC5F"/><path d="M112.98 57.376L183 53V43c0-11.046-8.954-20-20-20H73l-2.5-4.33c-1.112-1.925-3.889-1.925-5 0L63 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L53 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L43 23c-.022 0-.042.003-.065.003l-4.142-4.141c-1.57-1.571-4.252-.853-4.828 1.294l-1.369 5.104-5.192-1.392c-2.148-.575-4.111 1.389-3.535 3.536l1.39 5.193-5.102 1.367c-2.148.576-2.867 3.259-1.296 4.83l4.142 4.142c0 .021-.003.042-.003.064l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 53l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 63l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 73l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 83l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 93l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 103l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 113l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 123l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 133l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 143l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 153l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 163c0 11.046 8.954 20 20 20h120c11.046 0 20-8.954 20-20V83l-70.02-4.376A10.645 10.645 0 0 1 103 68c0-5.621 4.37-10.273 9.98-10.624" fill="#3ECC5F"/><path fill="#3ECC5F" d="M143 183h30v-40h-30z"/><path d="M193 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 190.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M153 123h30v-20h-30z"/><path d="M193 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 183 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M63 55.5a2.5 2.5 0 0 1-2.5-2.5c0-4.136-3.364-7.5-7.5-7.5s-7.5 3.364-7.5 7.5a2.5 2.5 0 1 1-5 0c0-6.893 5.607-12.5 12.5-12.5S65.5 46.107 65.5 53a2.5 2.5 0 0 1-2.5 2.5" fill="#000"/><path d="M103 183h60c11.046 0 20-8.954 20-20V93h-60c-11.046 0-20 8.954-20 20v70z" fill="#FFFF50"/><path d="M168.02 124h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0-49.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 19.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2M183 61.611c-.012 0-.022-.006-.034-.005-3.09.105-4.552 3.196-5.842 5.923-1.346 2.85-2.387 4.703-4.093 4.647-1.889-.068-2.969-2.202-4.113-4.46-1.314-2.594-2.814-5.536-5.963-5.426-3.046.104-4.513 2.794-5.807 5.167-1.377 2.528-2.314 4.065-4.121 3.994-1.927-.07-2.951-1.805-4.136-3.813-1.321-2.236-2.848-4.75-5.936-4.664-2.994.103-4.465 2.385-5.763 4.4-1.373 2.13-2.335 3.428-4.165 3.351-1.973-.07-2.992-1.51-4.171-3.177-1.324-1.873-2.816-3.993-5.895-3.89-2.928.1-4.399 1.97-5.696 3.618-1.232 1.564-2.194 2.802-4.229 2.724a1 1 0 0 0-.072 2c3.017.101 4.545-1.8 5.872-3.487 1.177-1.496 2.193-2.787 4.193-2.855 1.926-.082 2.829 1.115 4.195 3.045 1.297 1.834 2.769 3.914 5.731 4.021 3.103.104 4.596-2.215 5.918-4.267 1.182-1.834 2.202-3.417 4.15-3.484 1.793-.067 2.769 1.35 4.145 3.681 1.297 2.197 2.766 4.686 5.787 4.796 3.125.108 4.634-2.62 5.949-5.035 1.139-2.088 2.214-4.06 4.119-4.126 1.793-.042 2.728 1.595 4.111 4.33 1.292 2.553 2.757 5.445 5.825 5.556l.169.003c3.064 0 4.518-3.075 5.805-5.794 1.139-2.41 2.217-4.68 4.067-4.773v-2z" fill="#000"/><path fill="#3ECC5F" d="M83 183h40v-40H83z"/><path d="M143 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 140.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M83 123h40v-20H83z"/><path d="M133 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 123 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M143 41.75c-.16 0-.33-.02-.49-.05a2.52 2.52 0 0 1-.47-.14c-.15-.06-.29-.14-.431-.23-.13-.09-.259-.2-.38-.31-.109-.12-.219-.24-.309-.38s-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.16.02-.33.05-.49.03-.16.08-.31.139-.47.061-.15.141-.29.231-.43.09-.13.2-.26.309-.38.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.65-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.11.12.22.25.31.38.09.14.17.28.23.43.06.16.11.31.14.47.029.16.05.33.05.49 0 .66-.271 1.31-.73 1.77-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19m20-1.25c-.66 0-1.3-.27-1.771-.73a3.802 3.802 0 0 1-.309-.38c-.09-.14-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.66.27-1.3.729-1.77.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.66-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.459.47.73 1.11.73 1.77 0 .16-.021.33-.05.49-.03.16-.08.32-.14.47-.07.15-.14.29-.23.43-.09.13-.2.26-.31.38-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19" fill="#000"/></g></svg>
Addedstatic/img/undraw_docusaurus_mountain.svg+171 -0
@@ -0,0 +1,171 @@
1added: <svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
2added: <title>Easy to Use</title>
3added: <g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
4added: <g id="Group_11" data-name="Group 11" transform="translate(57 56)">
5added: <path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
6added: <path id="Path_84" data-name="Path 84" d="M986.56,670.771c-20,38.52-47.21,64.04-77.77,80.28a193.272,193.272,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.3,657.3,0,0,0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25,1.72c-100.17,7.36-253.82-6.43-321.42-143.29L382,283.981,444.95,445.6l20.09,51.59,55.37-75.98L549,381.981l130.2,149.27,36.8-81.27L970.78,657.9l14.21,11.59Z" transform="translate(-56 -106.019)" fill="#f2f2f2"/>
7added: <path id="Path_85" data-name="Path 85" d="M302,282.962l26-57,36,83-31-60Z" opacity="0.1"/>
8added: <path id="Path_86" data-name="Path 86" d="M610.5,753.821q-14.97-.675-29.97-.67L465.04,497.191Z" transform="translate(-56 -106.019)" opacity="0.1"/>
9added: <path id="Path_87" data-name="Path 87" d="M464.411,315.191,493,292.962l130,150-132-128Z" opacity="0.1"/>
10added: <path id="Path_88" data-name="Path 88" d="M908.79,751.051a193.265,193.265,0,0,1-27.46,11.94L679.2,531.251Z" transform="translate(-56 -106.019)" opacity="0.1"/>
11added: <circle id="Ellipse_11" data-name="Ellipse 11" cx="3" cy="3" r="3" transform="translate(479 98.962)" fill="#f2f2f2"/>
12added: <circle id="Ellipse_12" data-name="Ellipse 12" cx="3" cy="3" r="3" transform="translate(396 201.962)" fill="#f2f2f2"/>
13added: <circle id="Ellipse_13" data-name="Ellipse 13" cx="2" cy="2" r="2" transform="translate(600 220.962)" fill="#f2f2f2"/>
14added: <circle id="Ellipse_14" data-name="Ellipse 14" cx="2" cy="2" r="2" transform="translate(180 265.962)" fill="#f2f2f2"/>
15added: <circle id="Ellipse_15" data-name="Ellipse 15" cx="2" cy="2" r="2" transform="translate(612 96.962)" fill="#f2f2f2"/>
16added: <circle id="Ellipse_16" data-name="Ellipse 16" cx="2" cy="2" r="2" transform="translate(736 192.962)" fill="#f2f2f2"/>
17added: <circle id="Ellipse_17" data-name="Ellipse 17" cx="2" cy="2" r="2" transform="translate(858 344.962)" fill="#f2f2f2"/>
18added: <path id="Path_89" data-name="Path 89" d="M306,121.222h-2.76v-2.76h-1.48v2.76H299V122.7h2.76v2.759h1.48V122.7H306Z" fill="#f2f2f2"/>
19added: <path id="Path_90" data-name="Path 90" d="M848,424.222h-2.76v-2.76h-1.48v2.76H841V425.7h2.76v2.759h1.48V425.7H848Z" fill="#f2f2f2"/>
20added: <path id="Path_91" data-name="Path 91" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
21added: <path id="Path_92" data-name="Path 92" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" opacity="0.1"/>
22added: <ellipse id="Ellipse_18" data-name="Ellipse 18" cx="544" cy="30" rx="544" ry="30" transform="translate(0 583.962)" fill="#3f3d56"/>
23added: <path id="Path_93" data-name="Path 93" d="M624,677.981c0,33.137-14.775,24-33,24s-33,9.137-33-24,33-96,33-96S624,644.844,624,677.981Z" transform="translate(-56 -106.019)" fill="#ff6584"/>
24added: <path id="Path_94" data-name="Path 94" d="M606,690.66c0,15.062-6.716,10.909-15,10.909s-15,4.153-15-10.909,15-43.636,15-43.636S606,675.6,606,690.66Z" transform="translate(-56 -106.019)" opacity="0.1"/>
25added: <rect id="Rectangle_97" data-name="Rectangle 97" width="92" height="18" rx="9" transform="translate(489 604.962)" fill="#2f2e41"/>
26added: <rect id="Rectangle_98" data-name="Rectangle 98" width="92" height="18" rx="9" transform="translate(489 586.962)" fill="#2f2e41"/>
27added: <path id="Path_95" data-name="Path 95" d="M193,596.547c0,55.343,34.719,100.126,77.626,100.126" transform="translate(-56 -106.019)" fill="#3f3d56"/>
28added: <path id="Path_96" data-name="Path 96" d="M270.626,696.673c0-55.965,38.745-101.251,86.626-101.251" transform="translate(-56 -106.019)" fill="#6c63ff"/>
29added: <path id="Path_97" data-name="Path 97" d="M221.125,601.564c0,52.57,22.14,95.109,49.5,95.109" transform="translate(-56 -106.019)" fill="#6c63ff"/>
30added: <path id="Path_98" data-name="Path 98" d="M270.626,696.673c0-71.511,44.783-129.377,100.126-129.377" transform="translate(-56 -106.019)" fill="#3f3d56"/>
31added: <path id="Path_99" data-name="Path 99" d="M254.3,697.379s11.009-.339,14.326-2.7,16.934-5.183,17.757-1.395,16.544,18.844,4.115,18.945-28.879-1.936-32.19-3.953S254.3,697.379,254.3,697.379Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
32added: <path id="Path_100" data-name="Path 100" d="M290.716,710.909c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7,8.879,4.009,10.9,19.761,4.053,32.19,3.953c3.588-.029,4.827-1.305,4.759-3.2C294.755,710.174,293.386,710.887,290.716,710.909Z" transform="translate(-56 -106.019)" opacity="0.2"/>
33added: <path id="Path_101" data-name="Path 101" d="M777.429,633.081c0,38.029,23.857,68.8,53.341,68.8" transform="translate(-56 -106.019)" fill="#3f3d56"/>
34added: <path id="Path_102" data-name="Path 102" d="M830.769,701.882c0-38.456,26.623-69.575,59.525-69.575" transform="translate(-56 -106.019)" fill="#6c63ff"/>
35added: <path id="Path_103" data-name="Path 103" d="M796.755,636.528c0,36.124,15.213,65.354,34.014,65.354" transform="translate(-56 -106.019)" fill="#6c63ff"/>
36added: <path id="Path_104" data-name="Path 104" d="M830.769,701.882c0-49.139,30.773-88.9,68.8-88.9" transform="translate(-56 -106.019)" fill="#3f3d56"/>
37added: <path id="Path_105" data-name="Path 105" d="M819.548,702.367s7.565-.233,9.844-1.856,11.636-3.562,12.2-.958,11.368,12.949,2.828,13.018-19.844-1.33-22.119-2.716S819.548,702.367,819.548,702.367Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
38added: <path id="Path_106" data-name="Path 106" d="M844.574,711.664c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479,6.1,2.755,7.487,13.579,2.785,22.119,2.716c2.465-.02,3.317-.9,3.27-2.2C847.349,711.159,846.409,711.649,844.574,711.664Z" transform="translate(-56 -106.019)" opacity="0.2"/>
39added: <path id="Path_107" data-name="Path 107" d="M949.813,724.718s11.36-1.729,14.5-4.591,16.89-7.488,18.217-3.667,19.494,17.447,6.633,19.107-30.153,1.609-33.835-.065S949.813,724.718,949.813,724.718Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
40added: <path id="Path_108" data-name="Path 108" d="M989.228,734.173c-12.86,1.659-30.153,1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833,9.109,5.516,10.783,20.975,1.725,33.835.065c3.712-.479,4.836-1.956,4.529-3.906C993.319,732.907,991.991,733.817,989.228,734.173Z" transform="translate(-56 -106.019)" opacity="0.2"/>
41added: <path id="Path_109" data-name="Path 109" d="M670.26,723.9s9.587-1.459,12.237-3.875,14.255-6.32,15.374-3.095,16.452,14.725,5.6,16.125-25.448,1.358-28.555-.055S670.26,723.9,670.26,723.9Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
42added: <path id="Path_110" data-name="Path 110" d="M703.524,731.875c-10.853,1.4-25.448,1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547,7.687,4.655,9.1,17.7,1.456,28.555.055c3.133-.4,4.081-1.651,3.822-3.3C706.977,730.807,705.856,731.575,703.524,731.875Z" transform="translate(-56 -106.019)" opacity="0.2"/>
43added: <path id="Path_111" data-name="Path 111" d="M178.389,719.109s7.463-1.136,9.527-3.016,11.1-4.92,11.969-2.409,12.808,11.463,4.358,12.553-19.811,1.057-22.23-.043S178.389,719.109,178.389,719.109Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
44added: <path id="Path_112" data-name="Path 112" d="M204.285,725.321c-8.449,1.09-19.811,1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2,5.984,3.624,7.085,13.781,1.133,22.23.043c2.439-.315,3.177-1.285,2.976-2.566C206.973,724.489,206.1,725.087,204.285,725.321Z" transform="translate(-56 -106.019)" opacity="0.2"/>
45added: <path id="Path_113" data-name="Path 113" d="M439.7,707.337c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873,42.118-36.793,93.694-36.793S439.7,677.117,439.7,707.337Z" transform="translate(-56 -106.019)" opacity="0.1"/>
46added: <path id="Path_114" data-name="Path 114" d="M439.7,699.9c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873S295.04,663.1,346.616,663.1,439.7,669.676,439.7,699.9Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
47added: </g>
48added: <g id="docusaurus_keytar" transform="translate(312.271 493.733)">
49added: <path id="Path_40" data-name="Path 40" d="M99,52h91.791V89.153H99Z" transform="translate(5.904 -14.001)" fill="#fff" fill-rule="evenodd"/>
50added: <path id="Path_41" data-name="Path 41" d="M24.855,163.927A21.828,21.828,0,0,1,5.947,153a21.829,21.829,0,0,0,18.908,32.782H46.71V163.927Z" transform="translate(-3 -4.634)" fill="#3ecc5f" fill-rule="evenodd"/>
51added: <path id="Path_42" data-name="Path 42" d="M121.861,61.1l76.514-4.782V45.39A21.854,21.854,0,0,0,176.52,23.535H78.173L75.441,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L64.513,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L53.586,18.8a3.154,3.154,0,0,0-5.464,0L45.39,23.535c-.024,0-.046,0-.071,0l-4.526-4.525a3.153,3.153,0,0,0-5.276,1.414l-1.5,5.577-5.674-1.521a3.154,3.154,0,0,0-3.863,3.864L26,34.023l-5.575,1.494a3.155,3.155,0,0,0-1.416,5.278l4.526,4.526c0,.023,0,.046,0,.07L18.8,48.122a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,59.05a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,69.977a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,80.9a3.154,3.154,0,0,0,0,5.464L23.535,89.1,18.8,91.832a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,102.76a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,113.687a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,124.615a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,135.542a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,146.469a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,157.4a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,168.324a3.154,3.154,0,0,0,0,5.464l4.732,2.732A21.854,21.854,0,0,0,45.39,198.375H176.52a21.854,21.854,0,0,0,21.855-21.855V89.1l-76.514-4.782a11.632,11.632,0,0,1,0-23.219" transform="translate(-1.681 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
52added: <path id="Path_43" data-name="Path 43" d="M143,186.71h32.782V143H143Z" transform="translate(9.984 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
53added: <path id="Path_44" data-name="Path 44" d="M196.71,159.855a5.438,5.438,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(10.912 -6.025)" fill="#44d860" fill-rule="evenodd"/>
54added: <path id="Path_45" data-name="Path 45" d="M153,124.855h32.782V103H153Z" transform="translate(10.912 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
55added: <path id="Path_46" data-name="Path 46" d="M194.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.814,2.814,0,0,0,.349.035" transform="translate(12.767 -9.377)" fill="#44d860" fill-rule="evenodd"/>
56added: <path id="Path_47" data-name="Path 47" d="M65.087,56.891a2.732,2.732,0,0,1-2.732-2.732,8.2,8.2,0,0,0-16.391,0,2.732,2.732,0,0,1-5.464,0,13.659,13.659,0,0,1,27.319,0,2.732,2.732,0,0,1-2.732,2.732" transform="translate(0.478 -15.068)" fill-rule="evenodd"/>
57added: <path id="Path_48" data-name="Path 48" d="M103,191.347h65.565a21.854,21.854,0,0,0,21.855-21.855V93H124.855A21.854,21.854,0,0,0,103,114.855Z" transform="translate(6.275 -10.199)" fill="#ffff50" fill-rule="evenodd"/>
58added: <path id="Path_49" data-name="Path 49" d="M173.216,129.787H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0-54.434H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.652H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186M189.585,61.611c-.013,0-.024-.007-.037-.005-3.377.115-4.974,3.492-6.384,6.472-1.471,3.114-2.608,5.139-4.473,5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932,3.053-6.346,5.646-1.5,2.762-2.529,4.442-4.5,4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879,2.606-6.3,4.808-1.5,2.328-2.552,3.746-4.551,3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807,2.153-6.224,3.954-1.346,1.709-2.4,3.062-4.621,2.977a1.093,1.093,0,0,0-.079,2.186c3.3.11,4.967-1.967,6.417-3.81,1.286-1.635,2.4-3.045,4.582-3.12,2.1-.09,3.091,1.218,4.584,3.327,1.417,2,3.026,4.277,6.263,4.394,3.391.114,5.022-2.42,6.467-4.663,1.292-2,2.406-3.734,4.535-3.807,1.959-.073,3.026,1.475,4.529,4.022,1.417,2.4,3.023,5.121,6.324,5.241,3.415.118,5.064-2.863,6.5-5.5,1.245-2.282,2.419-4.437,4.5-4.509,1.959-.046,2.981,1.743,4.492,4.732,1.412,2.79,3.013,5.95,6.365,6.071l.185,0c3.348,0,4.937-3.36,6.343-6.331,1.245-2.634,2.423-5.114,4.444-5.216Z" transform="translate(7.109 -13.11)" fill-rule="evenodd"/>
59added: <path id="Path_50" data-name="Path 50" d="M83,186.71h43.71V143H83Z" transform="translate(4.42 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
60added: <g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 109.327, 91.085)">
61added: <rect id="Rectangle_3" data-name="Rectangle 3" width="92.361" height="36.462" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
62added: <g id="Group_2" data-name="Group 2" transform="translate(1.531 23.03)">
63added: <rect id="Rectangle_4" data-name="Rectangle 4" width="5.336" height="5.336" rx="1" transform="translate(16.797 0)" fill="#4a4a4a"/>
64added: <rect id="Rectangle_5" data-name="Rectangle 5" width="5.336" height="5.336" rx="1" transform="translate(23.12 0)" fill="#4a4a4a"/>
65added: <rect id="Rectangle_6" data-name="Rectangle 6" width="5.336" height="5.336" rx="1" transform="translate(29.444 0)" fill="#4a4a4a"/>
66added: <rect id="Rectangle_7" data-name="Rectangle 7" width="5.336" height="5.336" rx="1" transform="translate(35.768 0)" fill="#4a4a4a"/>
67added: <rect id="Rectangle_8" data-name="Rectangle 8" width="5.336" height="5.336" rx="1" transform="translate(42.091 0)" fill="#4a4a4a"/>
68added: <rect id="Rectangle_9" data-name="Rectangle 9" width="5.336" height="5.336" rx="1" transform="translate(48.415 0)" fill="#4a4a4a"/>
69added: <rect id="Rectangle_10" data-name="Rectangle 10" width="5.336" height="5.336" rx="1" transform="translate(54.739 0)" fill="#4a4a4a"/>
70added: <rect id="Rectangle_11" data-name="Rectangle 11" width="5.336" height="5.336" rx="1" transform="translate(61.063 0)" fill="#4a4a4a"/>
71added: <rect id="Rectangle_12" data-name="Rectangle 12" width="5.336" height="5.336" rx="1" transform="translate(67.386 0)" fill="#4a4a4a"/>
72added: <path id="Path_51" data-name="Path 51" d="M1.093,0H14.518a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0ZM75,0H88.426a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H75a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,75,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
73added: </g>
74added: <g id="Group_3" data-name="Group 3" transform="translate(1.531 10.261)">
75added: <path id="Path_52" data-name="Path 52" d="M1.093,0H6.218A1.093,1.093,0,0,1,7.31,1.093V4.242A1.093,1.093,0,0,1,6.218,5.335H1.093A1.093,1.093,0,0,1,0,4.242V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
76added: <rect id="Rectangle_13" data-name="Rectangle 13" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
77added: <rect id="Rectangle_14" data-name="Rectangle 14" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
78added: <rect id="Rectangle_15" data-name="Rectangle 15" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
79added: <rect id="Rectangle_16" data-name="Rectangle 16" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
80added: <rect id="Rectangle_17" data-name="Rectangle 17" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
81added: <rect id="Rectangle_18" data-name="Rectangle 18" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
82added: <rect id="Rectangle_19" data-name="Rectangle 19" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
83added: <rect id="Rectangle_20" data-name="Rectangle 20" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
84added: <rect id="Rectangle_21" data-name="Rectangle 21" width="5.336" height="5.336" rx="1" transform="translate(58.888 0)" fill="#4a4a4a"/>
85added: <rect id="Rectangle_22" data-name="Rectangle 22" width="5.336" height="5.336" rx="1" transform="translate(65.212 0)" fill="#4a4a4a"/>
86added: <rect id="Rectangle_23" data-name="Rectangle 23" width="5.336" height="5.336" rx="1" transform="translate(71.536 0)" fill="#4a4a4a"/>
87added: <rect id="Rectangle_24" data-name="Rectangle 24" width="5.336" height="5.336" rx="1" transform="translate(77.859 0)" fill="#4a4a4a"/>
88added: <rect id="Rectangle_25" data-name="Rectangle 25" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
89added: </g>
90added: <g id="Group_4" data-name="Group 4" transform="translate(91.05 9.546) rotate(180)">
91added: <path id="Path_53" data-name="Path 53" d="M1.093,0H6.219A1.093,1.093,0,0,1,7.312,1.093v3.15A1.093,1.093,0,0,1,6.219,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
92added: <rect id="Rectangle_26" data-name="Rectangle 26" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
93added: <rect id="Rectangle_27" data-name="Rectangle 27" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
94added: <rect id="Rectangle_28" data-name="Rectangle 28" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
95added: <rect id="Rectangle_29" data-name="Rectangle 29" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
96added: <rect id="Rectangle_30" data-name="Rectangle 30" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
97added: <rect id="Rectangle_31" data-name="Rectangle 31" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
98added: <rect id="Rectangle_32" data-name="Rectangle 32" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
99added: <rect id="Rectangle_33" data-name="Rectangle 33" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
100added: <rect id="Rectangle_34" data-name="Rectangle 34" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
101added: <rect id="Rectangle_35" data-name="Rectangle 35" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
102added: <rect id="Rectangle_36" data-name="Rectangle 36" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
103added: <rect id="Rectangle_37" data-name="Rectangle 37" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
104added: <rect id="Rectangle_38" data-name="Rectangle 38" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
105added: <rect id="Rectangle_39" data-name="Rectangle 39" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
106added: <rect id="Rectangle_40" data-name="Rectangle 40" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
107added: <rect id="Rectangle_41" data-name="Rectangle 41" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
108added: <rect id="Rectangle_42" data-name="Rectangle 42" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
109added: <rect id="Rectangle_43" data-name="Rectangle 43" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
110added: <rect id="Rectangle_44" data-name="Rectangle 44" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
111added: <rect id="Rectangle_45" data-name="Rectangle 45" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
112added: <rect id="Rectangle_46" data-name="Rectangle 46" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
113added: <rect id="Rectangle_47" data-name="Rectangle 47" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
114added: <rect id="Rectangle_48" data-name="Rectangle 48" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
115added: <rect id="Rectangle_49" data-name="Rectangle 49" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
116added: <rect id="Rectangle_50" data-name="Rectangle 50" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
117added: <rect id="Rectangle_51" data-name="Rectangle 51" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
118added: </g>
119added: <g id="Group_6" data-name="Group 6" transform="translate(1.531 16.584)">
120added: <path id="Path_54" data-name="Path 54" d="M1.093,0h7.3A1.093,1.093,0,0,1,9.485,1.093v3.15A1.093,1.093,0,0,1,8.392,5.336h-7.3A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
121added: <g id="Group_5" data-name="Group 5" transform="translate(10.671 0)">
122added: <rect id="Rectangle_52" data-name="Rectangle 52" width="5.336" height="5.336" rx="1" fill="#4a4a4a"/>
123added: <rect id="Rectangle_53" data-name="Rectangle 53" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
124added: <rect id="Rectangle_54" data-name="Rectangle 54" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
125added: <rect id="Rectangle_55" data-name="Rectangle 55" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
126added: <rect id="Rectangle_56" data-name="Rectangle 56" width="5.336" height="5.336" rx="1" transform="translate(25.295 0)" fill="#4a4a4a"/>
127added: <rect id="Rectangle_57" data-name="Rectangle 57" width="5.336" height="5.336" rx="1" transform="translate(31.619 0)" fill="#4a4a4a"/>
128added: <rect id="Rectangle_58" data-name="Rectangle 58" width="5.336" height="5.336" rx="1" transform="translate(37.942 0)" fill="#4a4a4a"/>
129added: <rect id="Rectangle_59" data-name="Rectangle 59" width="5.336" height="5.336" rx="1" transform="translate(44.265 0)" fill="#4a4a4a"/>
130added: <rect id="Rectangle_60" data-name="Rectangle 60" width="5.336" height="5.336" rx="1" transform="translate(50.589 0)" fill="#4a4a4a"/>
131added: <rect id="Rectangle_61" data-name="Rectangle 61" width="5.336" height="5.336" rx="1" transform="translate(56.912 0)" fill="#4a4a4a"/>
132added: <rect id="Rectangle_62" data-name="Rectangle 62" width="5.336" height="5.336" rx="1" transform="translate(63.236 0)" fill="#4a4a4a"/>
133added: </g>
134added: <path id="Path_55" data-name="Path 55" d="M1.094,0H8A1.093,1.093,0,0,1,9.091,1.093v3.15A1.093,1.093,0,0,1,8,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(80.428 0)" fill="#4a4a4a" fill-rule="evenodd"/>
135added: </g>
136added: <g id="Group_7" data-name="Group 7" transform="translate(1.531 29.627)">
137added: <rect id="Rectangle_63" data-name="Rectangle 63" width="5.336" height="5.336" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
138added: <rect id="Rectangle_64" data-name="Rectangle 64" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
139added: <rect id="Rectangle_65" data-name="Rectangle 65" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
140added: <rect id="Rectangle_66" data-name="Rectangle 66" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
141added: <path id="Path_56" data-name="Path 56" d="M1.093,0H31.515a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.244V1.093A1.093,1.093,0,0,1,1.093,0ZM34.687,0h3.942a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H34.687a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,34.687,0Z" transform="translate(25.294 0)" fill="#4a4a4a" fill-rule="evenodd"/>
142added: <rect id="Rectangle_67" data-name="Rectangle 67" width="5.336" height="5.336" rx="1" transform="translate(66.003 0)" fill="#4a4a4a"/>
143added: <rect id="Rectangle_68" data-name="Rectangle 68" width="5.336" height="5.336" rx="1" transform="translate(72.327 0)" fill="#4a4a4a"/>
144added: <rect id="Rectangle_69" data-name="Rectangle 69" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
145added: <path id="Path_57" data-name="Path 57" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(83.59 2.273) rotate(180)" fill="#4a4a4a"/>
146added: <path id="Path_58" data-name="Path 58" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(78.255 3.063)" fill="#4a4a4a"/>
147added: </g>
148added: <rect id="Rectangle_70" data-name="Rectangle 70" width="88.927" height="2.371" rx="1.085" transform="translate(1.925 1.17)" fill="#4a4a4a"/>
149added: <rect id="Rectangle_71" data-name="Rectangle 71" width="4.986" height="1.581" rx="0.723" transform="translate(4.1 1.566)" fill="#d8d8d8" opacity="0.136"/>
150added: <rect id="Rectangle_72" data-name="Rectangle 72" width="4.986" height="1.581" rx="0.723" transform="translate(10.923 1.566)" fill="#d8d8d8" opacity="0.136"/>
151added: <rect id="Rectangle_73" data-name="Rectangle 73" width="4.986" height="1.581" rx="0.723" transform="translate(16.173 1.566)" fill="#d8d8d8" opacity="0.136"/>
152added: <rect id="Rectangle_74" data-name="Rectangle 74" width="4.986" height="1.581" rx="0.723" transform="translate(21.421 1.566)" fill="#d8d8d8" opacity="0.136"/>
153added: <rect id="Rectangle_75" data-name="Rectangle 75" width="4.986" height="1.581" rx="0.723" transform="translate(26.671 1.566)" fill="#d8d8d8" opacity="0.136"/>
154added: <rect id="Rectangle_76" data-name="Rectangle 76" width="4.986" height="1.581" rx="0.723" transform="translate(33.232 1.566)" fill="#d8d8d8" opacity="0.136"/>
155added: <rect id="Rectangle_77" data-name="Rectangle 77" width="4.986" height="1.581" rx="0.723" transform="translate(38.48 1.566)" fill="#d8d8d8" opacity="0.136"/>
156added: <rect id="Rectangle_78" data-name="Rectangle 78" width="4.986" height="1.581" rx="0.723" transform="translate(43.73 1.566)" fill="#d8d8d8" opacity="0.136"/>
157added: <rect id="Rectangle_79" data-name="Rectangle 79" width="4.986" height="1.581" rx="0.723" transform="translate(48.978 1.566)" fill="#d8d8d8" opacity="0.136"/>
158added: <rect id="Rectangle_80" data-name="Rectangle 80" width="4.986" height="1.581" rx="0.723" transform="translate(55.54 1.566)" fill="#d8d8d8" opacity="0.136"/>
159added: <rect id="Rectangle_81" data-name="Rectangle 81" width="4.986" height="1.581" rx="0.723" transform="translate(60.788 1.566)" fill="#d8d8d8" opacity="0.136"/>
160added: <rect id="Rectangle_82" data-name="Rectangle 82" width="4.986" height="1.581" rx="0.723" transform="translate(66.038 1.566)" fill="#d8d8d8" opacity="0.136"/>
161added: <rect id="Rectangle_83" data-name="Rectangle 83" width="4.986" height="1.581" rx="0.723" transform="translate(72.599 1.566)" fill="#d8d8d8" opacity="0.136"/>
162added: <rect id="Rectangle_84" data-name="Rectangle 84" width="4.986" height="1.581" rx="0.723" transform="translate(77.847 1.566)" fill="#d8d8d8" opacity="0.136"/>
163added: <rect id="Rectangle_85" data-name="Rectangle 85" width="4.986" height="1.581" rx="0.723" transform="translate(83.097 1.566)" fill="#d8d8d8" opacity="0.136"/>
164added: </g>
165added: <path id="Path_59" data-name="Path 59" d="M146.71,159.855a5.439,5.439,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(6.275 -6.025)" fill="#44d860" fill-rule="evenodd"/>
166added: <path id="Path_60" data-name="Path 60" d="M83,124.855h43.71V103H83Z" transform="translate(4.42 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
167added: <path id="Path_61" data-name="Path 61" d="M134.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.811,2.811,0,0,0,.349.035" transform="translate(7.202 -9.377)" fill="#44d860" fill-rule="evenodd"/>
168added: <path id="Path_62" data-name="Path 62" d="M143.232,42.33a2.967,2.967,0,0,1-.535-.055,2.754,2.754,0,0,1-.514-.153,2.838,2.838,0,0,1-.471-.251,4.139,4.139,0,0,1-.415-.339,3.2,3.2,0,0,1-.338-.415A2.7,2.7,0,0,1,140.5,39.6a2.968,2.968,0,0,1,.055-.535,3.152,3.152,0,0,1,.152-.514,2.874,2.874,0,0,1,.252-.47,2.633,2.633,0,0,1,.753-.754,2.837,2.837,0,0,1,.471-.251,2.753,2.753,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,4.019,4.019,0,0,1,.339.415,2.786,2.786,0,0,1,.251.47,2.864,2.864,0,0,1,.208,1.049,2.77,2.77,0,0,1-.8,1.934,4.139,4.139,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459m21.855-1.366a2.789,2.789,0,0,1-1.935-.8,4.162,4.162,0,0,1-.338-.415,2.7,2.7,0,0,1-.459-1.519,2.789,2.789,0,0,1,.8-1.934,4.139,4.139,0,0,1,.415-.339,2.838,2.838,0,0,1,.471-.251,2.752,2.752,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,2.79,2.79,0,0,1,.8,1.934,3.069,3.069,0,0,1-.055.535,2.779,2.779,0,0,1-.153.514,3.885,3.885,0,0,1-.251.47,4.02,4.02,0,0,1-.339.415,4.138,4.138,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459" transform="translate(9.753 -15.532)" fill-rule="evenodd"/>
169added: </g>
170added: </g>
171added: </svg>
Addedstatic/img/undraw_docusaurus_react.svg+170 -0
@@ -0,0 +1,170 @@
1added: <svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
2added: <title>Powered by React</title>
3added: <g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
4added: <g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
5added: <path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
6added: <path id="Path_300" data-name="Path 300" d="M576.36,618.52a95.21,95.21,0,0,1-1.87,11.12h93.7V618.52Zm-78.25,62.81,11.11-.09V653.77c-3.81-.17-7.52-.34-11.11-.52ZM265.19,618.52v11.12h198.5V618.52ZM1114.87,279h-74V191.51q-5.35-2.17-11.12-4V279H776.21V186.58c-3.73.73-7.43,1.5-11.12,2.28V279H509.22V236.15c-3.69-.11-7.4-.29-11.11-.53V279H242.24V217c-24.83,15.16-48.14,36.48-68.93,62h-.07v.08q-4.4,5.4-8.64,11h8.64V618.52h-83q1.66,5.63,3.6,11.12h79.39v93.62a87,87,0,0,0,12.2,2.79c1.21.19,2.43.35,3.65.49h0a87.991,87.991,0,0,0,10.79.54l42.33-.46v-97H498.11v94.21l11.11-.12V629.64H765.09V721l11.12-.12V629.64H1029.7v4.77c.76-1.58,1.54-3.16,2.32-4.77q2.63-5.45,5.33-11.12,1.73-3.64,3.47-7.4v-321h76.42Q1116.23,284.43,1114.87,279ZM242.24,618.52V290.08H498.11V618.52Zm267,0V290.08H765.09V618.52Zm520.48,0H776.21V290.08H1029.7Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
7added: <path id="Path_301" data-name="Path 301" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" fill="#65617d"/>
8added: <path id="Path_302" data-name="Path 302" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" opacity="0.2"/>
9added: <path id="Path_303" data-name="Path 303" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
10added: <path id="Path_304" data-name="Path 304" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
11added: <path id="Path_305" data-name="Path 305" d="M377.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
12added: <rect id="Rectangle_137" data-name="Rectangle 137" width="47.17" height="31.5" transform="translate(680.92 483.65)" fill="#3f3d56"/>
13added: <rect id="Rectangle_138" data-name="Rectangle 138" width="47.17" height="31.5" transform="translate(680.92 483.65)" opacity="0.1"/>
14added: <rect id="Rectangle_139" data-name="Rectangle 139" width="47.17" height="31.5" transform="translate(678.92 483.65)" fill="#3f3d56"/>
15added: <path id="Path_306" data-name="Path 306" d="M298.09,483.65v4.97l-47.17,1.26v-6.23Z" opacity="0.1"/>
16added: <path id="Path_307" data-name="Path 307" d="M460.69,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6a4,4,0,0,1,3.95,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
17added: <path id="Path_308" data-name="Path 308" d="M265.19,481.32v181.2h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
18added: <path id="Path_309" data-name="Path 309" d="M194.59,319.15h177.5V467.4l-177.5,4Z" fill="#39374d"/>
19added: <path id="Path_310" data-name="Path 310" d="M726.09,483.65v6.41l-47.17-1.26v-5.15Z" opacity="0.1"/>
20added: <path id="Path_311" data-name="Path 311" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0L672,657.42a4,4,0,0,1-3.85-3.95V485.27a4,4,0,0,1,3.95-3.95H863.7a4,4,0,0,1,3.99,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
21added: <path id="Path_312" data-name="Path 312" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0V481.32h0a4,4,0,0,1,4,3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
22added: <path id="Path_313" data-name="Path 313" d="M775.59,319.15H598.09V467.4l177.5,4Z" fill="#39374d"/>
23added: <path id="Path_314" data-name="Path 314" d="M663.19,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h0a4,4,0,0,1-4-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6A4,4,0,0,1,663.19,485.27Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
24added: <path id="Path_315" data-name="Path 315" d="M397.09,319.15h177.5V467.4l-177.5,4Z" fill="#4267b2"/>
25added: <path id="Path_316" data-name="Path 316" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5,4.4-.02.98-.01Z" opacity="0.1"/>
26added: <circle id="Ellipse_111" data-name="Ellipse 111" cx="51.33" cy="51.33" r="51.33" transform="translate(435.93 246.82)" fill="#fbbebe"/>
27added: <path id="Path_317" data-name="Path 317" d="M617.94,550.07s-99.5,12-90,0c3.44-4.34,4.39-17.2,4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41,77-8.5c-4,13.13-2.69,31.57.35,48.88.89,5.05,1.92,10,3,14.7a344.66,344.66,0,0,0,9.65,33.92Z" transform="translate(-79.34 -172.91)" fill="#fbbebe"/>
28added: <path id="Path_318" data-name="Path 318" d="M585.47,546c11.51-2.13,23.7-6,34.53-1.54,2.85,1.17,5.47,2.88,8.39,3.86s6.12,1.22,9.16,1.91c10.68,2.42,19.34,10.55,24.9,20s8.44,20.14,11.26,30.72l6.9,25.83c6,22.45,12,45.09,13.39,68.3a2437.506,2437.506,0,0,1-250.84,1.43c5.44-10.34,11-21.31,10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34,6.57-13.39,9.64-20.22,8.75-19.52,1.94-45.79,17.32-60.65,6.92-6.68,17-9.21,26.63-8.89,12.28.41,24.85,4.24,37,6.11C555.09,547.48,569.79,548.88,585.47,546Z" transform="translate(-79.34 -172.91)" fill="#ff6584"/>
29added: <path id="Path_319" data-name="Path 319" d="M716.37,657.17l-.1,1.43v.1l-.17,2.3-1.33,18.51-1.61,22.3-.46,6.28-1,13.44v.17l-107,1-175.59,1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53,10.53,0,0,1,11.42-10.17c4.72.4,10.85.89,18.18,1.41l3,.22c42.33,2.94,120.56,6.74,199.5,2,1.66-.09,3.33-.19,5-.31,12.24-.77,24.47-1.76,36.58-3a10.53,10.53,0,0,1,11.6,11.23Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
30added: <path id="Path_320" data-name="Path 320" d="M429.08,725.44v-.84l175.62-1.91,107-1h.3v-.17l1-13.44.43-6,1.64-22.61,1.29-17.9v-.44a10.617,10.617,0,0,0-.11-2.47.3.3,0,0,0,0-.1,10.391,10.391,0,0,0-2-4.64,10.54,10.54,0,0,0-9.42-4c-12.11,1.24-24.34,2.23-36.58,3-1.67.12-3.34.22-5,.31-78.94,4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54,10.54,0,0,0-11.24,8.53,11,11,0,0,0-.18,1.64l-.68,22.16L429.54,710l-.44,14.36v1.12Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
31added: <path id="Path_321" data-name="Path 321" d="M716.67,664.18l-1.23,15.33-1.83,22.85-.46,5.72-1,12.81-.06.64v.17h0l-.15,1.48.11-1.48h-.29l-107,1-175.65,1.9v-.28l.49-14.36,1-28.06.64-18.65A6.36,6.36,0,0,1,434.3,658a6.25,6.25,0,0,1,3.78-.9c2.1.17,4.68.37,7.69.59,4.89.36,10.92.78,17.94,1.22,13,.82,29.31,1.7,48,2.42,52,2,122.2,2.67,188.88-3.17,3-.26,6.1-.55,9.13-.84a6.26,6.26,0,0,1,3.48.66,5.159,5.159,0,0,1,.86.54,6.14,6.14,0,0,1,2,2.46,3.564,3.564,0,0,1,.25.61A6.279,6.279,0,0,1,716.67,664.18Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
32added: <path id="Path_322" data-name="Path 322" d="M377.44,677.87v3.19a6.13,6.13,0,0,1-3.5,5.54l-40.1.77a6.12,6.12,0,0,1-3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
33added: <path id="Path_323" data-name="Path 323" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
34added: <path id="Path_324" data-name="Path 324" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" opacity="0.1"/>
35added: <path id="Path_325" data-name="Path 325" d="M300.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
36added: <path id="Path_326" data-name="Path 326" d="M758.56,679.87v3.19a6.13,6.13,0,0,0,3.5,5.54l40.1.77a6.12,6.12,0,0,0,3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
37added: <path id="Path_327" data-name="Path 327" d="M678.72,517.57l52.25,1V509.9l-52.25-1Z" opacity="0.1"/>
38added: <path id="Path_328" data-name="Path 328" d="M676.72,517.57l52.25,1V509.9l-52.25-1Z" fill="#3f3d56"/>
39added: <path id="Path_329" data-name="Path 329" d="M534.13,486.79c.08,7-3.16,13.6-5.91,20.07a163.491,163.491,0,0,0-12.66,74.71c.73,11,2.58,22,.73,32.9s-8.43,21.77-19,24.9c17.53,10.45,41.26,9.35,57.76-2.66,8.79-6.4,15.34-15.33,21.75-24.11a97.86,97.86,0,0,1-13.31,44.75A103.43,103.43,0,0,0,637,616.53c4.31-5.81,8.06-12.19,9.72-19.23,3.09-13-1.22-26.51-4.51-39.5a266.055,266.055,0,0,1-6.17-33c-.43-3.56-.78-7.22.1-10.7,1-4.07,3.67-7.51,5.64-11.22,5.6-10.54,5.73-23.3,2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47,1.48-16.14,8.32-22,15.34-4.59,5.46-15.81,15.71-16.6,22.86-.72,6.59,5.1,17.63,6.09,24.58,1.3,9,2.22,6,7.3,11.52C532,478.05,534.07,482,534.13,486.79Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
40added: </g>
41added: <g id="docusaurus_keytar" transform="translate(670.271 615.768)">
42added: <path id="Path_40" data-name="Path 40" d="M99,52h43.635V69.662H99Z" transform="translate(-49.132 -33.936)" fill="#fff" fill-rule="evenodd"/>
43added: <path id="Path_41" data-name="Path 41" d="M13.389,158.195A10.377,10.377,0,0,1,4.4,153a10.377,10.377,0,0,0,8.988,15.584H23.779V158.195Z" transform="translate(-3 -82.47)" fill="#3ecc5f" fill-rule="evenodd"/>
44added: <path id="Path_42" data-name="Path 42" d="M66.967,38.083l36.373-2.273V30.615A10.389,10.389,0,0,0,92.95,20.226H46.2l-1.3-2.249a1.5,1.5,0,0,0-2.6,0L41,20.226l-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-.034,0-2.152-2.151a1.5,1.5,0,0,0-2.508.672L25.21,21.4l-2.7-.723a1.5,1.5,0,0,0-1.836,1.837l.722,2.7-2.65.71a1.5,1.5,0,0,0-.673,2.509l2.152,2.152c0,.011,0,.022,0,.033l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6L20.226,41l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3A10.389,10.389,0,0,0,30.615,103.34H92.95A10.389,10.389,0,0,0,103.34,92.95V51.393L66.967,49.12a5.53,5.53,0,0,1,0-11.038" transform="translate(-9.836 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
45added: <path id="Path_43" data-name="Path 43" d="M143,163.779h15.584V143H143Z" transform="translate(-70.275 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
46added: <path id="Path_44" data-name="Path 44" d="M173.779,148.389a2.582,2.582,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-75.08 -75.262)" fill="#44d860" fill-rule="evenodd"/>
47added: <path id="Path_45" data-name="Path 45" d="M153,113.389h15.584V103H153Z" transform="translate(-75.08 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
48added: <path id="Path_46" data-name="Path 46" d="M183.389,108.944a1.3,1.3,0,1,0,0-2.6,1.336,1.336,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.337,1.337,0,0,0,.166.017" transform="translate(-84.691 -57.894)" fill="#44d860" fill-rule="evenodd"/>
49added: <path id="Path_47" data-name="Path 47" d="M52.188,48.292a1.3,1.3,0,0,1-1.3-1.3,3.9,3.9,0,0,0-7.792,0,1.3,1.3,0,1,1-2.6,0,6.493,6.493,0,0,1,12.987,0,1.3,1.3,0,0,1-1.3,1.3" transform="translate(-21.02 -28.41)" fill-rule="evenodd"/>
50added: <path id="Path_48" data-name="Path 48" d="M103,139.752h31.168a10.389,10.389,0,0,0,10.389-10.389V93H113.389A10.389,10.389,0,0,0,103,103.389Z" transform="translate(-51.054 -53.638)" fill="#ffff50" fill-rule="evenodd"/>
51added: <path id="Path_49" data-name="Path 49" d="M141.1,94.017H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0-25.877H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.293H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m7.782-47.993c-.006,0-.011,0-.018,0-1.605.055-2.365,1.66-3.035,3.077-.7,1.48-1.24,2.443-2.126,2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344,1.451-3.017,2.684-.715,1.313-1.2,2.112-2.141,2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319,1.239-2.994,2.286-.713,1.106-1.213,1.781-2.164,1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815,3.815,0,0,0-2.959,1.879c-.64.812-1.14,1.456-2.2,1.415a.52.52,0,0,0-.037,1.039,3.588,3.588,0,0,0,3.05-1.811c.611-.777,1.139-1.448,2.178-1.483,1-.043,1.47.579,2.179,1.582.674.953,1.438,2.033,2.977,2.089,1.612.054,2.387-1.151,3.074-2.217.614-.953,1.144-1.775,2.156-1.81.931-.035,1.438.7,2.153,1.912.674,1.141,1.437,2.434,3.006,2.491,1.623.056,2.407-1.361,3.09-2.616.592-1.085,1.15-2.109,2.14-2.143.931-.022,1.417.829,2.135,2.249.671,1.326,1.432,2.828,3.026,2.886l.088,0c1.592,0,2.347-1.6,3.015-3.01.592-1.252,1.152-2.431,2.113-2.479Z" transform="translate(-55.378 -38.552)" fill-rule="evenodd"/>
52added: <path id="Path_50" data-name="Path 50" d="M83,163.779h20.779V143H83Z" transform="translate(-41.443 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
53added: <g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 51.971, 43.3)">
54added: <rect id="Rectangle_3" data-name="Rectangle 3" width="43.906" height="17.333" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
55added: <g id="Group_2" data-name="Group 2" transform="translate(0.728 10.948)">
56added: <rect id="Rectangle_4" data-name="Rectangle 4" width="2.537" height="2.537" rx="1" transform="translate(7.985 0)" fill="#4a4a4a"/>
57added: <rect id="Rectangle_5" data-name="Rectangle 5" width="2.537" height="2.537" rx="1" transform="translate(10.991 0)" fill="#4a4a4a"/>
58added: <rect id="Rectangle_6" data-name="Rectangle 6" width="2.537" height="2.537" rx="1" transform="translate(13.997 0)" fill="#4a4a4a"/>
59added: <rect id="Rectangle_7" data-name="Rectangle 7" width="2.537" height="2.537" rx="1" transform="translate(17.003 0)" fill="#4a4a4a"/>
60added: <rect id="Rectangle_8" data-name="Rectangle 8" width="2.537" height="2.537" rx="1" transform="translate(20.009 0)" fill="#4a4a4a"/>
61added: <rect id="Rectangle_9" data-name="Rectangle 9" width="2.537" height="2.537" rx="1" transform="translate(23.015 0)" fill="#4a4a4a"/>
62added: <rect id="Rectangle_10" data-name="Rectangle 10" width="2.537" height="2.537" rx="1" transform="translate(26.021 0)" fill="#4a4a4a"/>
63added: <rect id="Rectangle_11" data-name="Rectangle 11" width="2.537" height="2.537" rx="1" transform="translate(29.028 0)" fill="#4a4a4a"/>
64added: <rect id="Rectangle_12" data-name="Rectangle 12" width="2.537" height="2.537" rx="1" transform="translate(32.034 0)" fill="#4a4a4a"/>
65added: <path id="Path_51" data-name="Path 51" d="M.519,0H6.9A.519.519,0,0,1,7.421.52v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0ZM35.653,0h6.383a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H35.652a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,35.652,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
66added: </g>
67added: <g id="Group_3" data-name="Group 3" transform="translate(0.728 4.878)">
68added: <path id="Path_52" data-name="Path 52" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
69added: <rect id="Rectangle_13" data-name="Rectangle 13" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
70added: <rect id="Rectangle_14" data-name="Rectangle 14" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
71added: <rect id="Rectangle_15" data-name="Rectangle 15" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
72added: <rect id="Rectangle_16" data-name="Rectangle 16" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
73added: <rect id="Rectangle_17" data-name="Rectangle 17" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
74added: <rect id="Rectangle_18" data-name="Rectangle 18" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
75added: <rect id="Rectangle_19" data-name="Rectangle 19" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
76added: <rect id="Rectangle_20" data-name="Rectangle 20" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
77added: <rect id="Rectangle_21" data-name="Rectangle 21" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
78added: <rect id="Rectangle_22" data-name="Rectangle 22" width="2.537" height="2.537" rx="1" transform="translate(31 0)" fill="#4a4a4a"/>
79added: <rect id="Rectangle_23" data-name="Rectangle 23" width="2.537" height="2.537" rx="1" transform="translate(34.006 0)" fill="#4a4a4a"/>
80added: <rect id="Rectangle_24" data-name="Rectangle 24" width="2.537" height="2.537" rx="1" transform="translate(37.012 0)" fill="#4a4a4a"/>
81added: <rect id="Rectangle_25" data-name="Rectangle 25" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
82added: </g>
83added: <g id="Group_4" data-name="Group 4" transform="translate(43.283 4.538) rotate(180)">
84added: <path id="Path_53" data-name="Path 53" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
85added: <rect id="Rectangle_26" data-name="Rectangle 26" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
86added: <rect id="Rectangle_27" data-name="Rectangle 27" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
87added: <rect id="Rectangle_28" data-name="Rectangle 28" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
88added: <rect id="Rectangle_29" data-name="Rectangle 29" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
89added: <rect id="Rectangle_30" data-name="Rectangle 30" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
90added: <rect id="Rectangle_31" data-name="Rectangle 31" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
91added: <rect id="Rectangle_32" data-name="Rectangle 32" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
92added: <rect id="Rectangle_33" data-name="Rectangle 33" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
93added: <rect id="Rectangle_34" data-name="Rectangle 34" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
94added: <rect id="Rectangle_35" data-name="Rectangle 35" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
95added: <rect id="Rectangle_36" data-name="Rectangle 36" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
96added: <rect id="Rectangle_37" data-name="Rectangle 37" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
97added: <rect id="Rectangle_38" data-name="Rectangle 38" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
98added: <rect id="Rectangle_39" data-name="Rectangle 39" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
99added: <rect id="Rectangle_40" data-name="Rectangle 40" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
100added: <rect id="Rectangle_41" data-name="Rectangle 41" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
101added: <rect id="Rectangle_42" data-name="Rectangle 42" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
102added: <rect id="Rectangle_43" data-name="Rectangle 43" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
103added: <rect id="Rectangle_44" data-name="Rectangle 44" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
104added: <rect id="Rectangle_45" data-name="Rectangle 45" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
105added: <rect id="Rectangle_46" data-name="Rectangle 46" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
106added: <rect id="Rectangle_47" data-name="Rectangle 47" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
107added: <rect id="Rectangle_48" data-name="Rectangle 48" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
108added: <rect id="Rectangle_49" data-name="Rectangle 49" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
109added: <rect id="Rectangle_50" data-name="Rectangle 50" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
110added: <rect id="Rectangle_51" data-name="Rectangle 51" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
111added: </g>
112added: <g id="Group_6" data-name="Group 6" transform="translate(0.728 7.883)">
113added: <path id="Path_54" data-name="Path 54" d="M.519,0h3.47a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
114added: <g id="Group_5" data-name="Group 5" transform="translate(5.073 0)">
115added: <rect id="Rectangle_52" data-name="Rectangle 52" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
116added: <rect id="Rectangle_53" data-name="Rectangle 53" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
117added: <rect id="Rectangle_54" data-name="Rectangle 54" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
118added: <rect id="Rectangle_55" data-name="Rectangle 55" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
119added: <rect id="Rectangle_56" data-name="Rectangle 56" width="2.537" height="2.537" rx="1" transform="translate(12.025 0)" fill="#4a4a4a"/>
120added: <rect id="Rectangle_57" data-name="Rectangle 57" width="2.537" height="2.537" rx="1" transform="translate(15.031 0)" fill="#4a4a4a"/>
121added: <rect id="Rectangle_58" data-name="Rectangle 58" width="2.537" height="2.537" rx="1" transform="translate(18.037 0)" fill="#4a4a4a"/>
122added: <rect id="Rectangle_59" data-name="Rectangle 59" width="2.537" height="2.537" rx="1" transform="translate(21.042 0)" fill="#4a4a4a"/>
123added: <rect id="Rectangle_60" data-name="Rectangle 60" width="2.537" height="2.537" rx="1" transform="translate(24.049 0)" fill="#4a4a4a"/>
124added: <rect id="Rectangle_61" data-name="Rectangle 61" width="2.537" height="2.537" rx="1" transform="translate(27.055 0)" fill="#4a4a4a"/>
125added: <rect id="Rectangle_62" data-name="Rectangle 62" width="2.537" height="2.537" rx="1" transform="translate(30.061 0)" fill="#4a4a4a"/>
126added: </g>
127added: <path id="Path_55" data-name="Path 55" d="M.52,0H3.8a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(38.234 0)" fill="#4a4a4a" fill-rule="evenodd"/>
128added: </g>
129added: <g id="Group_7" data-name="Group 7" transform="translate(0.728 14.084)">
130added: <rect id="Rectangle_63" data-name="Rectangle 63" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
131added: <rect id="Rectangle_64" data-name="Rectangle 64" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
132added: <rect id="Rectangle_65" data-name="Rectangle 65" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
133added: <rect id="Rectangle_66" data-name="Rectangle 66" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
134added: <path id="Path_56" data-name="Path 56" d="M.519,0H14.981A.519.519,0,0,1,15.5.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.018V.519A.519.519,0,0,1,.519,0Zm15.97,0h1.874a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H16.489a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,16.489,0Z" transform="translate(12.024 0)" fill="#4a4a4a" fill-rule="evenodd"/>
135added: <rect id="Rectangle_67" data-name="Rectangle 67" width="2.537" height="2.537" rx="1" transform="translate(31.376 0)" fill="#4a4a4a"/>
136added: <rect id="Rectangle_68" data-name="Rectangle 68" width="2.537" height="2.537" rx="1" transform="translate(34.382 0)" fill="#4a4a4a"/>
137added: <rect id="Rectangle_69" data-name="Rectangle 69" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
138added: <path id="Path_57" data-name="Path 57" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(39.736 1.08) rotate(180)" fill="#4a4a4a"/>
139added: <path id="Path_58" data-name="Path 58" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(37.2 1.456)" fill="#4a4a4a"/>
140added: </g>
141added: <rect id="Rectangle_70" data-name="Rectangle 70" width="42.273" height="1.127" rx="0.564" transform="translate(0.915 0.556)" fill="#4a4a4a"/>
142added: <rect id="Rectangle_71" data-name="Rectangle 71" width="2.37" height="0.752" rx="0.376" transform="translate(1.949 0.744)" fill="#d8d8d8" opacity="0.136"/>
143added: <rect id="Rectangle_72" data-name="Rectangle 72" width="2.37" height="0.752" rx="0.376" transform="translate(5.193 0.744)" fill="#d8d8d8" opacity="0.136"/>
144added: <rect id="Rectangle_73" data-name="Rectangle 73" width="2.37" height="0.752" rx="0.376" transform="translate(7.688 0.744)" fill="#d8d8d8" opacity="0.136"/>
145added: <rect id="Rectangle_74" data-name="Rectangle 74" width="2.37" height="0.752" rx="0.376" transform="translate(10.183 0.744)" fill="#d8d8d8" opacity="0.136"/>
146added: <rect id="Rectangle_75" data-name="Rectangle 75" width="2.37" height="0.752" rx="0.376" transform="translate(12.679 0.744)" fill="#d8d8d8" opacity="0.136"/>
147added: <rect id="Rectangle_76" data-name="Rectangle 76" width="2.37" height="0.752" rx="0.376" transform="translate(15.797 0.744)" fill="#d8d8d8" opacity="0.136"/>
148added: <rect id="Rectangle_77" data-name="Rectangle 77" width="2.37" height="0.752" rx="0.376" transform="translate(18.292 0.744)" fill="#d8d8d8" opacity="0.136"/>
149added: <rect id="Rectangle_78" data-name="Rectangle 78" width="2.37" height="0.752" rx="0.376" transform="translate(20.788 0.744)" fill="#d8d8d8" opacity="0.136"/>
150added: <rect id="Rectangle_79" data-name="Rectangle 79" width="2.37" height="0.752" rx="0.376" transform="translate(23.283 0.744)" fill="#d8d8d8" opacity="0.136"/>
151added: <rect id="Rectangle_80" data-name="Rectangle 80" width="2.37" height="0.752" rx="0.376" transform="translate(26.402 0.744)" fill="#d8d8d8" opacity="0.136"/>
152added: <rect id="Rectangle_81" data-name="Rectangle 81" width="2.37" height="0.752" rx="0.376" transform="translate(28.897 0.744)" fill="#d8d8d8" opacity="0.136"/>
153added: <rect id="Rectangle_82" data-name="Rectangle 82" width="2.37" height="0.752" rx="0.376" transform="translate(31.393 0.744)" fill="#d8d8d8" opacity="0.136"/>
154added: <rect id="Rectangle_83" data-name="Rectangle 83" width="2.37" height="0.752" rx="0.376" transform="translate(34.512 0.744)" fill="#d8d8d8" opacity="0.136"/>
155added: <rect id="Rectangle_84" data-name="Rectangle 84" width="2.37" height="0.752" rx="0.376" transform="translate(37.007 0.744)" fill="#d8d8d8" opacity="0.136"/>
156added: <rect id="Rectangle_85" data-name="Rectangle 85" width="2.37" height="0.752" rx="0.376" transform="translate(39.502 0.744)" fill="#d8d8d8" opacity="0.136"/>
157added: </g>
158added: <path id="Path_59" data-name="Path 59" d="M123.779,148.389a2.583,2.583,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-51.054 -75.262)" fill="#44d860" fill-rule="evenodd"/>
159added: <path id="Path_60" data-name="Path 60" d="M83,113.389h20.779V103H83Z" transform="translate(-41.443 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
160added: <path id="Path_61" data-name="Path 61" d="M123.389,108.944a1.3,1.3,0,1,0,0-2.6,1.338,1.338,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.335,1.335,0,0,0,.166.017" transform="translate(-55.859 -57.894)" fill="#44d860" fill-rule="evenodd"/>
161added: <path id="Path_62" data-name="Path 62" d="M141.8,38.745a1.41,1.41,0,0,1-.255-.026,1.309,1.309,0,0,1-.244-.073,1.349,1.349,0,0,1-.224-.119,1.967,1.967,0,0,1-.2-.161,1.52,1.52,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.41,1.41,0,0,1,.026-.255,1.5,1.5,0,0,1,.072-.244,1.364,1.364,0,0,1,.12-.223,1.252,1.252,0,0,1,.358-.358,1.349,1.349,0,0,1,.224-.119,1.309,1.309,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.968,1.968,0,0,1,.2.161,1.908,1.908,0,0,1,.161.2,1.322,1.322,0,0,1,.12.223,1.361,1.361,0,0,1,.1.5,1.317,1.317,0,0,1-.379.919,1.968,1.968,0,0,1-.2.161,1.346,1.346,0,0,1-.223.119,1.332,1.332,0,0,1-.5.1m10.389-.649a1.326,1.326,0,0,1-.92-.379,1.979,1.979,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.326,1.326,0,0,1,.379-.919,1.967,1.967,0,0,1,.2-.161,1.351,1.351,0,0,1,.224-.119,1.308,1.308,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.967,1.967,0,0,1,.2.161,1.326,1.326,0,0,1,.379.919,1.461,1.461,0,0,1-.026.255,1.323,1.323,0,0,1-.073.244,1.847,1.847,0,0,1-.119.223,1.911,1.911,0,0,1-.161.2,1.967,1.967,0,0,1-.2.161,1.294,1.294,0,0,1-.722.218" transform="translate(-69.074 -26.006)" fill-rule="evenodd"/>
162added: </g>
163added: <g id="React-icon" transform="translate(906.3 541.56)">
164added: <path id="Path_330" data-name="Path 330" d="M263.668,117.179c0-5.827-7.3-11.35-18.487-14.775,2.582-11.4,1.434-20.477-3.622-23.382a7.861,7.861,0,0,0-4.016-1v4a4.152,4.152,0,0,1,2.044.466c2.439,1.4,3.5,6.724,2.672,13.574-.2,1.685-.52,3.461-.914,5.272a86.9,86.9,0,0,0-11.386-1.954,87.469,87.469,0,0,0-7.459-8.965c5.845-5.433,11.332-8.41,15.062-8.41V78h0c-4.931,0-11.386,3.514-17.913,9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712,0,9.216,2.959,15.062,8.356a84.687,84.687,0,0,0-7.405,8.947,83.732,83.732,0,0,0-11.4,1.972c-.412-1.793-.717-3.532-.932-5.2-.843-6.85.2-12.175,2.618-13.592a3.991,3.991,0,0,1,2.062-.466v-4h0a8,8,0,0,0-4.052,1c-5.039,2.9-6.168,11.96-3.568,23.328-11.153,3.443-18.415,8.947-18.415,14.757,0,5.828,7.3,11.35,18.487,14.775-2.582,11.4-1.434,20.477,3.622,23.382a7.882,7.882,0,0,0,4.034,1c4.931,0,11.386-3.514,17.913-9.611,6.527,6.061,12.982,9.539,17.913,9.539a8,8,0,0,0,4.052-1c5.039-2.9,6.168-11.96,3.568-23.328C256.406,128.511,263.668,122.988,263.668,117.179Zm-23.346-11.96c-.663,2.313-1.488,4.7-2.421,7.083-.735-1.434-1.506-2.869-2.349-4.3-.825-1.434-1.7-2.833-2.582-4.2C235.517,104.179,237.974,104.645,240.323,105.219Zm-8.212,19.1c-1.4,2.421-2.833,4.716-4.321,6.85-2.672.233-5.379.359-8.1.359-2.708,0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136c1.112-2.4,2.367-4.805,3.712-7.154,1.4-2.421,2.833-4.716,4.321-6.85,2.672-.233,5.379-.359,8.1-.359,2.708,0,5.415.126,8.069.341q2.232,3.2,4.339,6.814,2.044,3.523,3.73,7.136C234.692,119.564,233.455,121.966,232.11,124.315Zm5.792-2.331c.968,2.4,1.793,4.805,2.474,7.136-2.349.574-4.823,1.058-7.387,1.434.879-1.381,1.757-2.8,2.582-4.25C236.4,124.871,237.167,123.419,237.9,121.984ZM219.72,141.116a73.921,73.921,0,0,1-4.985-5.738c1.614.072,3.263.126,4.931.126,1.685,0,3.353-.036,4.985-.126A69.993,69.993,0,0,1,219.72,141.116ZM206.38,130.555c-2.546-.377-5-.843-7.352-1.417.663-2.313,1.488-4.7,2.421-7.083.735,1.434,1.506,2.869,2.349,4.3S205.5,129.192,206.38,130.555ZM219.63,93.241a73.924,73.924,0,0,1,4.985,5.738c-1.614-.072-3.263-.126-4.931-.126-1.686,0-3.353.036-4.985.126A69.993,69.993,0,0,1,219.63,93.241ZM206.362,103.8c-.879,1.381-1.757,2.8-2.582,4.25-.825,1.434-1.6,2.869-2.331,4.3-.968-2.4-1.793-4.805-2.474-7.136C201.323,104.663,203.8,104.179,206.362,103.8Zm-16.227,22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383,10.454-9.073c1.542-.663,3.228-1.255,4.967-1.811a86.122,86.122,0,0,0,4.034,10.92,84.9,84.9,0,0,0-3.981,10.866C193.38,127.525,191.694,126.915,190.134,126.252Zm9.647,25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9,86.9,0,0,0,11.386,1.954,87.465,87.465,0,0,0,7.459,8.965c-5.845,5.433-11.332,8.41-15.062,8.41A4.279,4.279,0,0,1,199.781,151.875Zm42.532-13.663c.843,6.85-.2,12.175-2.618,13.592a3.99,3.99,0,0,1-2.062.466c-3.712,0-9.216-2.959-15.062-8.356a84.689,84.689,0,0,0,7.405-8.947,83.731,83.731,0,0,0,11.4-1.972A50.194,50.194,0,0,1,242.313,138.212Zm6.9-11.96c-1.542.663-3.228,1.255-4.967,1.811a86.12,86.12,0,0,0-4.034-10.92,84.9,84.9,0,0,0,3.981-10.866c1.775.556,3.461,1.165,5.039,1.829,6.348,2.708,10.454,6.258,10.454,9.073C259.67,119.994,255.564,123.562,249.216,126.252Z" fill="#61dafb"/>
165added: <path id="Path_331" data-name="Path 331" d="M320.8,78.4Z" transform="translate(-119.082 -0.328)" fill="#61dafb"/>
166added: <circle id="Ellipse_112" data-name="Ellipse 112" cx="8.194" cy="8.194" r="8.194" transform="translate(211.472 108.984)" fill="#61dafb"/>
167added: <path id="Path_332" data-name="Path 332" d="M520.5,78.1Z" transform="translate(-282.975 -0.082)" fill="#61dafb"/>
168added: </g>
169added: </g>
170added: </svg>
Addedstatic/img/undraw_docusaurus_tree.svg+40 -0
@@ -0,0 +1,40 @@
1added: <svg xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663">
2added: <title>Focus on What Matters</title>
3added: <circle cx="321" cy="321" r="321" fill="#f2f2f2" />
4added: <ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56" />
5added: <ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2" />
6added: <rect x="131" y="152.5" width="840" height="50" fill="#3f3d56" />
7added: <path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
8added: <path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
9added: <path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2" />
10added: <circle cx="181" cy="147.5" r="13" fill="#3f3d56" />
11added: <circle cx="217" cy="147.5" r="13" fill="#3f3d56" />
12added: <circle cx="253" cy="147.5" r="13" fill="#3f3d56" />
13added: <rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060" />
14added: <rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555" />
15added: <rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
16added: <rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
17added: <rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
18added: <rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
19added: <rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f" />
20added: <path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
21added: <ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56" />
22added: <ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56" />
23added: <path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
24added: <path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1" />
25added: <path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd" />
26added: <path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
27added: <path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
28added: <path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
29added: <path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
30added: <path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
31added: <path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
32added: <path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
33added: <path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd" />
34added: <path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
35added: <path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
36added: <path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
37added: <path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
38added: <path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
39added: <path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
40added: </svg>
Addedstatic/public/infima.css+2181 -0
@@ -0,0 +1,2181 @@
1added: .col,
2added: .container {
3added: padding: 0 var(--ifm-spacing-horizontal);
4added: width: 100%;
5added: }
6added: .markdown > h2,
7added: .markdown > h3,
8added: .markdown > h4,
9added: .markdown > h5,
10added: .markdown > h6 {
11added: margin-bottom: calc(
12added: var(--ifm-heading-vertical-rhythm-bottom) *
13added: var(--ifm-leading)
14added: );
15added: }
16added: .markdown li,
17added: body {
18added: word-wrap: break-word;
19added: }
20added: body,
21added: ol ol,
22added: ol ul,
23added: ul ol,
24added: ul ul {
25added: margin: 0;
26added: }
27added: pre,
28added: table {
29added: overflow: auto;
30added: }
31added: blockquote,
32added: pre {
33added: margin: 0 0 var(--ifm-spacing-vertical);
34added: }
35added: .breadcrumbs__link,
36added: .button {
37added: transition-timing-function: var(--ifm-transition-timing-default);
38added: }
39added: .button,
40added: code {
41added: vertical-align: middle;
42added: }
43added: .button--outline.button--active,
44added: .button--outline:active,
45added: .button--outline:hover,
46added: :root {
47added: --ifm-button-color: var(--ifm-font-color-base-inverse);
48added: }
49added: .menu__link:hover,
50added: a {
51added: transition: color var(--ifm-transition-fast)
52added: var(--ifm-transition-timing-default);
53added: }
54added: .navbar--dark,
55added: :root {
56added: --ifm-navbar-link-hover-color: var(--ifm-color-primary);
57added: }
58added: .menu,
59added: .navbar-sidebar {
60added: overflow-x: hidden;
61added: }
62added: :root,
63added: html[data-theme="dark"] {
64added: --ifm-color-emphasis-500: var(--ifm-color-gray-500);
65added: }
66added: :root {
67added: --ifm-color-scheme: light;
68added: --ifm-dark-value: 10%;
69added: --ifm-darker-value: 15%;
70added: --ifm-darkest-value: 30%;
71added: --ifm-light-value: 15%;
72added: --ifm-lighter-value: 30%;
73added: --ifm-lightest-value: 50%;
74added: --ifm-contrast-background-value: 90%;
75added: --ifm-contrast-foreground-value: 70%;
76added: --ifm-contrast-background-dark-value: 70%;
77added: --ifm-contrast-foreground-dark-value: 90%;
78added: --ifm-color-primary: #3578e5;
79added: --ifm-color-secondary: #ebedf0;
80added: --ifm-color-success: #00a400;
81added: --ifm-color-info: #54c7ec;
82added: --ifm-color-warning: #ffba00;
83added: --ifm-color-danger: #fa383e;
84added: --ifm-color-primary-dark: #306cce;
85added: --ifm-color-primary-darker: #2d66c3;
86added: --ifm-color-primary-darkest: #2554a0;
87added: --ifm-color-primary-light: #538ce9;
88added: --ifm-color-primary-lighter: #72a1ed;
89added: --ifm-color-primary-lightest: #9abcf2;
90added: --ifm-color-primary-contrast-background: #ebf2fc;
91added: --ifm-color-primary-contrast-foreground: #102445;
92added: --ifm-color-secondary-dark: #d4d5d8;
93added: --ifm-color-secondary-darker: #c8c9cc;
94added: --ifm-color-secondary-darkest: #a4a6a8;
95added: --ifm-color-secondary-light: #eef0f2;
96added: --ifm-color-secondary-lighter: #f1f2f5;
97added: --ifm-color-secondary-lightest: #f5f6f8;
98added: --ifm-color-secondary-contrast-background: #fdfdfe;
99added: --ifm-color-secondary-contrast-foreground: #474748;
100added: --ifm-color-success-dark: #009400;
101added: --ifm-color-success-darker: #008b00;
102added: --ifm-color-success-darkest: #007300;
103added: --ifm-color-success-light: #26b226;
104added: --ifm-color-success-lighter: #4dbf4d;
105added: --ifm-color-success-lightest: #80d280;
106added: --ifm-color-success-contrast-background: #e6f6e6;
107added: --ifm-color-success-contrast-foreground: #003100;
108added: --ifm-color-info-dark: #4cb3d4;
109added: --ifm-color-info-darker: #47a9c9;
110added: --ifm-color-info-darkest: #3b8ba5;
111added: --ifm-color-info-light: #6ecfef;
112added: --ifm-color-info-lighter: #87d8f2;
113added: --ifm-color-info-lightest: #aae3f6;
114added: --ifm-color-info-contrast-background: #eef9fd;
115added: --ifm-color-info-contrast-foreground: #193c47;
116added: --ifm-color-warning-dark: #e6a700;
117added: --ifm-color-warning-darker: #d99e00;
118added: --ifm-color-warning-darkest: #b38200;
119added: --ifm-color-warning-light: #ffc426;
120added: --ifm-color-warning-lighter: #ffcf4d;
121added: --ifm-color-warning-lightest: #ffdd80;
122added: --ifm-color-warning-contrast-background: #fff8e6;
123added: --ifm-color-warning-contrast-foreground: #4d3800;
124added: --ifm-color-danger-dark: #e13238;
125added: --ifm-color-danger-darker: #d53035;
126added: --ifm-color-danger-darkest: #af272b;
127added: --ifm-color-danger-light: #fb565b;
128added: --ifm-color-danger-lighter: #fb7478;
129added: --ifm-color-danger-lightest: #fd9c9f;
130added: --ifm-color-danger-contrast-background: #ffebec;
131added: --ifm-color-danger-contrast-foreground: #4b1113;
132added: --ifm-color-white: #fff;
133added: --ifm-color-black: #000;
134added: --ifm-color-gray-0: var(--ifm-color-white);
135added: --ifm-color-gray-100: #f5f6f7;
136added: --ifm-color-gray-200: #ebedf0;
137added: --ifm-color-gray-300: #dadde1;
138added: --ifm-color-gray-400: #ccd0d5;
139added: --ifm-color-gray-500: #bec3c9;
140added: --ifm-color-gray-600: #8d949e;
141added: --ifm-color-gray-700: #606770;
142added: --ifm-color-gray-800: #444950;
143added: --ifm-color-gray-900: #1c1e21;
144added: --ifm-color-gray-1000: var(--ifm-color-black);
145added: --ifm-color-emphasis-0: var(--ifm-color-gray-0);
146added: --ifm-color-emphasis-100: var(--ifm-color-gray-100);
147added: --ifm-color-emphasis-200: var(--ifm-color-gray-200);
148added: --ifm-color-emphasis-300: var(--ifm-color-gray-300);
149added: --ifm-color-emphasis-400: var(--ifm-color-gray-400);
150added: --ifm-color-emphasis-600: var(--ifm-color-gray-600);
151added: --ifm-color-emphasis-700: var(--ifm-color-gray-700);
152added: --ifm-color-emphasis-800: var(--ifm-color-gray-800);
153added: --ifm-color-emphasis-900: var(--ifm-color-gray-900);
154added: --ifm-color-emphasis-1000: var(--ifm-color-gray-1000);
155added: --ifm-color-content: var(--ifm-color-emphasis-900);
156added: --ifm-color-content-inverse: var(--ifm-color-emphasis-0);
157added: --ifm-color-content-secondary: #525860;
158added: --ifm-background-color: #0000;
159added: --ifm-background-surface-color: var(--ifm-color-content-inverse);
160added: --ifm-global-border-width: 1px;
161added: --ifm-global-radius: 0.4rem;
162added: --ifm-hover-overlay: #0000000d;
163added: --ifm-font-color-base: var(--ifm-color-content);
164added: --ifm-font-color-base-inverse: var(--ifm-color-content-inverse);
165added: --ifm-font-color-secondary: var(--ifm-color-content-secondary);
166added: --ifm-font-family-base:
167added: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans,
168added: sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif,
169added: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
170added: --ifm-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
171added: "Liberation Mono", "Courier New", monospace;
172added: --ifm-font-size-base: 100%;
173added: --ifm-font-weight-light: 300;
174added: --ifm-font-weight-normal: 400;
175added: --ifm-font-weight-semibold: 500;
176added: --ifm-font-weight-bold: 700;
177added: --ifm-font-weight-base: var(--ifm-font-weight-normal);
178added: --ifm-line-height-base: 1.65;
179added: --ifm-global-spacing: 1rem;
180added: --ifm-spacing-vertical: var(--ifm-global-spacing);
181added: --ifm-spacing-horizontal: var(--ifm-global-spacing);
182added: --ifm-transition-fast: 200ms;
183added: --ifm-transition-slow: 400ms;
184added: --ifm-transition-timing-default: cubic-bezier(0.08, 0.52, 0.52, 1);
185added: --ifm-global-shadow-lw: 0 1px 2px 0 #0000001a;
186added: --ifm-global-shadow-md: 0 5px 40px #0003;
187added: --ifm-global-shadow-tl: 0 12px 28px 0 #0003, 0 2px 4px 0 #0000001a;
188added: --ifm-z-index-dropdown: 100;
189added: --ifm-z-index-fixed: 200;
190added: --ifm-z-index-overlay: 400;
191added: --ifm-container-width: 1140px;
192added: --ifm-container-width-xl: 1320px;
193added: --ifm-code-background: #f6f7f8;
194added: --ifm-code-border-radius: var(--ifm-global-radius);
195added: --ifm-code-font-size: 90%;
196added: --ifm-code-padding-horizontal: 0.1rem;
197added: --ifm-code-padding-vertical: 0.1rem;
198added: --ifm-pre-background: var(--ifm-code-background);
199added: --ifm-pre-border-radius: var(--ifm-code-border-radius);
200added: --ifm-pre-color: inherit;
201added: --ifm-pre-line-height: 1.45;
202added: --ifm-pre-padding: 1rem;
203added: --ifm-heading-color: inherit;
204added: --ifm-heading-margin-top: 0;
205added: --ifm-heading-margin-bottom: var(--ifm-spacing-vertical);
206added: --ifm-heading-font-family: var(--ifm-font-family-base);
207added: --ifm-heading-font-weight: var(--ifm-font-weight-bold);
208added: --ifm-heading-line-height: 1.25;
209added: --ifm-h1-font-size: 2rem;
210added: --ifm-h2-font-size: 1.5rem;
211added: --ifm-h3-font-size: 1.25rem;
212added: --ifm-h4-font-size: 1rem;
213added: --ifm-h5-font-size: 0.875rem;
214added: --ifm-h6-font-size: 0.85rem;
215added: --ifm-image-alignment-padding: 1.25rem;
216added: --ifm-leading-desktop: 1.25;
217added: --ifm-leading: calc(var(--ifm-leading-desktop) * 1rem);
218added: --ifm-list-left-padding: 2rem;
219added: --ifm-list-margin: 1rem;
220added: --ifm-list-item-margin: 0.25rem;
221added: --ifm-list-paragraph-margin: 1rem;
222added: --ifm-table-cell-padding: 0.75rem;
223added: --ifm-table-background: #0000;
224added: --ifm-table-stripe-background: #00000008;
225added: --ifm-table-border-width: 1px;
226added: --ifm-table-border-color: var(--ifm-color-emphasis-300);
227added: --ifm-table-head-background: inherit;
228added: --ifm-table-head-color: inherit;
229added: --ifm-table-head-font-weight: var(--ifm-font-weight-bold);
230added: --ifm-table-cell-color: inherit;
231added: --ifm-link-color: var(--ifm-color-primary);
232added: --ifm-link-decoration: none;
233added: --ifm-link-hover-color: var(--ifm-link-color);
234added: --ifm-link-hover-decoration: underline;
235added: --ifm-paragraph-margin-bottom: var(--ifm-leading);
236added: --ifm-blockquote-font-size: var(--ifm-font-size-base);
237added: --ifm-blockquote-border-left-width: 2px;
238added: --ifm-blockquote-padding-horizontal: var(--ifm-spacing-horizontal);
239added: --ifm-blockquote-padding-vertical: 0;
240added: --ifm-blockquote-shadow: none;
241added: --ifm-blockquote-color: var(--ifm-color-emphasis-800);
242added: --ifm-blockquote-border-color: var(--ifm-color-emphasis-300);
243added: --ifm-hr-background-color: var(--ifm-color-emphasis-500);
244added: --ifm-hr-height: 1px;
245added: --ifm-hr-margin-vertical: 1.5rem;
246added: --ifm-scrollbar-size: 7px;
247added: --ifm-scrollbar-track-background-color: #f1f1f1;
248added: --ifm-scrollbar-thumb-background-color: silver;
249added: --ifm-scrollbar-thumb-hover-background-color: #a7a7a7;
250added: --ifm-alert-background-color: inherit;
251added: --ifm-alert-border-color: inherit;
252added: --ifm-alert-border-radius: var(--ifm-global-radius);
253added: --ifm-alert-border-width: 0px;
254added: --ifm-alert-border-left-width: 5px;
255added: --ifm-alert-color: var(--ifm-font-color-base);
256added: --ifm-alert-padding-horizontal: var(--ifm-spacing-horizontal);
257added: --ifm-alert-padding-vertical: var(--ifm-spacing-vertical);
258added: --ifm-alert-shadow: var(--ifm-global-shadow-lw);
259added: --ifm-avatar-intro-margin: 1rem;
260added: --ifm-avatar-intro-alignment: inherit;
261added: --ifm-avatar-photo-size: 3rem;
262added: --ifm-badge-background-color: inherit;
263added: --ifm-badge-border-color: inherit;
264added: --ifm-badge-border-radius: var(--ifm-global-radius);
265added: --ifm-badge-border-width: var(--ifm-global-border-width);
266added: --ifm-badge-color: var(--ifm-color-white);
267added: --ifm-badge-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 0.5);
268added: --ifm-badge-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.25);
269added: --ifm-breadcrumb-border-radius: 1.5rem;
270added: --ifm-breadcrumb-spacing: 0.5rem;
271added: --ifm-breadcrumb-color-active: var(--ifm-color-primary);
272added: --ifm-breadcrumb-item-background-active: var(--ifm-hover-overlay);
273added: --ifm-breadcrumb-padding-horizontal: 0.8rem;
274added: --ifm-breadcrumb-padding-vertical: 0.4rem;
275added: --ifm-breadcrumb-size-multiplier: 1;
276added: --ifm-breadcrumb-separator: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 256 256"><g><g><polygon points="79.093,0 48.907,30.187 146.72,128 48.907,225.813 79.093,256 207.093,128"/></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>');
277added: --ifm-breadcrumb-separator-filter: none;
278added: --ifm-breadcrumb-separator-size: 0.5rem;
279added: --ifm-breadcrumb-separator-size-multiplier: 1.25;
280added: --ifm-button-background-color: inherit;
281added: --ifm-button-border-color: var(--ifm-button-background-color);
282added: --ifm-button-border-width: var(--ifm-global-border-width);
283added: --ifm-button-font-weight: var(--ifm-font-weight-bold);
284added: --ifm-button-padding-horizontal: 1.5rem;
285added: --ifm-button-padding-vertical: 0.375rem;
286added: --ifm-button-size-multiplier: 1;
287added: --ifm-button-transition-duration: var(--ifm-transition-fast);
288added: --ifm-button-border-radius: calc(
289added: var(--ifm-global-radius) *
290added: var(--ifm-button-size-multiplier)
291added: );
292added: --ifm-button-group-spacing: 2px;
293added: --ifm-card-background-color: var(--ifm-background-surface-color);
294added: --ifm-card-border-radius: calc(var(--ifm-global-radius) * 2);
295added: --ifm-card-horizontal-spacing: var(--ifm-global-spacing);
296added: --ifm-card-vertical-spacing: var(--ifm-global-spacing);
297added: --ifm-toc-border-color: var(--ifm-color-emphasis-300);
298added: --ifm-toc-link-color: var(--ifm-color-content-secondary);
299added: --ifm-toc-padding-vertical: 0.5rem;
300added: --ifm-toc-padding-horizontal: 0.5rem;
301added: --ifm-dropdown-background-color: var(--ifm-background-surface-color);
302added: --ifm-dropdown-font-weight: var(--ifm-font-weight-semibold);
303added: --ifm-dropdown-link-color: var(--ifm-font-color-base);
304added: --ifm-dropdown-hover-background-color: var(--ifm-hover-overlay);
305added: --ifm-footer-background-color: var(--ifm-color-emphasis-100);
306added: --ifm-footer-color: inherit;
307added: --ifm-footer-link-color: var(--ifm-color-emphasis-700);
308added: --ifm-footer-link-hover-color: var(--ifm-color-primary);
309added: --ifm-footer-link-horizontal-spacing: 0.5rem;
310added: --ifm-footer-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 2);
311added: --ifm-footer-padding-vertical: calc(var(--ifm-spacing-vertical) * 2);
312added: --ifm-footer-title-color: inherit;
313added: --ifm-footer-logo-max-width: min(30rem, 90vw);
314added: --ifm-hero-background-color: var(--ifm-background-surface-color);
315added: --ifm-hero-text-color: var(--ifm-color-emphasis-800);
316added: --ifm-menu-color: var(--ifm-color-emphasis-700);
317added: --ifm-menu-color-active: var(--ifm-color-primary);
318added: --ifm-menu-color-background-active: var(--ifm-hover-overlay);
319added: --ifm-menu-color-background-hover: var(--ifm-hover-overlay);
320added: --ifm-menu-link-padding-horizontal: 0.75rem;
321added: --ifm-menu-link-padding-vertical: 0.375rem;
322added: --ifm-menu-link-sublist-icon: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 24 24"><path fill="rgba(0,0,0,0.5)" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>');
323added: --ifm-menu-link-sublist-icon-filter: none;
324added: --ifm-navbar-background-color: var(--ifm-background-surface-color);
325added: --ifm-navbar-height: 3.75rem;
326added: --ifm-navbar-item-padding-horizontal: 0.75rem;
327added: --ifm-navbar-item-padding-vertical: 0.25rem;
328added: --ifm-navbar-link-color: var(--ifm-font-color-base);
329added: --ifm-navbar-link-active-color: var(--ifm-link-color);
330added: --ifm-navbar-padding-horizontal: var(--ifm-spacing-horizontal);
331added: --ifm-navbar-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.5);
332added: --ifm-navbar-shadow: var(--ifm-global-shadow-lw);
333added: --ifm-navbar-search-input-background-color: var(--ifm-color-emphasis-200);
334added: --ifm-navbar-search-input-color: var(--ifm-color-emphasis-800);
335added: --ifm-navbar-search-input-placeholder-color: var(--ifm-color-emphasis-500);
336added: --ifm-navbar-search-input-icon: url('data:image/svg+xml;utf8,<svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="16px" width="16px"><path d="M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z" /></svg>');
337added: --ifm-navbar-sidebar-width: 83vw;
338added: --ifm-pagination-border-radius: var(--ifm-global-radius);
339added: --ifm-pagination-color-active: var(--ifm-color-primary);
340added: --ifm-pagination-font-size: 1rem;
341added: --ifm-pagination-item-active-background: var(--ifm-hover-overlay);
342added: --ifm-pagination-page-spacing: 0.2em;
343added: --ifm-pagination-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 1);
344added: --ifm-pagination-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.25);
345added: --ifm-pagination-nav-border-radius: var(--ifm-global-radius);
346added: --ifm-pagination-nav-color-hover: var(--ifm-color-primary);
347added: --ifm-pills-color-active: var(--ifm-color-primary);
348added: --ifm-pills-color-background-active: var(--ifm-hover-overlay);
349added: --ifm-pills-spacing: 0.125rem;
350added: --ifm-tabs-color: var(--ifm-font-color-secondary);
351added: --ifm-tabs-color-active: var(--ifm-color-primary);
352added: --ifm-tabs-color-active-border: var(--ifm-tabs-color-active);
353added: --ifm-tabs-padding-horizontal: 1rem;
354added: --ifm-tabs-padding-vertical: 1rem;
355added: }
356added: .badge--danger,
357added: .badge--info,
358added: .badge--primary,
359added: .badge--secondary,
360added: .badge--success,
361added: .badge--warning {
362added: --ifm-badge-border-color: var(--ifm-badge-background-color);
363added: }
364added: .button--link,
365added: .button--outline {
366added: --ifm-button-background-color: #0000;
367added: }
368added: * {
369added: box-sizing: border-box;
370added: }
371added: html {
372added: -webkit-font-smoothing: antialiased;
373added: -webkit-tap-highlight-color: transparent;
374added: -webkit-text-size-adjust: 100%;
375added: text-size-adjust: 100%;
376added: background-color: var(--ifm-background-color);
377added: color: var(--ifm-font-color-base);
378added: color-scheme: var(--ifm-color-scheme);
379added: font: var(--ifm-font-size-base) / var(--ifm-line-height-base)
380added: var(--ifm-font-family-base);
381added: text-rendering: optimizelegibility;
382added: }
383added: iframe {
384added: border: 0;
385added: color-scheme: auto;
386added: }
387added: .container {
388added: margin: 0 auto;
389added: max-width: var(--ifm-container-width);
390added: }
391added: .container--fluid {
392added: max-width: inherit;
393added: }
394added: .row {
395added: display: flex;
396added: flex-wrap: wrap;
397added: margin: 0 calc(var(--ifm-spacing-horizontal) * -1);
398added: }
399added: .margin-bottom--none,
400added: .margin-vert--none,
401added: .markdown > :last-child {
402added: margin-bottom: 0 !important;
403added: }
404added: .margin-top--none,
405added: .margin-vert--none {
406added: margin-top: 0 !important;
407added: }
408added: .row--no-gutters {
409added: margin-left: 0;
410added: margin-right: 0;
411added: }
412added: .margin-horiz--none,
413added: .margin-right--none {
414added: margin-right: 0 !important;
415added: }
416added: .row--no-gutters > .col {
417added: padding-left: 0;
418added: padding-right: 0;
419added: }
420added: .row--align-top {
421added: align-items: flex-start;
422added: }
423added: .row--align-bottom {
424added: align-items: flex-end;
425added: }
426added: .row--align-center {
427added: align-items: center;
428added: }
429added: .row--align-stretch {
430added: align-items: stretch;
431added: }
432added: .row--align-baseline {
433added: align-items: baseline;
434added: }
435added: .col {
436added: --ifm-col-width: 100%;
437added: flex: 1 0;
438added: margin-left: 0;
439added: max-width: var(--ifm-col-width);
440added: }
441added: .padding-bottom--none,
442added: .padding-vert--none {
443added: padding-bottom: 0 !important;
444added: }
445added: .padding-top--none,
446added: .padding-vert--none {
447added: padding-top: 0 !important;
448added: }
449added: .padding-horiz--none,
450added: .padding-left--none {
451added: padding-left: 0 !important;
452added: }
453added: .padding-horiz--none,
454added: .padding-right--none {
455added: padding-right: 0 !important;
456added: }
457added: .col[class*="col--"] {
458added: flex: 0 0 var(--ifm-col-width);
459added: }
460added: .col--1 {
461added: --ifm-col-width: 8.33333%;
462added: }
463added: .col--offset-1 {
464added: margin-left: 8.33333%;
465added: }
466added: .col--2 {
467added: --ifm-col-width: 16.66667%;
468added: }
469added: .col--offset-2 {
470added: margin-left: 16.66667%;
471added: }
472added: .col--3 {
473added: --ifm-col-width: 25%;
474added: }
475added: .col--offset-3 {
476added: margin-left: 25%;
477added: }
478added: .col--4 {
479added: --ifm-col-width: 33.33333%;
480added: }
481added: .col--offset-4 {
482added: margin-left: 33.33333%;
483added: }
484added: .col--5 {
485added: --ifm-col-width: 41.66667%;
486added: }
487added: .col--offset-5 {
488added: margin-left: 41.66667%;
489added: }
490added: .col--6 {
491added: --ifm-col-width: 50%;
492added: }
493added: .col--offset-6 {
494added: margin-left: 50%;
495added: }
496added: .col--7 {
497added: --ifm-col-width: 58.33333%;
498added: }
499added: .col--offset-7 {
500added: margin-left: 58.33333%;
501added: }
502added: .col--8 {
503added: --ifm-col-width: 66.66667%;
504added: }
505added: .col--offset-8 {
506added: margin-left: 66.66667%;
507added: }
508added: .col--9 {
509added: --ifm-col-width: 75%;
510added: }
511added: .col--offset-9 {
512added: margin-left: 75%;
513added: }
514added: .col--10 {
515added: --ifm-col-width: 83.33333%;
516added: }
517added: .col--offset-10 {
518added: margin-left: 83.33333%;
519added: }
520added: .col--11 {
521added: --ifm-col-width: 91.66667%;
522added: }
523added: .col--offset-11 {
524added: margin-left: 91.66667%;
525added: }
526added: .col--12 {
527added: --ifm-col-width: 100%;
528added: }
529added: .col--offset-12 {
530added: margin-left: 100%;
531added: }
532added: .margin-horiz--none,
533added: .margin-left--none {
534added: margin-left: 0 !important;
535added: }
536added: .margin--none {
537added: margin: 0 !important;
538added: }
539added: .margin-bottom--xs,
540added: .margin-vert--xs {
541added: margin-bottom: 0.25rem !important;
542added: }
543added: .margin-top--xs,
544added: .margin-vert--xs {
545added: margin-top: 0.25rem !important;
546added: }
547added: .margin-horiz--xs,
548added: .margin-left--xs {
549added: margin-left: 0.25rem !important;
550added: }
551added: .margin-horiz--xs,
552added: .margin-right--xs {
553added: margin-right: 0.25rem !important;
554added: }
555added: .margin--xs {
556added: margin: 0.25rem !important;
557added: }
558added: .margin-bottom--sm,
559added: .margin-vert--sm {
560added: margin-bottom: 0.5rem !important;
561added: }
562added: .margin-top--sm,
563added: .margin-vert--sm {
564added: margin-top: 0.5rem !important;
565added: }
566added: .margin-horiz--sm,
567added: .margin-left--sm {
568added: margin-left: 0.5rem !important;
569added: }
570added: .margin-horiz--sm,
571added: .margin-right--sm {
572added: margin-right: 0.5rem !important;
573added: }
574added: .margin--sm {
575added: margin: 0.5rem !important;
576added: }
577added: .margin-bottom--md,
578added: .margin-vert--md {
579added: margin-bottom: 1rem !important;
580added: }
581added: .margin-top--md,
582added: .margin-vert--md {
583added: margin-top: 1rem !important;
584added: }
585added: .margin-horiz--md,
586added: .margin-left--md {
587added: margin-left: 1rem !important;
588added: }
589added: .margin-horiz--md,
590added: .margin-right--md {
591added: margin-right: 1rem !important;
592added: }
593added: .margin--md {
594added: margin: 1rem !important;
595added: }
596added: .margin-bottom--lg,
597added: .margin-vert--lg {
598added: margin-bottom: 2rem !important;
599added: }
600added: .margin-top--lg,
601added: .margin-vert--lg {
602added: margin-top: 2rem !important;
603added: }
604added: .margin-horiz--lg,
605added: .margin-left--lg {
606added: margin-left: 2rem !important;
607added: }
608added: .margin-horiz--lg,
609added: .margin-right--lg {
610added: margin-right: 2rem !important;
611added: }
612added: .margin--lg {
613added: margin: 2rem !important;
614added: }
615added: .margin-bottom--xl,
616added: .margin-vert--xl {
617added: margin-bottom: 5rem !important;
618added: }
619added: .margin-top--xl,
620added: .margin-vert--xl {
621added: margin-top: 5rem !important;
622added: }
623added: .margin-horiz--xl,
624added: .margin-left--xl {
625added: margin-left: 5rem !important;
626added: }
627added: .margin-horiz--xl,
628added: .margin-right--xl {
629added: margin-right: 5rem !important;
630added: }
631added: .margin--xl {
632added: margin: 5rem !important;
633added: }
634added: .padding--none {
635added: padding: 0 !important;
636added: }
637added: .padding-bottom--xs,
638added: .padding-vert--xs {
639added: padding-bottom: 0.25rem !important;
640added: }
641added: .padding-top--xs,
642added: .padding-vert--xs {
643added: padding-top: 0.25rem !important;
644added: }
645added: .padding-horiz--xs,
646added: .padding-left--xs {
647added: padding-left: 0.25rem !important;
648added: }
649added: .padding-horiz--xs,
650added: .padding-right--xs {
651added: padding-right: 0.25rem !important;
652added: }
653added: .padding--xs {
654added: padding: 0.25rem !important;
655added: }
656added: .padding-bottom--sm,
657added: .padding-vert--sm {
658added: padding-bottom: 0.5rem !important;
659added: }
660added: .padding-top--sm,
661added: .padding-vert--sm {
662added: padding-top: 0.5rem !important;
663added: }
664added: .padding-horiz--sm,
665added: .padding-left--sm {
666added: padding-left: 0.5rem !important;
667added: }
668added: .padding-horiz--sm,
669added: .padding-right--sm {
670added: padding-right: 0.5rem !important;
671added: }
672added: .padding--sm {
673added: padding: 0.5rem !important;
674added: }
675added: .padding-bottom--md,
676added: .padding-vert--md {
677added: padding-bottom: 1rem !important;
678added: }
679added: .padding-top--md,
680added: .padding-vert--md {
681added: padding-top: 1rem !important;
682added: }
683added: .padding-horiz--md,
684added: .padding-left--md {
685added: padding-left: 1rem !important;
686added: }
687added: .padding-horiz--md,
688added: .padding-right--md {
689added: padding-right: 1rem !important;
690added: }
691added: .padding--md {
692added: padding: 1rem !important;
693added: }
694added: .padding-bottom--lg,
695added: .padding-vert--lg {
696added: padding-bottom: 2rem !important;
697added: }
698added: .padding-top--lg,
699added: .padding-vert--lg {
700added: padding-top: 2rem !important;
701added: }
702added: .padding-horiz--lg,
703added: .padding-left--lg {
704added: padding-left: 2rem !important;
705added: }
706added: .padding-horiz--lg,
707added: .padding-right--lg {
708added: padding-right: 2rem !important;
709added: }
710added: .padding--lg {
711added: padding: 2rem !important;
712added: }
713added: .padding-bottom--xl,
714added: .padding-vert--xl {
715added: padding-bottom: 5rem !important;
716added: }
717added: .padding-top--xl,
718added: .padding-vert--xl {
719added: padding-top: 5rem !important;
720added: }
721added: .padding-horiz--xl,
722added: .padding-left--xl {
723added: padding-left: 5rem !important;
724added: }
725added: .padding-horiz--xl,
726added: .padding-right--xl {
727added: padding-right: 5rem !important;
728added: }
729added: .padding--xl {
730added: padding: 5rem !important;
731added: }
732added: code {
733added: background-color: var(--ifm-code-background);
734added: border: 0.1rem solid #0000001a;
735added: border-radius: var(--ifm-code-border-radius);
736added: font-family: var(--ifm-font-family-monospace);
737added: font-size: var(--ifm-code-font-size);
738added: padding: var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal);
739added: }
740added: a code {
741added: color: inherit;
742added: }
743added: pre {
744added: background-color: var(--ifm-pre-background);
745added: border-radius: var(--ifm-pre-border-radius);
746added: color: var(--ifm-pre-color);
747added: font: var(--ifm-code-font-size) / var(--ifm-pre-line-height)
748added: var(--ifm-font-family-monospace);
749added: padding: var(--ifm-pre-padding);
750added: }
751added: pre code {
752added: background-color: initial;
753added: border: none;
754added: font-size: 100%;
755added: line-height: inherit;
756added: padding: 0;
757added: }
758added: kbd {
759added: background-color: var(--ifm-color-emphasis-0);
760added: border: 1px solid var(--ifm-color-emphasis-400);
761added: border-radius: 0.2rem;
762added: box-shadow: inset 0 -1px 0 var(--ifm-color-emphasis-400);
763added: color: var(--ifm-color-emphasis-800);
764added: font: 80% var(--ifm-font-family-monospace);
765added: padding: 0.15rem 0.3rem;
766added: }
767added: h1,
768added: h2,
769added: h3,
770added: h4,
771added: h5,
772added: h6 {
773added: color: var(--ifm-heading-color);
774added: font-family: var(--ifm-heading-font-family);
775added: font-weight: var(--ifm-heading-font-weight);
776added: line-height: var(--ifm-heading-line-height);
777added: margin: var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0;
778added: }
779added: h1 {
780added: font-size: var(--ifm-h1-font-size);
781added: }
782added: h2 {
783added: font-size: var(--ifm-h2-font-size);
784added: }
785added: h3 {
786added: font-size: var(--ifm-h3-font-size);
787added: }
788added: h4 {
789added: font-size: var(--ifm-h4-font-size);
790added: }
791added: h5 {
792added: font-size: var(--ifm-h5-font-size);
793added: }
794added: h6 {
795added: font-size: var(--ifm-h6-font-size);
796added: }
797added: img {
798added: max-width: 100%;
799added: }
800added: img[align="right"] {
801added: padding-left: var(--image-alignment-padding);
802added: }
803added: img[align="left"] {
804added: padding-right: var(--image-alignment-padding);
805added: }
806added: .markdown {
807added: --ifm-h1-vertical-rhythm-top: 3;
808added: --ifm-h2-vertical-rhythm-top: 2;
809added: --ifm-h3-vertical-rhythm-top: 1.5;
810added: --ifm-heading-vertical-rhythm-top: 1.25;
811added: --ifm-h1-vertical-rhythm-bottom: 1.25;
812added: --ifm-heading-vertical-rhythm-bottom: 1;
813added: }
814added: .markdown:after,
815added: .markdown:before {
816added: content: "";
817added: display: table;
818added: }
819added: .markdown:after {
820added: clear: both;
821added: }
822added: .markdown h1:first-child {
823added: --ifm-h1-font-size: 3rem;
824added: margin-bottom: calc(var(--ifm-h1-vertical-rhythm-bottom) * var(--ifm-leading));
825added: }
826added: .markdown > h2 {
827added: --ifm-h2-font-size: 2rem;
828added: margin-top: calc(var(--ifm-h2-vertical-rhythm-top) * var(--ifm-leading));
829added: }
830added: .markdown > h3 {
831added: --ifm-h3-font-size: 1.5rem;
832added: margin-top: calc(var(--ifm-h3-vertical-rhythm-top) * var(--ifm-leading));
833added: }
834added: .markdown > h4,
835added: .markdown > h5,
836added: .markdown > h6 {
837added: margin-top: calc(var(--ifm-heading-vertical-rhythm-top) * var(--ifm-leading));
838added: }
839added: .markdown > p,
840added: .markdown > pre,
841added: .markdown > ul {
842added: margin-bottom: var(--ifm-leading);
843added: }
844added: .markdown li > p {
845added: margin-top: var(--ifm-list-paragraph-margin);
846added: }
847added: .markdown li + li {
848added: margin-top: var(--ifm-list-item-margin);
849added: }
850added: ol,
851added: ul {
852added: margin: 0 0 var(--ifm-list-margin);
853added: padding-left: var(--ifm-list-left-padding);
854added: }
855added: ol ol,
856added: ul ol {
857added: list-style-type: lower-roman;
858added: }
859added: ol ol ol,
860added: ol ul ol,
861added: ul ol ol,
862added: ul ul ol {
863added: list-style-type: lower-alpha;
864added: }
865added: table {
866added: border-collapse: collapse;
867added: display: block;
868added: margin-bottom: var(--ifm-spacing-vertical);
869added: }
870added: table thead tr {
871added: border-bottom: 2px solid var(--ifm-table-border-color);
872added: }
873added: table thead,
874added: table tr:nth-child(2n) {
875added: background-color: var(--ifm-table-stripe-background);
876added: }
877added: table tr {
878added: background-color: var(--ifm-table-background);
879added: border-top: var(--ifm-table-border-width) solid var(--ifm-table-border-color);
880added: }
881added: table td,
882added: table th {
883added: border: var(--ifm-table-border-width) solid var(--ifm-table-border-color);
884added: padding: var(--ifm-table-cell-padding);
885added: }
886added: table th {
887added: background-color: var(--ifm-table-head-background);
888added: color: var(--ifm-table-head-color);
889added: font-weight: var(--ifm-table-head-font-weight);
890added: }
891added: table td {
892added: color: var(--ifm-table-cell-color);
893added: }
894added: strong {
895added: font-weight: var(--ifm-font-weight-bold);
896added: }
897added: a {
898added: color: var(--ifm-link-color);
899added: text-decoration: var(--ifm-link-decoration);
900added: }
901added: a:hover {
902added: color: var(--ifm-link-hover-color);
903added: text-decoration: var(--ifm-link-hover-decoration);
904added: }
905added: .button:hover,
906added: .text--no-decoration,
907added: .text--no-decoration:hover,
908added: a:not([href]) {
909added: text-decoration: none;
910added: }
911added: p {
912added: margin: 0 0 var(--ifm-paragraph-margin-bottom);
913added: }
914added: blockquote {
915added: border-left: var(--ifm-blockquote-border-left-width) solid
916added: var(--ifm-blockquote-border-color);
917added: box-shadow: var(--ifm-blockquote-shadow);
918added: color: var(--ifm-blockquote-color);
919added: font-size: var(--ifm-blockquote-font-size);
920added: padding: var(--ifm-blockquote-padding-vertical)
921added: var(--ifm-blockquote-padding-horizontal);
922added: }
923added: blockquote > :first-child {
924added: margin-top: 0;
925added: }
926added: blockquote > :last-child {
927added: margin-bottom: 0;
928added: }
929added: hr {
930added: background-color: var(--ifm-hr-background-color);
931added: border: 0;
932added: height: var(--ifm-hr-height);
933added: margin: var(--ifm-hr-margin-vertical) 0;
934added: }
935added: .shadow--lw {
936added: box-shadow: var(--ifm-global-shadow-lw) !important;
937added: }
938added: .shadow--md {
939added: box-shadow: var(--ifm-global-shadow-md) !important;
940added: }
941added: .shadow--tl {
942added: box-shadow: var(--ifm-global-shadow-tl) !important;
943added: }
944added: .text--primary {
945added: color: var(--ifm-color-primary);
946added: }
947added: .text--secondary {
948added: color: var(--ifm-color-secondary);
949added: }
950added: .text--success {
951added: color: var(--ifm-color-success);
952added: }
953added: .text--info {
954added: color: var(--ifm-color-info);
955added: }
956added: .text--warning {
957added: color: var(--ifm-color-warning);
958added: }
959added: .text--danger {
960added: color: var(--ifm-color-danger);
961added: }
962added: .text--center {
963added: text-align: center;
964added: }
965added: .text--left {
966added: text-align: left;
967added: }
968added: .text--justify {
969added: text-align: justify;
970added: }
971added: .text--right {
972added: text-align: right;
973added: }
974added: .text--capitalize {
975added: text-transform: capitalize;
976added: }
977added: .text--lowercase {
978added: text-transform: lowercase;
979added: }
980added: .alert__heading,
981added: .text--uppercase {
982added: text-transform: uppercase;
983added: }
984added: .text--light {
985added: font-weight: var(--ifm-font-weight-light);
986added: }
987added: .text--normal {
988added: font-weight: var(--ifm-font-weight-normal);
989added: }
990added: .text--semibold {
991added: font-weight: var(--ifm-font-weight-semibold);
992added: }
993added: .text--bold {
994added: font-weight: var(--ifm-font-weight-bold);
995added: }
996added: .text--italic {
997added: font-style: italic;
998added: }
999added: .text--truncate {
1000added: overflow: hidden;
1001added: text-overflow: ellipsis;
1002added: white-space: nowrap;
1003added: }
1004added: .text--break {
1005added: word-wrap: break-word !important;
1006added: word-break: break-word !important;
1007added: }
1008added: .clean-btn {
1009added: background: none;
1010added: border: none;
1011added: color: inherit;
1012added: cursor: pointer;
1013added: font-family: inherit;
1014added: padding: 0;
1015added: }
1016added: .alert,
1017added: .alert .close {
1018added: color: var(--ifm-alert-foreground-color);
1019added: }
1020added: .clean-list {
1021added: list-style: none;
1022added: padding-left: 0;
1023added: }
1024added: .alert--primary {
1025added: --ifm-alert-background-color: var(--ifm-color-primary-contrast-background);
1026added: --ifm-alert-background-color-highlight: #3578e526;
1027added: --ifm-alert-foreground-color: var(--ifm-color-primary-contrast-foreground);
1028added: --ifm-alert-border-color: var(--ifm-color-primary-dark);
1029added: }
1030added: .alert--secondary {
1031added: --ifm-alert-background-color: var(--ifm-color-secondary-contrast-background);
1032added: --ifm-alert-background-color-highlight: #ebedf026;
1033added: --ifm-alert-foreground-color: var(--ifm-color-secondary-contrast-foreground);
1034added: --ifm-alert-border-color: var(--ifm-color-secondary-dark);
1035added: }
1036added: .alert--success {
1037added: --ifm-alert-background-color: var(--ifm-color-success-contrast-background);
1038added: --ifm-alert-background-color-highlight: #00a40026;
1039added: --ifm-alert-foreground-color: var(--ifm-color-success-contrast-foreground);
1040added: --ifm-alert-border-color: var(--ifm-color-success-dark);
1041added: }
1042added: .alert--info {
1043added: --ifm-alert-background-color: var(--ifm-color-info-contrast-background);
1044added: --ifm-alert-background-color-highlight: #54c7ec26;
1045added: --ifm-alert-foreground-color: var(--ifm-color-info-contrast-foreground);
1046added: --ifm-alert-border-color: var(--ifm-color-info-dark);
1047added: }
1048added: .alert--warning {
1049added: --ifm-alert-background-color: var(--ifm-color-warning-contrast-background);
1050added: --ifm-alert-background-color-highlight: #ffba0026;
1051added: --ifm-alert-foreground-color: var(--ifm-color-warning-contrast-foreground);
1052added: --ifm-alert-border-color: var(--ifm-color-warning-dark);
1053added: }
1054added: .alert--danger {
1055added: --ifm-alert-background-color: var(--ifm-color-danger-contrast-background);
1056added: --ifm-alert-background-color-highlight: #fa383e26;
1057added: --ifm-alert-foreground-color: var(--ifm-color-danger-contrast-foreground);
1058added: --ifm-alert-border-color: var(--ifm-color-danger-dark);
1059added: }
1060added: .alert {
1061added: --ifm-code-background: var(--ifm-alert-background-color-highlight);
1062added: --ifm-link-color: var(--ifm-alert-foreground-color);
1063added: --ifm-link-hover-color: var(--ifm-alert-foreground-color);
1064added: --ifm-link-decoration: underline;
1065added: --ifm-tabs-color: var(--ifm-alert-foreground-color);
1066added: --ifm-tabs-color-active: var(--ifm-alert-foreground-color);
1067added: --ifm-tabs-color-active-border: var(--ifm-alert-border-color);
1068added: background-color: var(--ifm-alert-background-color);
1069added: border: var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);
1070added: border-left-width: var(--ifm-alert-border-left-width);
1071added: border-radius: var(--ifm-alert-border-radius);
1072added: box-shadow: var(--ifm-alert-shadow);
1073added: padding: var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal);
1074added: }
1075added: .alert__heading {
1076added: align-items: center;
1077added: display: flex;
1078added: font: 700 var(--ifm-h5-font-size) / var(--ifm-heading-line-height)
1079added: var(--ifm-heading-font-family);
1080added: margin-bottom: 0.5rem;
1081added: }
1082added: .alert__icon {
1083added: display: inline-flex;
1084added: margin-right: 0.4em;
1085added: }
1086added: .alert__icon svg {
1087added: fill: var(--ifm-alert-foreground-color);
1088added: stroke: var(--ifm-alert-foreground-color);
1089added: stroke-width: 0;
1090added: }
1091added: .alert .close {
1092added: margin: calc(var(--ifm-alert-padding-vertical) * -1)
1093added: calc(var(--ifm-alert-padding-horizontal) * -1) 0 0;
1094added: opacity: 0.75;
1095added: }
1096added: .alert .close:focus,
1097added: .alert .close:hover {
1098added: opacity: 1;
1099added: }
1100added: .alert a {
1101added: text-decoration-color: var(--ifm-alert-border-color);
1102added: }
1103added: .alert a:hover {
1104added: text-decoration-thickness: 2px;
1105added: }
1106added: .avatar {
1107added: column-gap: var(--ifm-avatar-intro-margin);
1108added: display: flex;
1109added: }
1110added: .avatar__photo {
1111added: border-radius: 50%;
1112added: display: block;
1113added: height: var(--ifm-avatar-photo-size);
1114added: overflow: hidden;
1115added: width: var(--ifm-avatar-photo-size);
1116added: }
1117added: .card--full-height,
1118added: .navbar__logo img {
1119added: height: 100%;
1120added: }
1121added: .avatar__photo--sm {
1122added: --ifm-avatar-photo-size: 2rem;
1123added: }
1124added: .avatar__photo--lg {
1125added: --ifm-avatar-photo-size: 4rem;
1126added: }
1127added: .avatar__photo--xl {
1128added: --ifm-avatar-photo-size: 6rem;
1129added: }
1130added: .avatar__intro {
1131added: display: flex;
1132added: flex: 1 1;
1133added: flex-direction: column;
1134added: justify-content: center;
1135added: text-align: var(--ifm-avatar-intro-alignment);
1136added: }
1137added: .badge,
1138added: .breadcrumbs__item,
1139added: .breadcrumbs__link,
1140added: .button,
1141added: .dropdown > .navbar__link:after {
1142added: display: inline-block;
1143added: }
1144added: .avatar__name {
1145added: font: 700 var(--ifm-h4-font-size) / var(--ifm-heading-line-height)
1146added: var(--ifm-font-family-base);
1147added: }
1148added: .avatar__subtitle {
1149added: margin-top: 0.25rem;
1150added: }
1151added: .avatar--vertical {
1152added: --ifm-avatar-intro-alignment: center;
1153added: --ifm-avatar-intro-margin: 0.5rem;
1154added: align-items: center;
1155added: flex-direction: column;
1156added: }
1157added: .badge {
1158added: background-color: var(--ifm-badge-background-color);
1159added: border: var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);
1160added: border-radius: var(--ifm-badge-border-radius);
1161added: color: var(--ifm-badge-color);
1162added: font-size: 75%;
1163added: font-weight: var(--ifm-font-weight-bold);
1164added: line-height: 1;
1165added: padding: var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal);
1166added: }
1167added: .badge--primary {
1168added: --ifm-badge-background-color: var(--ifm-color-primary);
1169added: }
1170added: .badge--secondary {
1171added: --ifm-badge-background-color: var(--ifm-color-secondary);
1172added: color: var(--ifm-color-black);
1173added: }
1174added: .breadcrumbs__link,
1175added: .button.button--secondary.button--outline:not(.button--active):not(:hover) {
1176added: color: var(--ifm-font-color-base);
1177added: }
1178added: .badge--success {
1179added: --ifm-badge-background-color: var(--ifm-color-success);
1180added: }
1181added: .badge--info {
1182added: --ifm-badge-background-color: var(--ifm-color-info);
1183added: }
1184added: .badge--warning {
1185added: --ifm-badge-background-color: var(--ifm-color-warning);
1186added: }
1187added: .badge--danger {
1188added: --ifm-badge-background-color: var(--ifm-color-danger);
1189added: }
1190added: .breadcrumbs {
1191added: margin-bottom: 0;
1192added: padding-left: 0;
1193added: }
1194added: .breadcrumbs__item:not(:last-child):after {
1195added: background: var(--ifm-breadcrumb-separator) center;
1196added: content: " ";
1197added: display: inline-block;
1198added: filter: var(--ifm-breadcrumb-separator-filter);
1199added: height: calc(
1200added: var(--ifm-breadcrumb-separator-size) *
1201added: var(--ifm-breadcrumb-size-multiplier) *
1202added: var(--ifm-breadcrumb-separator-size-multiplier)
1203added: );
1204added: margin: 0 var(--ifm-breadcrumb-spacing);
1205added: opacity: 0.5;
1206added: width: calc(
1207added: var(--ifm-breadcrumb-separator-size) *
1208added: var(--ifm-breadcrumb-size-multiplier) *
1209added: var(--ifm-breadcrumb-separator-size-multiplier)
1210added: );
1211added: }
1212added: .breadcrumbs__item--active .breadcrumbs__link {
1213added: background: var(--ifm-breadcrumb-item-background-active);
1214added: color: var(--ifm-breadcrumb-color-active);
1215added: }
1216added: .breadcrumbs__link {
1217added: border-radius: var(--ifm-breadcrumb-border-radius);
1218added: font-size: calc(1rem * var(--ifm-breadcrumb-size-multiplier));
1219added: padding: calc(
1220added: var(--ifm-breadcrumb-padding-vertical) *
1221added: var(--ifm-breadcrumb-size-multiplier)
1222added: )
1223added: calc(
1224added: var(--ifm-breadcrumb-padding-horizontal) *
1225added: var(--ifm-breadcrumb-size-multiplier)
1226added: );
1227added: transition-duration: var(--ifm-transition-fast);
1228added: transition-property: background, color;
1229added: }
1230added: .breadcrumbs__link:link:hover,
1231added: .breadcrumbs__link:visited:hover,
1232added: area[href].breadcrumbs__link:hover {
1233added: background: var(--ifm-breadcrumb-item-background-active);
1234added: text-decoration: none;
1235added: }
1236added: .breadcrumbs__link:any-link:hover {
1237added: background: var(--ifm-breadcrumb-item-background-active);
1238added: text-decoration: none;
1239added: }
1240added: .breadcrumbs--sm {
1241added: --ifm-breadcrumb-size-multiplier: 0.8;
1242added: }
1243added: .breadcrumbs--lg {
1244added: --ifm-breadcrumb-size-multiplier: 1.2;
1245added: }
1246added: .button {
1247added: background-color: var(--ifm-button-background-color);
1248added: border: var(--ifm-button-border-width) solid var(--ifm-button-border-color);
1249added: border-radius: var(--ifm-button-border-radius);
1250added: cursor: pointer;
1251added: font-size: calc(0.875rem * var(--ifm-button-size-multiplier));
1252added: font-weight: var(--ifm-button-font-weight);
1253added: line-height: 1.5;
1254added: padding: calc(
1255added: var(--ifm-button-padding-vertical) *
1256added: var(--ifm-button-size-multiplier)
1257added: )
1258added: calc(
1259added: var(--ifm-button-padding-horizontal) *
1260added: var(--ifm-button-size-multiplier)
1261added: );
1262added: text-align: center;
1263added: transition-duration: var(--ifm-button-transition-duration);
1264added: transition-property: color, background, border-color;
1265added: -webkit-user-select: none;
1266added: user-select: none;
1267added: white-space: nowrap;
1268added: }
1269added: .button,
1270added: .button:hover {
1271added: color: var(--ifm-button-color);
1272added: }
1273added: .button--outline {
1274added: --ifm-button-color: var(--ifm-button-border-color);
1275added: }
1276added: .button--outline:hover {
1277added: --ifm-button-background-color: var(--ifm-button-border-color);
1278added: }
1279added: .button--link {
1280added: --ifm-button-border-color: #0000;
1281added: color: var(--ifm-link-color);
1282added: text-decoration: var(--ifm-link-decoration);
1283added: }
1284added: .button--link.button--active,
1285added: .button--link:active,
1286added: .button--link:hover {
1287added: color: var(--ifm-link-hover-color);
1288added: text-decoration: var(--ifm-link-hover-decoration);
1289added: }
1290added: .button.disabled,
1291added: .button:disabled,
1292added: .button[disabled] {
1293added: opacity: 0.65;
1294added: pointer-events: none;
1295added: }
1296added: .button--sm {
1297added: --ifm-button-size-multiplier: 0.8;
1298added: }
1299added: .button--lg {
1300added: --ifm-button-size-multiplier: 1.35;
1301added: }
1302added: .button--block {
1303added: display: block;
1304added: width: 100%;
1305added: }
1306added: .button.button--secondary {
1307added: color: var(--ifm-color-gray-900);
1308added: }
1309added: :where(.button--primary) {
1310added: --ifm-button-background-color: var(--ifm-color-primary);
1311added: --ifm-button-border-color: var(--ifm-color-primary);
1312added: }
1313added: :where(.button--primary):not(.button--outline):hover {
1314added: --ifm-button-background-color: var(--ifm-color-primary-dark);
1315added: --ifm-button-border-color: var(--ifm-color-primary-dark);
1316added: }
1317added: .button--primary.button--active,
1318added: .button--primary:active {
1319added: --ifm-button-background-color: var(--ifm-color-primary-darker);
1320added: --ifm-button-border-color: var(--ifm-color-primary-darker);
1321added: }
1322added: :where(.button--secondary) {
1323added: --ifm-button-background-color: var(--ifm-color-secondary);
1324added: --ifm-button-border-color: var(--ifm-color-secondary);
1325added: }
1326added: :where(.button--secondary):not(.button--outline):hover {
1327added: --ifm-button-background-color: var(--ifm-color-secondary-dark);
1328added: --ifm-button-border-color: var(--ifm-color-secondary-dark);
1329added: }
1330added: .button--secondary.button--active,
1331added: .button--secondary:active {
1332added: --ifm-button-background-color: var(--ifm-color-secondary-darker);
1333added: --ifm-button-border-color: var(--ifm-color-secondary-darker);
1334added: }
1335added: :where(.button--success) {
1336added: --ifm-button-background-color: var(--ifm-color-success);
1337added: --ifm-button-border-color: var(--ifm-color-success);
1338added: }
1339added: :where(.button--success):not(.button--outline):hover {
1340added: --ifm-button-background-color: var(--ifm-color-success-dark);
1341added: --ifm-button-border-color: var(--ifm-color-success-dark);
1342added: }
1343added: .button--success.button--active,
1344added: .button--success:active {
1345added: --ifm-button-background-color: var(--ifm-color-success-darker);
1346added: --ifm-button-border-color: var(--ifm-color-success-darker);
1347added: }
1348added: :where(.button--info) {
1349added: --ifm-button-background-color: var(--ifm-color-info);
1350added: --ifm-button-border-color: var(--ifm-color-info);
1351added: }
1352added: :where(.button--info):not(.button--outline):hover {
1353added: --ifm-button-background-color: var(--ifm-color-info-dark);
1354added: --ifm-button-border-color: var(--ifm-color-info-dark);
1355added: }
1356added: .button--info.button--active,
1357added: .button--info:active {
1358added: --ifm-button-background-color: var(--ifm-color-info-darker);
1359added: --ifm-button-border-color: var(--ifm-color-info-darker);
1360added: }
1361added: :where(.button--warning) {
1362added: --ifm-button-background-color: var(--ifm-color-warning);
1363added: --ifm-button-border-color: var(--ifm-color-warning);
1364added: }
1365added: :where(.button--warning):not(.button--outline):hover {
1366added: --ifm-button-background-color: var(--ifm-color-warning-dark);
1367added: --ifm-button-border-color: var(--ifm-color-warning-dark);
1368added: }
1369added: .button--warning.button--active,
1370added: .button--warning:active {
1371added: --ifm-button-background-color: var(--ifm-color-warning-darker);
1372added: --ifm-button-border-color: var(--ifm-color-warning-darker);
1373added: }
1374added: :where(.button--danger) {
1375added: --ifm-button-background-color: var(--ifm-color-danger);
1376added: --ifm-button-border-color: var(--ifm-color-danger);
1377added: }
1378added: :where(.button--danger):not(.button--outline):hover {
1379added: --ifm-button-background-color: var(--ifm-color-danger-dark);
1380added: --ifm-button-border-color: var(--ifm-color-danger-dark);
1381added: }
1382added: .button--danger.button--active,
1383added: .button--danger:active {
1384added: --ifm-button-background-color: var(--ifm-color-danger-darker);
1385added: --ifm-button-border-color: var(--ifm-color-danger-darker);
1386added: }
1387added: .button-group {
1388added: display: inline-flex;
1389added: gap: var(--ifm-button-group-spacing);
1390added: }
1391added: .button-group > .button:not(:first-child) {
1392added: border-bottom-left-radius: 0;
1393added: border-top-left-radius: 0;
1394added: }
1395added: .button-group > .button:not(:last-child) {
1396added: border-bottom-right-radius: 0;
1397added: border-top-right-radius: 0;
1398added: }
1399added: .button-group--block {
1400added: display: flex;
1401added: justify-content: stretch;
1402added: }
1403added: .button-group--block > .button {
1404added: flex-grow: 1;
1405added: }
1406added: .card {
1407added: background-color: var(--ifm-card-background-color);
1408added: border-radius: var(--ifm-card-border-radius);
1409added: box-shadow: var(--ifm-global-shadow-lw);
1410added: display: flex;
1411added: flex-direction: column;
1412added: overflow: hidden;
1413added: }
1414added: .card__image {
1415added: padding-top: var(--ifm-card-vertical-spacing);
1416added: }
1417added: .card__image:first-child {
1418added: padding-top: 0;
1419added: }
1420added: .card__body,
1421added: .card__footer,
1422added: .card__header {
1423added: padding: var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing);
1424added: }
1425added: .card__body:not(:last-child),
1426added: .card__footer:not(:last-child),
1427added: .card__header:not(:last-child) {
1428added: padding-bottom: 0;
1429added: }
1430added: .card__body > :last-child,
1431added: .card__footer > :last-child,
1432added: .card__header > :last-child {
1433added: margin-bottom: 0;
1434added: }
1435added: .card__footer {
1436added: margin-top: auto;
1437added: }
1438added: .table-of-contents {
1439added: font-size: 0.8rem;
1440added: margin-bottom: 0;
1441added: padding: var(--ifm-toc-padding-vertical) 0;
1442added: }
1443added: .table-of-contents,
1444added: .table-of-contents ul {
1445added: list-style: none;
1446added: padding-left: var(--ifm-toc-padding-horizontal);
1447added: }
1448added: .table-of-contents li {
1449added: margin: var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal);
1450added: }
1451added: .table-of-contents__left-border {
1452added: border-left: 1px solid var(--ifm-toc-border-color);
1453added: }
1454added: .table-of-contents__link {
1455added: color: var(--ifm-toc-link-color);
1456added: display: block;
1457added: }
1458added: .table-of-contents__link--active,
1459added: .table-of-contents__link--active code,
1460added: .table-of-contents__link:hover,
1461added: .table-of-contents__link:hover code {
1462added: color: var(--ifm-color-primary);
1463added: text-decoration: none;
1464added: }
1465added: .close {
1466added: color: var(--ifm-color-black);
1467added: float: right;
1468added: font-size: 1.5rem;
1469added: font-weight: var(--ifm-font-weight-bold);
1470added: line-height: 1;
1471added: opacity: 0.5;
1472added: padding: 1rem;
1473added: transition: opacity var(--ifm-transition-fast)
1474added: var(--ifm-transition-timing-default);
1475added: }
1476added: .close:hover {
1477added: opacity: 0.7;
1478added: }
1479added: .close:focus {
1480added: opacity: 0.8;
1481added: }
1482added: .dropdown {
1483added: display: inline-flex;
1484added: font-weight: var(--ifm-dropdown-font-weight);
1485added: position: relative;
1486added: vertical-align: top;
1487added: }
1488added: .dropdown--hoverable:hover .dropdown__menu,
1489added: .dropdown--show .dropdown__menu {
1490added: opacity: 1;
1491added: pointer-events: all;
1492added: transform: translateY(-1px);
1493added: visibility: visible;
1494added: }
1495added: .dropdown__menu,
1496added: .navbar__item.dropdown .navbar__link:not([href]) {
1497added: pointer-events: none;
1498added: }
1499added: .dropdown--right .dropdown__menu {
1500added: left: inherit;
1501added: right: 0;
1502added: }
1503added: .dropdown--nocaret .navbar__link:after {
1504added: content: none !important;
1505added: }
1506added: .dropdown__menu {
1507added: background-color: var(--ifm-dropdown-background-color);
1508added: border-radius: var(--ifm-global-radius);
1509added: box-shadow: var(--ifm-global-shadow-md);
1510added: left: 0;
1511added: list-style: none;
1512added: max-height: 80vh;
1513added: min-width: 10rem;
1514added: opacity: 0;
1515added: overflow-y: auto;
1516added: padding: 0.5rem;
1517added: position: absolute;
1518added: top: calc(100% - var(--ifm-navbar-item-padding-vertical) + 0.3rem);
1519added: transform: translateY(-0.625rem);
1520added: transition-duration: var(--ifm-transition-fast);
1521added: transition-property: opacity, transform, visibility;
1522added: transition-timing-function: var(--ifm-transition-timing-default);
1523added: visibility: hidden;
1524added: z-index: var(--ifm-z-index-dropdown);
1525added: }
1526added: .menu__caret,
1527added: .menu__link,
1528added: .menu__list-item-collapsible {
1529added: border-radius: 0.25rem;
1530added: transition: background var(--ifm-transition-fast)
1531added: var(--ifm-transition-timing-default);
1532added: }
1533added: .dropdown__link {
1534added: border-radius: 0.25rem;
1535added: color: var(--ifm-dropdown-link-color);
1536added: display: block;
1537added: font-size: 0.875rem;
1538added: margin-top: 0.2rem;
1539added: padding: 0.25rem 0.5rem;
1540added: white-space: nowrap;
1541added: }
1542added: .dropdown__link--active,
1543added: .dropdown__link:hover {
1544added: background-color: var(--ifm-dropdown-hover-background-color);
1545added: color: var(--ifm-dropdown-link-color);
1546added: text-decoration: none;
1547added: }
1548added: .dropdown__link--active,
1549added: .dropdown__link--active:hover {
1550added: --ifm-dropdown-link-color: var(--ifm-link-color);
1551added: }
1552added: .dropdown > .navbar__link:after {
1553added: border-color: currentcolor #0000;
1554added: border-style: solid;
1555added: border-width: 0.4em 0.4em 0;
1556added: content: "";
1557added: margin-left: 0.3em;
1558added: position: relative;
1559added: top: 2px;
1560added: transform: translateY(-50%);
1561added: }
1562added: .footer {
1563added: background-color: var(--ifm-footer-background-color);
1564added: color: var(--ifm-footer-color);
1565added: padding: var(--ifm-footer-padding-vertical)
1566added: var(--ifm-footer-padding-horizontal);
1567added: }
1568added: .footer--dark {
1569added: --ifm-footer-background-color: #303846;
1570added: --ifm-footer-color: var(--ifm-footer-link-color);
1571added: --ifm-footer-link-color: var(--ifm-color-secondary);
1572added: --ifm-footer-title-color: var(--ifm-color-white);
1573added: }
1574added: .footer__links {
1575added: margin-bottom: 1rem;
1576added: }
1577added: .footer__link-item {
1578added: color: var(--ifm-footer-link-color);
1579added: line-height: 2;
1580added: }
1581added: .footer__link-item:hover {
1582added: color: var(--ifm-footer-link-hover-color);
1583added: }
1584added: .footer__link-separator {
1585added: margin: 0 var(--ifm-footer-link-horizontal-spacing);
1586added: }
1587added: .footer__logo {
1588added: margin-top: 1rem;
1589added: max-width: var(--ifm-footer-logo-max-width);
1590added: }
1591added: .footer__title {
1592added: color: var(--ifm-footer-title-color);
1593added: font: 700 var(--ifm-h4-font-size) / var(--ifm-heading-line-height)
1594added: var(--ifm-font-family-base);
1595added: margin-bottom: var(--ifm-heading-margin-bottom);
1596added: }
1597added: .menu,
1598added: .navbar__link {
1599added: font-weight: var(--ifm-font-weight-semibold);
1600added: }
1601added: .footer__item {
1602added: margin-top: 0;
1603added: }
1604added: .footer__items {
1605added: margin-bottom: 0;
1606added: }
1607added: [type="checkbox"] {
1608added: padding: 0;
1609added: }
1610added: .hero {
1611added: align-items: center;
1612added: background-color: var(--ifm-hero-background-color);
1613added: color: var(--ifm-hero-text-color);
1614added: display: flex;
1615added: padding: 4rem 2rem;
1616added: }
1617added: .hero--primary {
1618added: --ifm-hero-background-color: var(--ifm-color-primary);
1619added: --ifm-hero-text-color: var(--ifm-font-color-base-inverse);
1620added: }
1621added: .hero--dark {
1622added: --ifm-hero-background-color: #303846;
1623added: --ifm-hero-text-color: var(--ifm-color-white);
1624added: }
1625added: .hero__title {
1626added: font-size: 3rem;
1627added: }
1628added: .hero__subtitle {
1629added: font-size: 1.5rem;
1630added: }
1631added: .menu__list {
1632added: list-style: none;
1633added: margin: 0;
1634added: padding-left: 0;
1635added: }
1636added: .menu__caret,
1637added: .menu__link {
1638added: padding: var(--ifm-menu-link-padding-vertical)
1639added: var(--ifm-menu-link-padding-horizontal);
1640added: }
1641added: .menu__list .menu__list {
1642added: flex: 0 0 100%;
1643added: margin-top: 0.25rem;
1644added: padding-left: var(--ifm-menu-link-padding-horizontal);
1645added: }
1646added: .menu__list-item:not(:first-child) {
1647added: margin-top: 0.25rem;
1648added: }
1649added: .menu__list-item--collapsed .menu__list {
1650added: height: 0;
1651added: overflow: hidden;
1652added: }
1653added: .menu__list-item--collapsed .menu__caret:before,
1654added: .menu__list-item--collapsed .menu__link--sublist:after {
1655added: transform: rotate(90deg);
1656added: }
1657added: .menu__list-item-collapsible {
1658added: display: flex;
1659added: flex-wrap: wrap;
1660added: position: relative;
1661added: }
1662added: .menu__caret:hover,
1663added: .menu__link:hover,
1664added: .menu__list-item-collapsible--active,
1665added: .menu__list-item-collapsible:hover {
1666added: background: var(--ifm-menu-color-background-hover);
1667added: }
1668added: .menu__list-item-collapsible .menu__link--active,
1669added: .menu__list-item-collapsible .menu__link:hover {
1670added: background: none !important;
1671added: }
1672added: .menu__caret,
1673added: .menu__link {
1674added: align-items: center;
1675added: display: flex;
1676added: }
1677added: .menu__link {
1678added: color: var(--ifm-menu-color);
1679added: flex: 1;
1680added: line-height: 1.25;
1681added: }
1682added: .menu__link:hover {
1683added: color: var(--ifm-menu-color);
1684added: text-decoration: none;
1685added: }
1686added: .menu__caret:before,
1687added: .menu__link--sublist-caret:after {
1688added: content: "";
1689added: filter: var(--ifm-menu-link-sublist-icon-filter);
1690added: height: 1.25rem;
1691added: transform: rotate(180deg);
1692added: transition: transform var(--ifm-transition-fast) linear;
1693added: width: 1.25rem;
1694added: }
1695added: .menu__link--sublist-caret:after {
1696added: background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem;
1697added: margin-left: auto;
1698added: min-width: 1.25rem;
1699added: }
1700added: .menu__link--active,
1701added: .menu__link--active:hover {
1702added: color: var(--ifm-menu-color-active);
1703added: }
1704added: .navbar__brand,
1705added: .navbar__link {
1706added: color: var(--ifm-navbar-link-color);
1707added: }
1708added: .menu__link--active:not(.menu__link--sublist) {
1709added: background-color: var(--ifm-menu-color-background-active);
1710added: }
1711added: .menu__caret:before {
1712added: background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem;
1713added: }
1714added: .navbar--dark,
1715added: html[data-theme="dark"] {
1716added: --ifm-menu-link-sublist-icon-filter: invert(100%) sepia(94%) saturate(17%)
1717added: hue-rotate(223deg) brightness(104%) contrast(98%);
1718added: }
1719added: .navbar {
1720added: background-color: var(--ifm-navbar-background-color);
1721added: box-shadow: var(--ifm-navbar-shadow);
1722added: height: var(--ifm-navbar-height);
1723added: padding: var(--ifm-navbar-padding-vertical)
1724added: var(--ifm-navbar-padding-horizontal);
1725added: }
1726added: .navbar,
1727added: .navbar > .container,
1728added: .navbar > .container-fluid {
1729added: display: flex;
1730added: }
1731added: .navbar--fixed-top {
1732added: position: sticky;
1733added: top: 0;
1734added: z-index: var(--ifm-z-index-fixed);
1735added: }
1736added: .navbar-sidebar,
1737added: .navbar-sidebar__backdrop {
1738added: bottom: 0;
1739added: left: 0;
1740added: opacity: 0;
1741added: position: fixed;
1742added: top: 0;
1743added: transition-duration: var(--ifm-transition-fast);
1744added: transition-timing-function: ease-in-out;
1745added: visibility: hidden;
1746added: }
1747added: .navbar__inner {
1748added: display: flex;
1749added: flex-wrap: wrap;
1750added: justify-content: space-between;
1751added: width: 100%;
1752added: }
1753added: .navbar__brand {
1754added: align-items: center;
1755added: display: flex;
1756added: margin-right: 1rem;
1757added: min-width: 0;
1758added: }
1759added: .navbar__brand:hover {
1760added: color: var(--ifm-navbar-link-hover-color);
1761added: text-decoration: none;
1762added: }
1763added: .navbar__title {
1764added: flex: 1 1 auto;
1765added: }
1766added: .navbar__toggle {
1767added: display: none;
1768added: margin-right: 0.5rem;
1769added: }
1770added: .navbar__logo {
1771added: flex: 0 0 auto;
1772added: height: 2rem;
1773added: margin-right: 0.5rem;
1774added: }
1775added: .navbar__items {
1776added: align-items: center;
1777added: display: flex;
1778added: flex: 1;
1779added: min-width: 0;
1780added: }
1781added: .navbar__items--center {
1782added: flex: 0 0 auto;
1783added: }
1784added: .navbar__items--center .navbar__brand {
1785added: margin: 0;
1786added: }
1787added: .navbar__items--center + .navbar__items--right {
1788added: flex: 1;
1789added: }
1790added: .navbar__items--right {
1791added: flex: 0 0 auto;
1792added: justify-content: flex-end;
1793added: }
1794added: .navbar__items--right > :last-child {
1795added: padding-right: 0;
1796added: }
1797added: .navbar__item {
1798added: display: inline-block;
1799added: padding: var(--ifm-navbar-item-padding-vertical)
1800added: var(--ifm-navbar-item-padding-horizontal);
1801added: }
1802added: .navbar__link--active,
1803added: .navbar__link:hover {
1804added: color: var(--ifm-navbar-link-hover-color);
1805added: text-decoration: none;
1806added: }
1807added: .navbar--dark,
1808added: .navbar--primary {
1809added: --ifm-menu-color: var(--ifm-color-gray-300);
1810added: --ifm-navbar-link-color: var(--ifm-color-gray-100);
1811added: --ifm-navbar-search-input-background-color: #ffffff1a;
1812added: --ifm-navbar-search-input-placeholder-color: #ffffff80;
1813added: color: var(--ifm-color-white);
1814added: }
1815added: .navbar--dark {
1816added: --ifm-navbar-background-color: #242526;
1817added: --ifm-menu-color-background-active: #ffffff0d;
1818added: --ifm-navbar-search-input-color: var(--ifm-color-white);
1819added: }
1820added: .navbar--primary {
1821added: --ifm-navbar-background-color: var(--ifm-color-primary);
1822added: --ifm-navbar-link-hover-color: var(--ifm-color-white);
1823added: --ifm-menu-color-active: var(--ifm-color-white);
1824added: --ifm-navbar-search-input-color: var(--ifm-color-emphasis-500);
1825added: }
1826added: .navbar__search-input {
1827added: appearance: none;
1828added: background: var(--ifm-navbar-search-input-background-color)
1829added: var(--ifm-navbar-search-input-icon) no-repeat 0.75rem center / 1rem 1rem;
1830added: border: none;
1831added: border-radius: 2rem;
1832added: color: var(--ifm-navbar-search-input-color);
1833added: cursor: text;
1834added: display: inline-block;
1835added: font-size: 1rem;
1836added: height: 2rem;
1837added: padding: 0 0.5rem 0 2.25rem;
1838added: width: 12.5rem;
1839added: }
1840added: .navbar__search-input::placeholder {
1841added: color: var(--ifm-navbar-search-input-placeholder-color);
1842added: }
1843added: .navbar-sidebar {
1844added: background-color: var(--ifm-navbar-background-color);
1845added: box-shadow: var(--ifm-global-shadow-md);
1846added: transform: translate3d(-100%, 0, 0);
1847added: transition-property: opacity, visibility, transform;
1848added: width: var(--ifm-navbar-sidebar-width);
1849added: }
1850added: .navbar-sidebar--show .navbar-sidebar,
1851added: .navbar-sidebar__items {
1852added: transform: translateZ(0);
1853added: }
1854added: .navbar-sidebar--show .navbar-sidebar,
1855added: .navbar-sidebar--show .navbar-sidebar__backdrop {
1856added: opacity: 1;
1857added: visibility: visible;
1858added: }
1859added: .navbar-sidebar__backdrop {
1860added: background-color: #0009;
1861added: right: 0;
1862added: transition-property: opacity, visibility;
1863added: }
1864added: .navbar-sidebar__brand {
1865added: align-items: center;
1866added: box-shadow: var(--ifm-navbar-shadow);
1867added: display: flex;
1868added: flex: 1;
1869added: height: var(--ifm-navbar-height);
1870added: padding: var(--ifm-navbar-padding-vertical)
1871added: var(--ifm-navbar-padding-horizontal);
1872added: }
1873added: .navbar-sidebar__items {
1874added: display: flex;
1875added: height: calc(100% - var(--ifm-navbar-height));
1876added: transition: transform var(--ifm-transition-fast) ease-in-out;
1877added: }
1878added: .navbar-sidebar__items--show-secondary {
1879added: transform: translate3d(calc(var(--ifm-navbar-sidebar-width) * -1), 0, 0);
1880added: }
1881added: .navbar-sidebar__item {
1882added: flex-shrink: 0;
1883added: padding: 0.5rem;
1884added: width: calc(var(--ifm-navbar-sidebar-width));
1885added: }
1886added: .navbar-sidebar__back {
1887added: background: var(--ifm-menu-color-background-active);
1888added: font-size: 15px;
1889added: font-weight: var(--ifm-button-font-weight);
1890added: margin: 0 0 0.2rem -0.5rem;
1891added: padding: 0.6rem 1.5rem;
1892added: position: relative;
1893added: text-align: left;
1894added: top: -0.5rem;
1895added: width: calc(100% + 1rem);
1896added: }
1897added: .navbar-sidebar__close {
1898added: display: flex;
1899added: margin-left: auto;
1900added: }
1901added: .pagination {
1902added: column-gap: var(--ifm-pagination-page-spacing);
1903added: display: flex;
1904added: font-size: var(--ifm-pagination-font-size);
1905added: padding-left: 0;
1906added: }
1907added: .pagination--sm {
1908added: --ifm-pagination-font-size: 0.8rem;
1909added: --ifm-pagination-padding-horizontal: 0.8rem;
1910added: --ifm-pagination-padding-vertical: 0.2rem;
1911added: }
1912added: .pagination--lg {
1913added: --ifm-pagination-font-size: 1.2rem;
1914added: --ifm-pagination-padding-horizontal: 1.2rem;
1915added: --ifm-pagination-padding-vertical: 0.3rem;
1916added: }
1917added: .pagination__item {
1918added: display: inline-flex;
1919added: }
1920added: .pagination__item > span {
1921added: padding: var(--ifm-pagination-padding-vertical);
1922added: }
1923added: .pagination__item--active .pagination__link {
1924added: color: var(--ifm-pagination-color-active);
1925added: }
1926added: .pagination__item--active .pagination__link,
1927added: .pagination__item:not(.pagination__item--active):hover .pagination__link {
1928added: background: var(--ifm-pagination-item-active-background);
1929added: }
1930added: .pagination__item--disabled,
1931added: .pagination__item[disabled] {
1932added: opacity: 0.25;
1933added: pointer-events: none;
1934added: }
1935added: .pagination__link {
1936added: border-radius: var(--ifm-pagination-border-radius);
1937added: color: var(--ifm-font-color-base);
1938added: display: inline-block;
1939added: padding: var(--ifm-pagination-padding-vertical)
1940added: var(--ifm-pagination-padding-horizontal);
1941added: transition: background var(--ifm-transition-fast)
1942added: var(--ifm-transition-timing-default);
1943added: }
1944added: .pagination__link:hover {
1945added: text-decoration: none;
1946added: }
1947added: .pagination-nav {
1948added: grid-gap: var(--ifm-spacing-horizontal);
1949added: display: grid;
1950added: gap: var(--ifm-spacing-horizontal);
1951added: grid-template-columns: repeat(2, 1fr);
1952added: }
1953added: .pagination-nav__link {
1954added: border: 1px solid var(--ifm-color-emphasis-300);
1955added: border-radius: var(--ifm-pagination-nav-border-radius);
1956added: display: block;
1957added: height: 100%;
1958added: line-height: var(--ifm-heading-line-height);
1959added: padding: var(--ifm-global-spacing);
1960added: transition: border-color var(--ifm-transition-fast)
1961added: var(--ifm-transition-timing-default);
1962added: }
1963added: .pagination-nav__link:hover {
1964added: border-color: var(--ifm-pagination-nav-color-hover);
1965added: text-decoration: none;
1966added: }
1967added: .pagination-nav__link--next {
1968added: grid-column: 2 / 3;
1969added: text-align: right;
1970added: }
1971added: .pagination-nav__label {
1972added: font-size: var(--ifm-h4-font-size);
1973added: font-weight: var(--ifm-heading-font-weight);
1974added: word-break: break-word;
1975added: }
1976added: .pagination-nav__link--prev .pagination-nav__label:before {
1977added: content: "« ";
1978added: }
1979added: .pagination-nav__link--next .pagination-nav__label:after {
1980added: content: " »";
1981added: }
1982added: .pagination-nav__sublabel {
1983added: color: var(--ifm-color-content-secondary);
1984added: font-size: var(--ifm-h5-font-size);
1985added: font-weight: var(--ifm-font-weight-semibold);
1986added: margin-bottom: 0.25rem;
1987added: }
1988added: .pills__item,
1989added: .tabs {
1990added: font-weight: var(--ifm-font-weight-bold);
1991added: }
1992added: .pills {
1993added: display: flex;
1994added: gap: var(--ifm-pills-spacing);
1995added: padding-left: 0;
1996added: }
1997added: .pills__item {
1998added: border-radius: 0.5rem;
1999added: cursor: pointer;
2000added: display: inline-block;
2001added: padding: 0.25rem 1rem;
2002added: transition: background var(--ifm-transition-fast)
2003added: var(--ifm-transition-timing-default);
2004added: }
2005added: .pills__item--active {
2006added: color: var(--ifm-pills-color-active);
2007added: }
2008added: .pills__item--active,
2009added: .pills__item:not(.pills__item--active):hover {
2010added: background: var(--ifm-pills-color-background-active);
2011added: }
2012added: .pills--block {
2013added: justify-content: stretch;
2014added: }
2015added: .pills--block .pills__item {
2016added: flex-grow: 1;
2017added: text-align: center;
2018added: }
2019added: .tabs {
2020added: color: var(--ifm-tabs-color);
2021added: display: flex;
2022added: margin-bottom: 0;
2023added: overflow-x: auto;
2024added: padding-left: 0;
2025added: }
2026added: .tabs__item {
2027added: border-bottom: 3px solid #0000;
2028added: border-radius: var(--ifm-global-radius);
2029added: cursor: pointer;
2030added: display: inline-flex;
2031added: padding: var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);
2032added: transition: background-color var(--ifm-transition-fast)
2033added: var(--ifm-transition-timing-default);
2034added: }
2035added: .tabs__item--active {
2036added: border-bottom-color: var(--ifm-tabs-color-active-border);
2037added: border-bottom-left-radius: 0;
2038added: border-bottom-right-radius: 0;
2039added: color: var(--ifm-tabs-color-active);
2040added: }
2041added: .tabs__item:hover {
2042added: background-color: var(--ifm-hover-overlay);
2043added: }
2044added: .tabs--block {
2045added: justify-content: stretch;
2046added: }
2047added: .tabs--block .tabs__item {
2048added: flex-grow: 1;
2049added: justify-content: center;
2050added: }
2051added: html[data-theme="dark"] {
2052added: --ifm-color-scheme: dark;
2053added: --ifm-color-emphasis-0: var(--ifm-color-gray-1000);
2054added: --ifm-color-emphasis-100: var(--ifm-color-gray-900);
2055added: --ifm-color-emphasis-200: var(--ifm-color-gray-800);
2056added: --ifm-color-emphasis-300: var(--ifm-color-gray-700);
2057added: --ifm-color-emphasis-400: var(--ifm-color-gray-600);
2058added: --ifm-color-emphasis-600: var(--ifm-color-gray-400);
2059added: --ifm-color-emphasis-700: var(--ifm-color-gray-300);
2060added: --ifm-color-emphasis-800: var(--ifm-color-gray-200);
2061added: --ifm-color-emphasis-900: var(--ifm-color-gray-100);
2062added: --ifm-color-emphasis-1000: var(--ifm-color-gray-0);
2063added: --ifm-background-color: #1b1b1d;
2064added: --ifm-background-surface-color: #242526;
2065added: --ifm-hover-overlay: #ffffff0d;
2066added: --ifm-color-content: #e3e3e3;
2067added: --ifm-color-content-secondary: #fff;
2068added: --ifm-breadcrumb-separator-filter: invert(64%) sepia(11%) saturate(0%)
2069added: hue-rotate(149deg) brightness(99%) contrast(95%);
2070added: --ifm-code-background: #ffffff1a;
2071added: --ifm-scrollbar-track-background-color: #444;
2072added: --ifm-scrollbar-thumb-background-color: #686868;
2073added: --ifm-scrollbar-thumb-hover-background-color: #7a7a7a;
2074added: --ifm-table-stripe-background: #ffffff12;
2075added: --ifm-toc-border-color: var(--ifm-color-emphasis-200);
2076added: --ifm-color-primary-contrast-background: #102445;
2077added: --ifm-color-primary-contrast-foreground: #ebf2fc;
2078added: --ifm-color-secondary-contrast-background: #474748;
2079added: --ifm-color-secondary-contrast-foreground: #fdfdfe;
2080added: --ifm-color-success-contrast-background: #003100;
2081added: --ifm-color-success-contrast-foreground: #e6f6e6;
2082added: --ifm-color-info-contrast-background: #193c47;
2083added: --ifm-color-info-contrast-foreground: #eef9fd;
2084added: --ifm-color-warning-contrast-background: #4d3800;
2085added: --ifm-color-warning-contrast-foreground: #fff8e6;
2086added: --ifm-color-danger-contrast-background: #4b1113;
2087added: --ifm-color-danger-contrast-foreground: #ffebec;
2088added: }
2089added: @media (min-width: 1440px) {
2090added: .container {
2091added: max-width: var(--ifm-container-width-xl);
2092added: }
2093added: }
2094added: @media (max-width: 996px) {
2095added: .col {
2096added: --ifm-col-width: 100%;
2097added: flex-basis: var(--ifm-col-width);
2098added: margin-left: 0;
2099added: }
2100added: .footer {
2101added: --ifm-footer-padding-horizontal: 0;
2102added: }
2103added: .footer__link-separator,
2104added: .navbar__item {
2105added: display: none;
2106added: }
2107added: .footer__col {
2108added: margin-bottom: calc(var(--ifm-spacing-vertical) * 3);
2109added: }
2110added: .footer__link-item {
2111added: display: block;
2112added: width: max-content;
2113added: }
2114added: .hero {
2115added: padding-left: 0;
2116added: padding-right: 0;
2117added: }
2118added: .navbar > .container,
2119added: .navbar > .container-fluid {
2120added: padding: 0;
2121added: }
2122added: .navbar__toggle {
2123added: display: inherit;
2124added: }
2125added: .navbar__search-input {
2126added: width: 9rem;
2127added: }
2128added: .pills--block,
2129added: .tabs--block {
2130added: flex-direction: column;
2131added: }
2132added: }
2133added: @media (max-width: 576px) {
2134added: .markdown h1:first-child {
2135added: --ifm-h1-font-size: 2rem;
2136added: }
2137added: .markdown > h2 {
2138added: --ifm-h2-font-size: 1.5rem;
2139added: }
2140added: .markdown > h3 {
2141added: --ifm-h3-font-size: 1.25rem;
2142added: }
2143added: }
2144added: @media (pointer: fine) {
2145added: .thin-scrollbar {
2146added: scrollbar-width: thin;
2147added: }
2148added: .thin-scrollbar::-webkit-scrollbar {
2149added: height: var(--ifm-scrollbar-size);
2150added: width: var(--ifm-scrollbar-size);
2151added: }
2152added: .thin-scrollbar::-webkit-scrollbar-track {
2153added: background: var(--ifm-scrollbar-track-background-color);
2154added: border-radius: 10px;
2155added: }
2156added: .thin-scrollbar::-webkit-scrollbar-thumb {
2157added: background: var(--ifm-scrollbar-thumb-background-color);
2158added: border-radius: 10px;
2159added: }
2160added: .thin-scrollbar::-webkit-scrollbar-thumb:hover {
2161added: background: var(--ifm-scrollbar-thumb-hover-background-color);
2162added: }
2163added: }
2164added: @media (prefers-reduced-motion: reduce) {
2165added: :root {
2166added: --ifm-transition-fast: 0ms;
2167added: --ifm-transition-slow: 0ms;
2168added: }
2169added: }
2170added: @media print {
2171added: .footer,
2172added: .menu,
2173added: .navbar,
2174added: .pagination-nav,
2175added: .table-of-contents {
2176added: display: none;
2177added: }
2178added: .tabs {
2179added: page-break-inside: avoid;
2180added: }
2181added: }
Addedstatic/public/pocketbase.umd.js+2 -0
@@ -0,0 +1,2 @@
1added: !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).PocketBase=t()}(this,(function(){"use strict";class ClientResponseError extends Error{constructor(e){super("ClientResponseError"),this.url="",this.status=0,this.response={},this.isAbort=!1,this.originalError=null,Object.setPrototypeOf(this,ClientResponseError.prototype),null!==e&&"object"==typeof e&&(this.url="string"==typeof e.url?e.url:"",this.status="number"==typeof e.status?e.status:0,this.isAbort=!!e.isAbort,this.originalError=e.originalError,null!==e.response&&"object"==typeof e.response?this.response=e.response:null!==e.data&&"object"==typeof e.data?this.response=e.data:this.response={}),this.originalError||e instanceof ClientResponseError||(this.originalError=e),"undefined"!=typeof DOMException&&e instanceof DOMException&&(this.isAbort=!0),this.name="ClientResponseError "+this.status,this.message=this.response?.message,this.message||(this.isAbort?this.message="The request was autocancelled. You can find more info in https://github.com/pocketbase/js-sdk#auto-cancellation.":this.originalError?.cause?.message?.includes("ECONNREFUSED ::1")?this.message="Failed to connect to the PocketBase server. Try changing the SDK URL from localhost to 127.0.0.1 (https://github.com/pocketbase/js-sdk/issues/21).":this.message="Something went wrong."),this.cause=this.originalError}get data(){return this.response}toJSON(){return{...this}}}const e=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function cookieSerialize(t,s,i){const n=Object.assign({},i||{}),r=n.encode||defaultEncode;if(!e.test(t))throw new TypeError("argument name is invalid");const o=r(s);if(o&&!e.test(o))throw new TypeError("argument val is invalid");let a=t+"="+o;if(null!=n.maxAge){const e=n.maxAge-0;if(isNaN(e)||!isFinite(e))throw new TypeError("option maxAge is invalid");a+="; Max-Age="+Math.floor(e)}if(n.domain){if(!e.test(n.domain))throw new TypeError("option domain is invalid");a+="; Domain="+n.domain}if(n.path){if(!e.test(n.path))throw new TypeError("option path is invalid");a+="; Path="+n.path}if(n.expires){if(!function isDate(e){return"[object Date]"===Object.prototype.toString.call(e)||e instanceof Date}(n.expires)||isNaN(n.expires.valueOf()))throw new TypeError("option expires is invalid");a+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(a+="; HttpOnly"),n.secure&&(a+="; Secure"),n.priority){switch("string"==typeof n.priority?n.priority.toLowerCase():n.priority){case"low":a+="; Priority=Low";break;case"medium":a+="; Priority=Medium";break;case"high":a+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(n.sameSite){switch("string"==typeof n.sameSite?n.sameSite.toLowerCase():n.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return a}function defaultDecode(e){return-1!==e.indexOf("%")?decodeURIComponent(e):e}function defaultEncode(e){return encodeURIComponent(e)}const t="undefined"!=typeof navigator&&"ReactNative"===navigator.product||"undefined"!=typeof global&&global.HermesInternal;let s;function getTokenPayload(e){if(e)try{const t=decodeURIComponent(s(e.split(".")[1]).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""));return JSON.parse(t)||{}}catch(e){}return{}}function isTokenExpired(e,t=0){let s=getTokenPayload(e);return!(Object.keys(s).length>0&&(!s.exp||s.exp-t>Date.now()/1e3))}s="function"!=typeof atob||t?e=>{let t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(var s,i,n=0,r=0,o="";i=t.charAt(r++);~i&&(s=n%4?64*s+i:i,n++%4)?o+=String.fromCharCode(255&s>>(-2*n&6)):0)i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(i);return o}:atob;const i="pb_auth";class BaseAuthStore{constructor(){this.baseToken="",this.baseModel=null,this._onChangeCallbacks=[]}get token(){return this.baseToken}get record(){return this.baseModel}get model(){return this.baseModel}get isValid(){return!isTokenExpired(this.token)}get isSuperuser(){let e=getTokenPayload(this.token);return"auth"==e.type&&("_superusers"==this.record?.collectionName||!this.record?.collectionName&&"pbc_3142635823"==e.collectionId)}get isAdmin(){return console.warn("Please replace pb.authStore.isAdmin with pb.authStore.isSuperuser OR simply check the value of pb.authStore.record?.collectionName"),this.isSuperuser}get isAuthRecord(){return console.warn("Please replace pb.authStore.isAuthRecord with !pb.authStore.isSuperuser OR simply check the value of pb.authStore.record?.collectionName"),"auth"==getTokenPayload(this.token).type&&!this.isSuperuser}save(e,t){this.baseToken=e||"",this.baseModel=t||null,this.triggerChange()}clear(){this.baseToken="",this.baseModel=null,this.triggerChange()}loadFromCookie(e,t=i){const s=function cookieParse(e,t){const s={};if("string"!=typeof e)return s;const i=Object.assign({},{}).decode||defaultDecode;let n=0;for(;n<e.length;){const t=e.indexOf("=",n);if(-1===t)break;let r=e.indexOf(";",n);if(-1===r)r=e.length;else if(r<t){n=e.lastIndexOf(";",t-1)+1;continue}const o=e.slice(n,t).trim();if(void 0===s[o]){let n=e.slice(t+1,r).trim();34===n.charCodeAt(0)&&(n=n.slice(1,-1));try{s[o]=i(n)}catch(e){s[o]=n}}n=r+1}return s}(e||"")[t]||"";let n={};try{n=JSON.parse(s),(null===typeof n||"object"!=typeof n||Array.isArray(n))&&(n={})}catch(e){}this.save(n.token||"",n.record||n.model||null)}exportToCookie(e,t=i){const s={secure:!0,sameSite:!0,httpOnly:!0,path:"/"},n=getTokenPayload(this.token);s.expires=n?.exp?new Date(1e3*n.exp):new Date("1970-01-01"),e=Object.assign({},s,e);const r={token:this.token,record:this.record?JSON.parse(JSON.stringify(this.record)):null};let o=cookieSerialize(t,JSON.stringify(r),e);const a="undefined"!=typeof Blob?new Blob([o]).size:o.length;if(r.record&&a>4096){r.record={id:r.record?.id,email:r.record?.email};const s=["collectionId","collectionName","verified"];for(const e in this.record)s.includes(e)&&(r.record[e]=this.record[e]);o=cookieSerialize(t,JSON.stringify(r),e)}return o}onChange(e,t=!1){return this._onChangeCallbacks.push(e),t&&e(this.token,this.record),()=>{for(let t=this._onChangeCallbacks.length-1;t>=0;t--)if(this._onChangeCallbacks[t]==e)return delete this._onChangeCallbacks[t],void this._onChangeCallbacks.splice(t,1)}}triggerChange(){for(const e of this._onChangeCallbacks)e&&e(this.token,this.record)}}class LocalAuthStore extends BaseAuthStore{constructor(e="pocketbase_auth"){super(),this.storageFallback={},this.storageKey=e,this._bindStorageEvent()}get token(){return(this._storageGet(this.storageKey)||{}).token||""}get record(){const e=this._storageGet(this.storageKey)||{};return e.record||e.model||null}get model(){return this.record}save(e,t){this._storageSet(this.storageKey,{token:e,record:t}),super.save(e,t)}clear(){this._storageRemove(this.storageKey),super.clear()}_storageGet(e){if("undefined"!=typeof window&&window?.localStorage){const t=window.localStorage.getItem(e)||"";try{return JSON.parse(t)}catch(e){return t}}return this.storageFallback[e]}_storageSet(e,t){if("undefined"!=typeof window&&window?.localStorage){let s=t;"string"!=typeof t&&(s=JSON.stringify(t)),window.localStorage.setItem(e,s)}else this.storageFallback[e]=t}_storageRemove(e){"undefined"!=typeof window&&window?.localStorage&&window.localStorage?.removeItem(e),delete this.storageFallback[e]}_bindStorageEvent(){"undefined"!=typeof window&&window?.localStorage&&window.addEventListener&&window.addEventListener("storage",(e=>{if(e.key!=this.storageKey)return;const t=this._storageGet(this.storageKey)||{};super.save(t.token||"",t.record||t.model||null)}))}}class BaseService{constructor(e){this.client=e}}class SettingsService extends BaseService{async getAll(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/settings",e)}async update(e,t){return t=Object.assign({method:"PATCH",body:e},t),this.client.send("/api/settings",t)}async testS3(e="storage",t){return t=Object.assign({method:"POST",body:{filesystem:e}},t),this.client.send("/api/settings/test/s3",t).then((()=>!0))}async testEmail(e,t,s,i){return i=Object.assign({method:"POST",body:{email:t,template:s,collection:e}},i),this.client.send("/api/settings/test/email",i).then((()=>!0))}async generateAppleClientSecret(e,t,s,i,n,r){return r=Object.assign({method:"POST",body:{clientId:e,teamId:t,keyId:s,privateKey:i,duration:n}},r),this.client.send("/api/settings/apple/generate-client-secret",r)}}const n=["requestKey","$cancelKey","$autoCancel","fetch","headers","body","query","params","cache","credentials","headers","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","signal","window"];function normalizeUnknownQueryParams(e){if(e){e.query=e.query||{};for(let t in e)n.includes(t)||(e.query[t]=e[t],delete e[t])}}function serializeQueryParams(e){const t=[];for(const s in e){const i=encodeURIComponent(s),n=Array.isArray(e[s])?e[s]:[e[s]];for(let e of n)e=prepareQueryParamValue(e),null!==e&&t.push(i+"="+e)}return t.join("&")}function prepareQueryParamValue(e){return null==e?null:e instanceof Date?encodeURIComponent(e.toISOString().replace("T"," ")):"object"==typeof e?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(e)}class RealtimeService extends BaseService{constructor(){super(...arguments),this.clientId="",this.eventSource=null,this.subscriptions={},this.lastSentSubscriptions=[],this.maxConnectTimeout=15e3,this.reconnectAttempts=0,this.maxReconnectAttempts=1/0,this.predefinedReconnectIntervals=[200,300,500,1e3,1200,1500,2e3],this.pendingConnects=[]}get isConnected(){return!!this.eventSource&&!!this.clientId&&!this.pendingConnects.length}async subscribe(e,t,s){if(!e)throw new Error("topic must be set.");let i=e;if(s){normalizeUnknownQueryParams(s=Object.assign({},s));const e="options="+encodeURIComponent(JSON.stringify({query:s.query,headers:s.headers}));i+=(i.includes("?")?"&":"?")+e}const listener=function(e){const s=e;let i;try{i=JSON.parse(s?.data)}catch{}t(i||{})};return this.subscriptions[i]||(this.subscriptions[i]=[]),this.subscriptions[i].push(listener),this.isConnected?1===this.subscriptions[i].length?await this.submitSubscriptions():this.eventSource?.addEventListener(i,listener):await this.connect(),async()=>this.unsubscribeByTopicAndListener(e,listener)}async unsubscribe(e){let t=!1;if(e){const s=this.getSubscriptionsByTopic(e);for(let e in s)if(this.hasSubscriptionListeners(e)){for(let t of this.subscriptions[e])this.eventSource?.removeEventListener(e,t);delete this.subscriptions[e],t||(t=!0)}}else this.subscriptions={};this.hasSubscriptionListeners()?t&&await this.submitSubscriptions():this.disconnect()}async unsubscribeByPrefix(e){let t=!1;for(let s in this.subscriptions)if((s+"?").startsWith(e)){t=!0;for(let e of this.subscriptions[s])this.eventSource?.removeEventListener(s,e);delete this.subscriptions[s]}t&&(this.hasSubscriptionListeners()?await this.submitSubscriptions():this.disconnect())}async unsubscribeByTopicAndListener(e,t){let s=!1;const i=this.getSubscriptionsByTopic(e);for(let e in i){if(!Array.isArray(this.subscriptions[e])||!this.subscriptions[e].length)continue;let i=!1;for(let s=this.subscriptions[e].length-1;s>=0;s--)this.subscriptions[e][s]===t&&(i=!0,delete this.subscriptions[e][s],this.subscriptions[e].splice(s,1),this.eventSource?.removeEventListener(e,t));i&&(this.subscriptions[e].length||delete this.subscriptions[e],s||this.hasSubscriptionListeners(e)||(s=!0))}this.hasSubscriptionListeners()?s&&await this.submitSubscriptions():this.disconnect()}hasSubscriptionListeners(e){if(this.subscriptions=this.subscriptions||{},e)return!!this.subscriptions[e]?.length;for(let e in this.subscriptions)if(this.subscriptions[e]?.length)return!0;return!1}async submitSubscriptions(){if(this.clientId)return this.addAllSubscriptionListeners(),this.lastSentSubscriptions=this.getNonEmptySubscriptionKeys(),this.client.send("/api/realtime",{method:"POST",body:{clientId:this.clientId,subscriptions:this.lastSentSubscriptions},requestKey:this.getSubscriptionsCancelKey()}).catch((e=>{if(!e?.isAbort)throw e}))}getSubscriptionsCancelKey(){return"realtime_"+this.clientId}getSubscriptionsByTopic(e){const t={};e=e.includes("?")?e:e+"?";for(let s in this.subscriptions)(s+"?").startsWith(e)&&(t[s]=this.subscriptions[s]);return t}getNonEmptySubscriptionKeys(){const e=[];for(let t in this.subscriptions)this.subscriptions[t].length&&e.push(t);return e}addAllSubscriptionListeners(){if(this.eventSource){this.removeAllSubscriptionListeners();for(let e in this.subscriptions)for(let t of this.subscriptions[e])this.eventSource.addEventListener(e,t)}}removeAllSubscriptionListeners(){if(this.eventSource)for(let e in this.subscriptions)for(let t of this.subscriptions[e])this.eventSource.removeEventListener(e,t)}async connect(){if(!(this.reconnectAttempts>0))return new Promise(((e,t)=>{this.pendingConnects.push({resolve:e,reject:t}),this.pendingConnects.length>1||this.initConnect()}))}initConnect(){this.disconnect(!0),clearTimeout(this.connectTimeoutId),this.connectTimeoutId=setTimeout((()=>{this.connectErrorHandler(new Error("EventSource connect took too long."))}),this.maxConnectTimeout),this.eventSource=new EventSource(this.client.buildURL("/api/realtime")),this.eventSource.onerror=e=>{this.connectErrorHandler(new Error("Failed to establish realtime connection."))},this.eventSource.addEventListener("PB_CONNECT",(e=>{const t=e;this.clientId=t?.lastEventId,this.submitSubscriptions().then((async()=>{let e=3;for(;this.hasUnsentSubscriptions()&&e>0;)e--,await this.submitSubscriptions()})).then((()=>{for(let e of this.pendingConnects)e.resolve();this.pendingConnects=[],this.reconnectAttempts=0,clearTimeout(this.reconnectTimeoutId),clearTimeout(this.connectTimeoutId);const t=this.getSubscriptionsByTopic("PB_CONNECT");for(let s in t)for(let i of t[s])i(e)})).catch((e=>{this.clientId="",this.connectErrorHandler(e)}))}))}hasUnsentSubscriptions(){const e=this.getNonEmptySubscriptionKeys();if(e.length!=this.lastSentSubscriptions.length)return!0;for(const t of e)if(!this.lastSentSubscriptions.includes(t))return!0;return!1}connectErrorHandler(e){if(clearTimeout(this.connectTimeoutId),clearTimeout(this.reconnectTimeoutId),!this.clientId&&!this.reconnectAttempts||this.reconnectAttempts>this.maxReconnectAttempts){for(let t of this.pendingConnects)t.reject(new ClientResponseError(e));return this.pendingConnects=[],void this.disconnect()}this.disconnect(!0);const t=this.predefinedReconnectIntervals[this.reconnectAttempts]||this.predefinedReconnectIntervals[this.predefinedReconnectIntervals.length-1];this.reconnectAttempts++,this.reconnectTimeoutId=setTimeout((()=>{this.initConnect()}),t)}disconnect(e=!1){if(this.clientId&&this.onDisconnect&&this.onDisconnect(Object.keys(this.subscriptions)),clearTimeout(this.connectTimeoutId),clearTimeout(this.reconnectTimeoutId),this.removeAllSubscriptionListeners(),this.client.cancelRequest(this.getSubscriptionsCancelKey()),this.eventSource?.close(),this.eventSource=null,this.clientId="",!e){this.reconnectAttempts=0;for(let e of this.pendingConnects)e.resolve();this.pendingConnects=[]}}}class CrudService extends BaseService{decode(e){return e}async getFullList(e,t){if("number"==typeof e)return this._getFullList(e,t);let s=500;return(t=Object.assign({},e,t)).batch&&(s=t.batch,delete t.batch),this._getFullList(s,t)}async getList(e=1,t=30,s){return(s=Object.assign({method:"GET"},s)).query=Object.assign({page:e,perPage:t},s.query),this.client.send(this.baseCrudPath,s).then((e=>(e.items=e.items?.map((e=>this.decode(e)))||[],e)))}async getFirstListItem(e,t){return(t=Object.assign({requestKey:"one_by_filter_"+this.baseCrudPath+"_"+e},t)).query=Object.assign({filter:e,skipTotal:1},t.query),this.getList(1,1,t).then((e=>{if(!e?.items?.length)throw new ClientResponseError({status:404,response:{code:404,message:"The requested resource wasn't found.",data:{}}});return e.items[0]}))}async getOne(e,t){if(!e)throw new ClientResponseError({url:this.client.buildURL(this.baseCrudPath+"/"),status:404,response:{code:404,message:"Missing required record id.",data:{}}});return t=Object.assign({method:"GET"},t),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e),t).then((e=>this.decode(e)))}async create(e,t){return t=Object.assign({method:"POST",body:e},t),this.client.send(this.baseCrudPath,t).then((e=>this.decode(e)))}async update(e,t,s){return s=Object.assign({method:"PATCH",body:t},s),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e),s).then((e=>this.decode(e)))}async delete(e,t){return t=Object.assign({method:"DELETE"},t),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e),t).then((()=>!0))}_getFullList(e=500,t){(t=t||{}).query=Object.assign({skipTotal:1},t.query);let s=[],request=async i=>this.getList(i,e||500,t).then((e=>{const t=e.items;return s=s.concat(t),t.length==e.perPage?request(i+1):s}));return request(1)}}function normalizeLegacyOptionsArgs(e,t,s,i){const n=void 0!==i;return n||void 0!==s?n?(console.warn(e),t.body=Object.assign({},t.body,s),t.query=Object.assign({},t.query,i),t):Object.assign(t,s):t}function resetAutoRefresh(e){e._resetAutoRefresh?.()}class RecordService extends CrudService{constructor(e,t){super(e),this.collectionIdOrName=t}get baseCrudPath(){return this.baseCollectionPath+"/records"}get baseCollectionPath(){return"/api/collections/"+encodeURIComponent(this.collectionIdOrName)}get isSuperusers(){return"_superusers"==this.collectionIdOrName||"_pbc_2773867675"==this.collectionIdOrName}async subscribe(e,t,s){if(!e)throw new Error("Missing topic.");if(!t)throw new Error("Missing subscription callback.");return this.client.realtime.subscribe(this.collectionIdOrName+"/"+e,t,s)}async unsubscribe(e){return e?this.client.realtime.unsubscribe(this.collectionIdOrName+"/"+e):this.client.realtime.unsubscribeByPrefix(this.collectionIdOrName)}async getFullList(e,t){if("number"==typeof e)return super.getFullList(e,t);const s=Object.assign({},e,t);return super.getFullList(s)}async getList(e=1,t=30,s){return super.getList(e,t,s)}async getFirstListItem(e,t){return super.getFirstListItem(e,t)}async getOne(e,t){return super.getOne(e,t)}async create(e,t){return super.create(e,t)}async update(e,t,s){return super.update(e,t,s).then((e=>{if(this.client.authStore.record?.id===e?.id&&(this.client.authStore.record?.collectionId===this.collectionIdOrName||this.client.authStore.record?.collectionName===this.collectionIdOrName)){let t=Object.assign({},this.client.authStore.record.expand),s=Object.assign({},this.client.authStore.record,e);t&&(s.expand=Object.assign(t,e.expand)),this.client.authStore.save(this.client.authStore.token,s)}return e}))}async delete(e,t){return super.delete(e,t).then((t=>(!t||this.client.authStore.record?.id!==e||this.client.authStore.record?.collectionId!==this.collectionIdOrName&&this.client.authStore.record?.collectionName!==this.collectionIdOrName||this.client.authStore.clear(),t)))}authResponse(e){const t=this.decode(e?.record||{});return this.client.authStore.save(e?.token,t),Object.assign({},e,{token:e?.token||"",record:t})}async listAuthMethods(e){return e=Object.assign({method:"GET",fields:"mfa,otp,password,oauth2"},e),this.client.send(this.baseCollectionPath+"/auth-methods",e)}async authWithPassword(e,t,s){let i;s=Object.assign({method:"POST",body:{identity:e,password:t}},s),this.isSuperusers&&(i=s.autoRefreshThreshold,delete s.autoRefreshThreshold,s.autoRefresh||resetAutoRefresh(this.client));let n=await this.client.send(this.baseCollectionPath+"/auth-with-password",s);return n=this.authResponse(n),i&&this.isSuperusers&&function registerAutoRefresh(e,t,s,i){resetAutoRefresh(e);const n=e.beforeSend,r=e.authStore.record,o=e.authStore.onChange(((t,s)=>{(!t||s?.id!=r?.id||(s?.collectionId||r?.collectionId)&&s?.collectionId!=r?.collectionId)&&resetAutoRefresh(e)}));e._resetAutoRefresh=function(){o(),e.beforeSend=n,delete e._resetAutoRefresh},e.beforeSend=async(r,o)=>{const a=e.authStore.token;if(o.query?.autoRefresh)return n?n(r,o):{url:r,sendOptions:o};let c=e.authStore.isValid;if(c&&isTokenExpired(e.authStore.token,t))try{await s()}catch(e){c=!1}c||await i();const l=o.headers||{};for(let t in l)if("authorization"==t.toLowerCase()&&a==l[t]&&e.authStore.token){l[t]=e.authStore.token;break}return o.headers=l,n?n(r,o):{url:r,sendOptions:o}}}(this.client,i,(()=>this.authRefresh({autoRefresh:!0})),(()=>this.authWithPassword(e,t,Object.assign({autoRefresh:!0},s)))),n}async authWithOAuth2Code(e,t,s,i,n,r,o){let a={method:"POST",body:{provider:e,code:t,codeVerifier:s,redirectURL:i,createData:n}};return a=normalizeLegacyOptionsArgs("This form of authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createData?, body?, query?) is deprecated. Consider replacing it with authWithOAuth2Code(provider, code, codeVerifier, redirectURL, createData?, options?).",a,r,o),this.client.send(this.baseCollectionPath+"/auth-with-oauth2",a).then((e=>this.authResponse(e)))}authWithOAuth2(...e){if(e.length>1||"string"==typeof e?.[0])return console.warn("PocketBase: This form of authWithOAuth2() is deprecated and may get removed in the future. Please replace with authWithOAuth2Code() OR use the authWithOAuth2() realtime form as shown in https://pocketbase.io/docs/authentication/#oauth2-integration."),this.authWithOAuth2Code(e?.[0]||"",e?.[1]||"",e?.[2]||"",e?.[3]||"",e?.[4]||{},e?.[5]||{},e?.[6]||{});const t=e?.[0]||{};let s=null;t.urlCallback||(s=openBrowserPopup(void 0));const i=new RealtimeService(this.client);function cleanup(){s?.close(),i.unsubscribe()}const n={},r=t.requestKey;return r&&(n.requestKey=r),this.listAuthMethods(n).then((e=>{const n=e.oauth2.providers.find((e=>e.name===t.provider));if(!n)throw new ClientResponseError(new Error(`Missing or invalid provider "${t.provider}".`));const o=this.client.buildURL("/api/oauth2-redirect"),a=r?this.client.cancelControllers?.[r]:void 0;return a&&(a.signal.onabort=()=>{cleanup()}),new Promise((async(e,r)=>{try{await i.subscribe("@oauth2",(async s=>{const c=i.clientId;try{if(!s.state||c!==s.state)throw new Error("State parameters don't match.");if(s.error||!s.code)throw new Error("OAuth2 redirect error or missing code: "+s.error);const i=Object.assign({},t);delete i.provider,delete i.scopes,delete i.createData,delete i.urlCallback,a?.signal?.onabort&&(a.signal.onabort=null);const r=await this.authWithOAuth2Code(n.name,s.code,n.codeVerifier,o,t.createData,i);e(r)}catch(e){r(new ClientResponseError(e))}cleanup()}));const c={state:i.clientId};t.scopes?.length&&(c.scope=t.scopes.join(" "));const l=this._replaceQueryParams(n.authURL+o,c);let h=t.urlCallback||function(e){s?s.location.href=e:s=openBrowserPopup(e)};await h(l)}catch(e){cleanup(),r(new ClientResponseError(e))}}))})).catch((e=>{throw cleanup(),e}))}async authRefresh(e,t){let s={method:"POST"};return s=normalizeLegacyOptionsArgs("This form of authRefresh(body?, query?) is deprecated. Consider replacing it with authRefresh(options?).",s,e,t),this.client.send(this.baseCollectionPath+"/auth-refresh",s).then((e=>this.authResponse(e)))}async requestPasswordReset(e,t,s){let i={method:"POST",body:{email:e}};return i=normalizeLegacyOptionsArgs("This form of requestPasswordReset(email, body?, query?) is deprecated. Consider replacing it with requestPasswordReset(email, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/request-password-reset",i).then((()=>!0))}async confirmPasswordReset(e,t,s,i,n){let r={method:"POST",body:{token:e,password:t,passwordConfirm:s}};return r=normalizeLegacyOptionsArgs("This form of confirmPasswordReset(token, password, passwordConfirm, body?, query?) is deprecated. Consider replacing it with confirmPasswordReset(token, password, passwordConfirm, options?).",r,i,n),this.client.send(this.baseCollectionPath+"/confirm-password-reset",r).then((()=>!0))}async requestVerification(e,t,s){let i={method:"POST",body:{email:e}};return i=normalizeLegacyOptionsArgs("This form of requestVerification(email, body?, query?) is deprecated. Consider replacing it with requestVerification(email, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/request-verification",i).then((()=>!0))}async confirmVerification(e,t,s){let i={method:"POST",body:{token:e}};return i=normalizeLegacyOptionsArgs("This form of confirmVerification(token, body?, query?) is deprecated. Consider replacing it with confirmVerification(token, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/confirm-verification",i).then((()=>{const t=getTokenPayload(e),s=this.client.authStore.record;return s&&!s.verified&&s.id===t.id&&s.collectionId===t.collectionId&&(s.verified=!0,this.client.authStore.save(this.client.authStore.token,s)),!0}))}async requestEmailChange(e,t,s){let i={method:"POST",body:{newEmail:e}};return i=normalizeLegacyOptionsArgs("This form of requestEmailChange(newEmail, body?, query?) is deprecated. Consider replacing it with requestEmailChange(newEmail, options?).",i,t,s),this.client.send(this.baseCollectionPath+"/request-email-change",i).then((()=>!0))}async confirmEmailChange(e,t,s,i){let n={method:"POST",body:{token:e,password:t}};return n=normalizeLegacyOptionsArgs("This form of confirmEmailChange(token, password, body?, query?) is deprecated. Consider replacing it with confirmEmailChange(token, password, options?).",n,s,i),this.client.send(this.baseCollectionPath+"/confirm-email-change",n).then((()=>{const t=getTokenPayload(e),s=this.client.authStore.record;return s&&s.id===t.id&&s.collectionId===t.collectionId&&this.client.authStore.clear(),!0}))}async listExternalAuths(e,t){return this.client.collection("_externalAuths").getFullList(Object.assign({},t,{filter:this.client.filter("recordRef = {:id}",{id:e})}))}async unlinkExternalAuth(e,t,s){const i=await this.client.collection("_externalAuths").getFirstListItem(this.client.filter("recordRef = {:recordId} && provider = {:provider}",{recordId:e,provider:t}));return this.client.collection("_externalAuths").delete(i.id,s).then((()=>!0))}async requestOTP(e,t){return t=Object.assign({method:"POST",body:{email:e}},t),this.client.send(this.baseCollectionPath+"/request-otp",t)}async authWithOTP(e,t,s){return s=Object.assign({method:"POST",body:{otpId:e,password:t}},s),this.client.send(this.baseCollectionPath+"/auth-with-otp",s).then((e=>this.authResponse(e)))}async impersonate(e,t,s){(s=Object.assign({method:"POST",body:{duration:t}},s)).headers=s.headers||{},s.headers.Authorization||(s.headers.Authorization=this.client.authStore.token);const i=new Client(this.client.baseURL,new BaseAuthStore,this.client.lang),n=await i.send(this.baseCollectionPath+"/impersonate/"+encodeURIComponent(e),s);return i.authStore.save(n?.token,this.decode(n?.record||{})),i}_replaceQueryParams(e,t={}){let s=e,i="";e.indexOf("?")>=0&&(s=e.substring(0,e.indexOf("?")),i=e.substring(e.indexOf("?")+1));const n={},r=i.split("&");for(const e of r){if(""==e)continue;const t=e.split("=");n[decodeURIComponent(t[0].replace(/\+/g," "))]=decodeURIComponent((t[1]||"").replace(/\+/g," "))}for(let e in t)t.hasOwnProperty(e)&&(null==t[e]?delete n[e]:n[e]=t[e]);i="";for(let e in n)n.hasOwnProperty(e)&&(""!=i&&(i+="&"),i+=encodeURIComponent(e.replace(/%20/g,"+"))+"="+encodeURIComponent(n[e].replace(/%20/g,"+")));return""!=i?s+"?"+i:s}}function openBrowserPopup(e){if("undefined"==typeof window||!window?.open)throw new ClientResponseError(new Error("Not in a browser context - please pass a custom urlCallback function."));let t=1024,s=768,i=window.innerWidth,n=window.innerHeight;t=t>i?i:t,s=s>n?n:s;let r=i/2-t/2,o=n/2-s/2;return window.open(e,"popup_window","width="+t+",height="+s+",top="+o+",left="+r+",resizable,menubar=no")}class CollectionService extends CrudService{get baseCrudPath(){return"/api/collections"}async import(e,t=!1,s){return s=Object.assign({method:"PUT",body:{collections:e,deleteMissing:t}},s),this.client.send(this.baseCrudPath+"/import",s).then((()=>!0))}async getScaffolds(e){return e=Object.assign({method:"GET"},e),this.client.send(this.baseCrudPath+"/meta/scaffolds",e)}async truncate(e,t){return t=Object.assign({method:"DELETE"},t),this.client.send(this.baseCrudPath+"/"+encodeURIComponent(e)+"/truncate",t).then((()=>!0))}}class LogService extends BaseService{async getList(e=1,t=30,s){return(s=Object.assign({method:"GET"},s)).query=Object.assign({page:e,perPage:t},s.query),this.client.send("/api/logs",s)}async getOne(e,t){if(!e)throw new ClientResponseError({url:this.client.buildURL("/api/logs/"),status:404,response:{code:404,message:"Missing required log id.",data:{}}});return t=Object.assign({method:"GET"},t),this.client.send("/api/logs/"+encodeURIComponent(e),t)}async getStats(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/logs/stats",e)}}class HealthService extends BaseService{async check(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/health",e)}}class FileService extends BaseService{getUrl(e,t,s={}){return console.warn("Please replace pb.files.getUrl() with pb.files.getURL()"),this.getURL(e,t,s)}getURL(e,t,s={}){if(!t||!e?.id||!e?.collectionId&&!e?.collectionName)return"";const i=[];i.push("api"),i.push("files"),i.push(encodeURIComponent(e.collectionId||e.collectionName)),i.push(encodeURIComponent(e.id)),i.push(encodeURIComponent(t));let n=this.client.buildURL(i.join("/"));if(Object.keys(s).length){!1===s.download&&delete s.download;const e=new URLSearchParams(s);n+=(n.includes("?")?"&":"?")+e}return n}async getToken(e){return e=Object.assign({method:"POST"},e),this.client.send("/api/files/token",e).then((e=>e?.token||""))}}class BackupService extends BaseService{async getFullList(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/backups",e)}async create(e,t){return t=Object.assign({method:"POST",body:{name:e}},t),this.client.send("/api/backups",t).then((()=>!0))}async upload(e,t){return t=Object.assign({method:"POST",body:e},t),this.client.send("/api/backups/upload",t).then((()=>!0))}async delete(e,t){return t=Object.assign({method:"DELETE"},t),this.client.send(`/api/backups/${encodeURIComponent(e)}`,t).then((()=>!0))}async restore(e,t){return t=Object.assign({method:"POST"},t),this.client.send(`/api/backups/${encodeURIComponent(e)}/restore`,t).then((()=>!0))}getDownloadUrl(e,t){return console.warn("Please replace pb.backups.getDownloadUrl() with pb.backups.getDownloadURL()"),this.getDownloadURL(e,t)}getDownloadURL(e,t){return this.client.buildURL(`/api/backups/${encodeURIComponent(t)}?token=${encodeURIComponent(e)}`)}}class CronService extends BaseService{async getFullList(e){return e=Object.assign({method:"GET"},e),this.client.send("/api/crons",e)}async run(e,t){return t=Object.assign({method:"POST"},t),this.client.send(`/api/crons/${encodeURIComponent(e)}`,t).then((()=>!0))}}function isFile(e){return"undefined"!=typeof Blob&&e instanceof Blob||"undefined"!=typeof File&&e instanceof File||null!==e&&"object"==typeof e&&e.uri&&("undefined"!=typeof navigator&&"ReactNative"===navigator.product||"undefined"!=typeof global&&global.HermesInternal)}function isFormData(e){return e&&("FormData"===e.constructor?.name||"undefined"!=typeof FormData&&e instanceof FormData)}function hasFileField(e){for(const t in e){const s=Array.isArray(e[t])?e[t]:[e[t]];for(const e of s)if(isFile(e))return!0}return!1}const r=/^[\-\.\d]+$/;function inferFormDataValue(e){if("string"!=typeof e)return e;if("true"==e)return!0;if("false"==e)return!1;if(("-"===e[0]||e[0]>="0"&&e[0]<="9")&&r.test(e)){let t=+e;if(""+t===e)return t}return e}class BatchService extends BaseService{constructor(){super(...arguments),this.requests=[],this.subs={}}collection(e){return this.subs[e]||(this.subs[e]=new SubBatchService(this.requests,e)),this.subs[e]}async send(e){const t=new FormData,s=[];for(let e=0;e<this.requests.length;e++){const i=this.requests[e];if(s.push({method:i.method,url:i.url,headers:i.headers,body:i.json}),i.files)for(let s in i.files){const n=i.files[s]||[];for(let i of n)t.append("requests."+e+"."+s,i)}}return t.append("@jsonPayload",JSON.stringify({requests:s})),e=Object.assign({method:"POST",body:t},e),this.client.send("/api/batch",e)}}class SubBatchService{constructor(e,t){this.requests=[],this.requests=e,this.collectionIdOrName=t}upsert(e,t){t=Object.assign({body:e||{}},t);const s={method:"PUT",url:"/api/collections/"+encodeURIComponent(this.collectionIdOrName)+"/records"};this.prepareRequest(s,t),this.requests.push(s)}create(e,t){t=Object.assign({body:e||{}},t);const s={method:"POST",url:"/api/collections/"+encodeURIComponent(this.collectionIdOrName)+"/records"};this.prepareRequest(s,t),this.requests.push(s)}update(e,t,s){s=Object.assign({body:t||{}},s);const i={method:"PATCH",url:"/api/collections/"+encodeURIComponent(this.collectionIdOrName)+"/records/"+encodeURIComponent(e)};this.prepareRequest(i,s),this.requests.push(i)}delete(e,t){t=Object.assign({},t);const s={method:"DELETE",url:"/api/collections/"+encodeURIComponent(this.collectionIdOrName)+"/records/"+encodeURIComponent(e)};this.prepareRequest(s,t),this.requests.push(s)}prepareRequest(e,t){if(normalizeUnknownQueryParams(t),e.headers=t.headers,e.json={},e.files={},void 0!==t.query){const s=serializeQueryParams(t.query);s&&(e.url+=(e.url.includes("?")?"&":"?")+s)}let s=t.body;isFormData(s)&&(s=function convertFormDataToObject(e){let t={};return e.forEach(((e,s)=>{if("@jsonPayload"===s&&"string"==typeof e)try{let s=JSON.parse(e);Object.assign(t,s)}catch(e){console.warn("@jsonPayload error:",e)}else void 0!==t[s]?(Array.isArray(t[s])||(t[s]=[t[s]]),t[s].push(inferFormDataValue(e))):t[s]=inferFormDataValue(e)})),t}(s));for(const t in s){const i=s[t];if(isFile(i))e.files[t]=e.files[t]||[],e.files[t].push(i);else if(Array.isArray(i)){const s=[],n=[];for(const e of i)isFile(e)?s.push(e):n.push(e);if(s.length>0&&s.length==i.length){e.files[t]=e.files[t]||[];for(let i of s)e.files[t].push(i)}else if(e.json[t]=n,s.length>0){let i=t;t.startsWith("+")||t.endsWith("+")||(i+="+"),e.files[i]=e.files[i]||[];for(let t of s)e.files[i].push(t)}}else e.json[t]=i}}}class Client{get baseUrl(){return this.baseURL}set baseUrl(e){this.baseURL=e}constructor(e="/",t,s="en-US"){this.cancelControllers={},this.recordServices={},this.enableAutoCancellation=!0,this.baseURL=e,this.lang=s,t?this.authStore=t:"undefined"!=typeof window&&window.Deno?this.authStore=new BaseAuthStore:this.authStore=new LocalAuthStore,this.collections=new CollectionService(this),this.files=new FileService(this),this.logs=new LogService(this),this.settings=new SettingsService(this),this.realtime=new RealtimeService(this),this.health=new HealthService(this),this.backups=new BackupService(this),this.crons=new CronService(this)}get admins(){return this.collection("_superusers")}createBatch(){return new BatchService(this)}collection(e){return this.recordServices[e]||(this.recordServices[e]=new RecordService(this,e)),this.recordServices[e]}autoCancellation(e){return this.enableAutoCancellation=!!e,this}cancelRequest(e){return this.cancelControllers[e]&&(this.cancelControllers[e].abort(),delete this.cancelControllers[e]),this}cancelAllRequests(){for(let e in this.cancelControllers)this.cancelControllers[e].abort();return this.cancelControllers={},this}filter(e,t){if(!t)return e;for(let s in t){let i=t[s];switch(typeof i){case"boolean":case"number":i=""+i;break;case"string":i="'"+i.replace(/'/g,"\\'")+"'";break;default:i=null===i?"null":i instanceof Date?"'"+i.toISOString().replace("T"," ")+"'":"'"+JSON.stringify(i).replace(/'/g,"\\'")+"'"}e=e.replaceAll("{:"+s+"}",i)}return e}getFileUrl(e,t,s={}){return console.warn("Please replace pb.getFileUrl() with pb.files.getURL()"),this.files.getURL(e,t,s)}buildUrl(e){return console.warn("Please replace pb.buildUrl() with pb.buildURL()"),this.buildURL(e)}buildURL(e){let t=this.baseURL;return"undefined"==typeof window||!window.location||t.startsWith("https://")||t.startsWith("http://")||(t=window.location.origin?.endsWith("/")?window.location.origin.substring(0,window.location.origin.length-1):window.location.origin||"",this.baseURL.startsWith("/")||(t+=window.location.pathname||"/",t+=t.endsWith("/")?"":"/"),t+=this.baseURL),e&&(t+=t.endsWith("/")?"":"/",t+=e.startsWith("/")?e.substring(1):e),t}async send(e,t){t=this.initSendOptions(e,t);let s=this.buildURL(e);if(this.beforeSend){const e=Object.assign({},await this.beforeSend(s,t));void 0!==e.url||void 0!==e.options?(s=e.url||s,t=e.options||t):Object.keys(e).length&&(t=e,console?.warn&&console.warn("Deprecated format of beforeSend return: please use `return { url, options }`, instead of `return options`."))}if(void 0!==t.query){const e=serializeQueryParams(t.query);e&&(s+=(s.includes("?")?"&":"?")+e),delete t.query}"application/json"==this.getHeader(t.headers,"Content-Type")&&t.body&&"string"!=typeof t.body&&(t.body=JSON.stringify(t.body));return(t.fetch||fetch)(s,t).then((async e=>{let s={};try{s=await e.json()}catch(e){}if(this.afterSend&&(s=await this.afterSend(e,s,t)),e.status>=400)throw new ClientResponseError({url:e.url,status:e.status,data:s});return s})).catch((e=>{throw new ClientResponseError(e)}))}initSendOptions(e,t){if((t=Object.assign({method:"GET"},t)).body=function convertToFormDataIfNeeded(e){if("undefined"==typeof FormData||void 0===e||"object"!=typeof e||null===e||isFormData(e)||!hasFileField(e))return e;const t=new FormData;for(const s in e){const i=e[s];if(void 0!==i)if("object"!=typeof i||hasFileField({data:i})){const e=Array.isArray(i)?i:[i];for(let i of e)t.append(s,i)}else{let e={};e[s]=i,t.append("@jsonPayload",JSON.stringify(e))}}return t}(t.body),normalizeUnknownQueryParams(t),t.query=Object.assign({},t.params,t.query),void 0===t.requestKey&&(!1===t.$autoCancel||!1===t.query.$autoCancel?t.requestKey=null:(t.$cancelKey||t.query.$cancelKey)&&(t.requestKey=t.$cancelKey||t.query.$cancelKey)),delete t.$autoCancel,delete t.query.$autoCancel,delete t.$cancelKey,delete t.query.$cancelKey,null!==this.getHeader(t.headers,"Content-Type")||isFormData(t.body)||(t.headers=Object.assign({},t.headers,{"Content-Type":"application/json"})),null===this.getHeader(t.headers,"Accept-Language")&&(t.headers=Object.assign({},t.headers,{"Accept-Language":this.lang})),this.authStore.token&&null===this.getHeader(t.headers,"Authorization")&&(t.headers=Object.assign({},t.headers,{Authorization:this.authStore.token})),this.enableAutoCancellation&&null!==t.requestKey){const s=t.requestKey||(t.method||"GET")+e;delete t.requestKey,this.cancelRequest(s);const i=new AbortController;this.cancelControllers[s]=i,t.signal=i.signal}return t}getHeader(e,t){e=e||{},t=t.toLowerCase();for(let s in e)if(s.toLowerCase()==t)return e[s];return null}}return Client}));
2added: //# sourceMappingURL=pocketbase.umd.js.map
Addedtsconfig.json+8 -0
@@ -0,0 +1,8 @@
1added: {
2added: // This file is not used in compilation. It is here just for a nice editor experience.
3added: "extends": "@docusaurus/tsconfig",
4added: "compilerOptions": {
5added: "baseUrl": "."
6added: },
7added: "exclude": [".docusaurus", "build"]
8added: }