Merge pull request #134 from pheralb/next

🚀 v4.0.0
This commit is contained in:
Pablo Hdez 2023-12-17 22:15:56 +00:00 committed by GitHub
commit 5bd5cd7c0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 4783 additions and 638 deletions

View File

@ -1,41 +1,45 @@
name: 🛠️ Check name: 🔎 Check
on: on:
push: push:
branches: branches:
- main - main
- next
pull_request: pull_request:
branches: branches:
- main - main
- next
jobs: jobs:
svelte-check: vitest:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Setup Node.js 18.x - name: Setup pnpm 8
uses: actions/setup-node@v3 uses: pnpm/action-setup@v2
with: with:
node-version: 18.x version: 8
- name: Install dependencies - name: Install dependencies
run: npm install run: pnpm install
- name: Run typecheck
run: npm run check
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Install dependencies
run: npm install
- name: Run Vitest - name: Run Vitest
run: npm run test run: pnpm test
svgs-size:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup pnpm 8
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install dependencies
run: pnpm install
working-directory: ./check-size
- name: Check svgs size
run: pnpm start
working-directory: ./check-size

1
.gitignore vendored
View File

@ -1,7 +1,6 @@
# Dependencies # Dependencies
node_modules node_modules
package-lock.json package-lock.json
pnpm-lock.yaml
yarn.lock yarn.lock
# Folders # Folders

View File

@ -4,11 +4,7 @@
}, },
"editor.defaultFormatter": "esbenp.prettier-vscode", "editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true, "editor.formatOnSave": true,
"tailwindCSS.experimental.classRegex": [ "tailwindCSS.experimental.classRegex": [["[\"'`]([^\"'`]*).*?[\"'`]"]],
[
"[\"'`]([^\"'`]*).*?[\"'`]"
]
],
"[svelte]": { "[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode" "editor.defaultFormatter": "svelte.svelte-vscode"
} }

View File

@ -1,23 +1,27 @@
<div align="center"> <div align="center">
<a href="https://svgl.vercel.app"> <a href="https://svgl.app">
<img src="static/images/screenshot.png"> <img src="static/images/readme.png">
</a> </a>
<p></p> <p></p>
</div> </div>
<div align="center"> <div align="center">
<a href="https://svgl.vercel.app/" target="_blank"> <a href="https://svgl.app" target="_blank">
Discover Discover
</a> </a>
<span>&nbsp;&nbsp;</span> <span>&nbsp;&nbsp;</span>
<a href="#-getting-started"> <a href="#-getting-started">
Submit logo Submit logo
</a> </a>
<span>&nbsp;&nbsp;</span> <span>&nbsp;&nbsp;</span>
<a href="#%EF%B8%8F-stack"> <a href="#-terminal">
Stack Terminal
</a> </a>
<span>&nbsp;&nbsp;</span> <span>&nbsp;&nbsp;</span>
<a href="https://twitter.com/pheralb_">
Contact
</a>
<span>&nbsp;&nbsp;</span>
<a href="#%EF%B8%8F-contributing"> <a href="#%EF%B8%8F-contributing">
Contributing Contributing
</a> </a>
@ -41,10 +45,15 @@
- [**Sveltekit**](https://kit.svelte.dev/) - Web development, streamlined. - [**Sveltekit**](https://kit.svelte.dev/) - Web development, streamlined.
- [**Typescript**](https://www.typescriptlang.org/) - JavaScript with syntax for types. - [**Typescript**](https://www.typescriptlang.org/) - JavaScript with syntax for types.
- [**mdsvex**](https://mdsvex.com/) - Markdown for Svelte apps.
- [**Shiki**](https://github.com/shikijs/shiki) - A beautiful Syntax Highlighter.
- [**Tailwindcss**](https://tailwindcss.com/) - A utility-first CSS framework for rapidly building custom designs. - [**Tailwindcss**](https://tailwindcss.com/) - A utility-first CSS framework for rapidly building custom designs.
- [**bits-ui**](https://www.bits-ui.com) - A collection of headless components for Svelte.
- [**clsx**](https://github.com/lukeed/clsx) + [**tailwind-merge**](https://github.com/dcastil/tailwind-merge) inspired by [shadcn/ui](https://ui.shadcn.com) - A tiny utility for constructing `className` strings conditionally.
- [**Prettier**](https://prettier.io/) + [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) - An opinionated code formatter. - [**Prettier**](https://prettier.io/) + [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) - An opinionated code formatter.
- [**phosphor-svelte**](https://github.com/haruaki07/phosphor-svelte) - A clean and friendly icon family for Svelte. - [**Lucide Icons**](https://lucide.dev/) + [**phosphor-svelte**](https://github.com/haruaki07/phosphor-svelte) - A clean and friendly icons libraries.
- [**svelte-sonner**](https://github.com/wobsoriano/svelte-sonner) - An opinionated toast component for Svelte. - [**svelte-sonner**](https://github.com/wobsoriano/svelte-sonner) - An opinionated toast component for Svelte.
- [**@upstash/redis** + **@upstash/ratelimit**](https://upstash.com/) - Serverless Redis for developers.
- [**Vitest**](https://vitest.dev/) - Blazing Fast Unit Test Framework. - [**Vitest**](https://vitest.dev/) - Blazing Fast Unit Test Framework.
## 🚀 Getting Started ## 🚀 Getting Started
@ -54,29 +63,28 @@ You will need:
- [Node.js 16+ (recommended 18 LTS)](https://nodejs.org/en/). - [Node.js 16+ (recommended 18 LTS)](https://nodejs.org/en/).
- [Git](https://git-scm.com/). - [Git](https://git-scm.com/).
1. Clone or [fork](https://github.com/pheralb/svgl/fork) this repository: 1. [Fork](https://github.com/pheralb/svgl/fork) this repository and clone it locally:
```bash ```bash
git clone git@github.com:pheralb/svgl.git git clone git@github.com:your_username/svgl.git
``` ```
2. Install dependencies with your favorite package manager: 2. Install dependencies:
```bash ```bash
# with npm: # Install pnpm globally if you don't have it:
npm install npm install -g pnpm
# with pnpm: # and install dependencies:
pnpm install pnpm install
# with ultra:
ultra install
# with yarn:
yarn install
``` ```
3. Go to the [**`static/library`**](https://github.com/pheralb/svgl/blob/main/static/library) folder and add your `.svg` logo. Remember to optimize SVG for web use, you can use [SVGOMG](https://jakearchibald.github.io/svgomg/). 3. Go to the [**`static/library`**](https://github.com/pheralb/svgl/blob/main/static/library) folder and add your `.svg` logo.
> [!WARNING]
>
> - Remember to optimize SVG for web, you can use [SVGOMG](https://jakearchibald.github.io/svgomg/).
> - The size limit for each .svg is **25kb**.
4. Go to the [**`src/data/svgs.ts`**](https://github.com/pheralb/svgl/blob/main/src/data/svgs.ts) and add the information about your logo, following the structure: 4. Go to the [**`src/data/svgs.ts`**](https://github.com/pheralb/svgl/blob/main/src/data/svgs.ts) and add the information about your logo, following the structure:
@ -103,23 +111,36 @@ or to support a different logo for light and dark themes:
}, },
``` ```
> [!NOTE]
> The list of categories is here: [`src/types/categories.ts`](https://github.com/pheralb/svgl/blob/main/src/types/categories.ts). You can add a new category if you need it.
And create a pull request with your logo 🚀. And create a pull request with your logo 🚀.
## 🖥️ Terminal 5. (Optional) If you want to run the API locally, you will need to create a `.env` file in the root of the project with the following variables:
SVG files can also be accessed directly from the terminal using `svgls` CLI.
- [Create a Upstash account](https://console.upstash.com/).
```bash
SVGL_API_REQUESTS = 1
UPSTASH_REDIS_URL = ""
UPSTASH_REDIS_TOKEN = ""
```
## 💻 Terminal
SVG files can also be accessed directly from the terminal using [`svgls`](https://www.npmjs.com/package/svgls) CLI.
#### Quick start #### Quick start
If you are using yarn or npm, run this command: If you are using yarn or npm, run this command:
```base
```bash
npx svgls add npx svgls add
``` # or
Or if you are using pnpm, run this command:
```base
pnpm dlx svgls add pnpm dlx svgls add
``` ```
For more details on installing and using svgls CLI, check out the GitHub repository: For more details, check out the [GitHub repository](https://github.com/sujjeee/svgls) created by [sujjeee](https://twitter.com/sujjeeee).
https://github.com/sujjeee/svgls
## ✌️ Contributing ## ✌️ Contributing

70
check-size/index.js Normal file
View File

@ -0,0 +1,70 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const { readdir, stat } = require('fs').promises;
const { join } = require('path');
// For GitHub Actions:
const core = require('@actions/core');
// 🔎 Settings:
const dir = '../static/library';
const sizeLimit = 25000; // 20kb;
function convertBytes(bytes, format = 'KB') {
if (format === 'KB') {
return (bytes / 1024).toFixed(2) + ' KB';
} else if (format === 'MB') {
return (bytes / (1024 * 1024)).toFixed(2) + ' MB';
} else {
return 'Invalid format. Use "KB" or "MB".';
}
}
async function checkSize() {
const files = await readdir(dir);
let maxSize = 0;
let maxFiles = [];
let message = '';
try {
for (const file of files) {
const filePath = join(dir, file);
const stats = await stat(filePath);
if (stats.size >= sizeLimit) {
maxFiles.push({
filename: file,
size: stats.size
});
if (stats.size > maxSize) {
maxSize = stats.size;
}
}
}
if (maxFiles.length === 0) {
message = `- ✅ All files are smaller than ${convertBytes(sizeLimit)}`;
core.setOutput('message', message);
} else {
message = `- ❌ There are files bigger than ${convertBytes(sizeLimit)}.`;
throw new Error(message);
}
} catch (err) {
core.setFailed(message);
} finally {
if (maxFiles.length > 0) {
console.log('🔎 Files found:');
maxFiles.forEach((file) => {
console.log(`- 📄 ${file.filename} - ${convertBytes(file.size, 'KB')}`);
});
}
console.log('⚙️ Settings:');
console.log(`- 📁 Directory: ${dir}`);
console.log(`- 🧱 Size limit: ${convertBytes(sizeLimit)} bytes`);
if (maxSize > 0) {
console.log(`- 🔔 Max size found: ${convertBytes(maxSize, 'KB')}`);
}
}
}
// Run the function
checkSize();

21
check-size/package.json Normal file
View File

@ -0,0 +1,21 @@
{
"name": "@svgl/check-size",
"version": "1.0.0",
"description": "Limit the size of your SVG files",
"main": "index.js",
"author": "@pheralb_",
"license": "ISC",
"keywords": [
"svg",
"size",
"limit",
"check"
],
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@actions/core": "1.10.1",
"@actions/github": "6.0.0"
}
}

166
check-size/pnpm-lock.yaml Normal file
View File

@ -0,0 +1,166 @@
lockfileVersion: '6.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
dependencies:
'@actions/core':
specifier: 1.10.1
version: 1.10.1
'@actions/github':
specifier: 6.0.0
version: 6.0.0
packages:
/@actions/core@1.10.1:
resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==}
dependencies:
'@actions/http-client': 2.2.0
uuid: 8.3.2
dev: false
/@actions/github@6.0.0:
resolution: {integrity: sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==}
dependencies:
'@actions/http-client': 2.2.0
'@octokit/core': 5.0.2
'@octokit/plugin-paginate-rest': 9.1.5(@octokit/core@5.0.2)
'@octokit/plugin-rest-endpoint-methods': 10.2.0(@octokit/core@5.0.2)
dev: false
/@actions/http-client@2.2.0:
resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==}
dependencies:
tunnel: 0.0.6
undici: 5.28.2
dev: false
/@fastify/busboy@2.1.0:
resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==}
engines: {node: '>=14'}
dev: false
/@octokit/auth-token@4.0.0:
resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
engines: {node: '>= 18'}
dev: false
/@octokit/core@5.0.2:
resolution: {integrity: sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==}
engines: {node: '>= 18'}
dependencies:
'@octokit/auth-token': 4.0.0
'@octokit/graphql': 7.0.2
'@octokit/request': 8.1.6
'@octokit/request-error': 5.0.1
'@octokit/types': 12.4.0
before-after-hook: 2.2.3
universal-user-agent: 6.0.1
dev: false
/@octokit/endpoint@9.0.4:
resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==}
engines: {node: '>= 18'}
dependencies:
'@octokit/types': 12.4.0
universal-user-agent: 6.0.1
dev: false
/@octokit/graphql@7.0.2:
resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==}
engines: {node: '>= 18'}
dependencies:
'@octokit/request': 8.1.6
'@octokit/types': 12.4.0
universal-user-agent: 6.0.1
dev: false
/@octokit/openapi-types@19.1.0:
resolution: {integrity: sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==}
dev: false
/@octokit/plugin-paginate-rest@9.1.5(@octokit/core@5.0.2):
resolution: {integrity: sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=5'
dependencies:
'@octokit/core': 5.0.2
'@octokit/types': 12.4.0
dev: false
/@octokit/plugin-rest-endpoint-methods@10.2.0(@octokit/core@5.0.2):
resolution: {integrity: sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==}
engines: {node: '>= 18'}
peerDependencies:
'@octokit/core': '>=5'
dependencies:
'@octokit/core': 5.0.2
'@octokit/types': 12.4.0
dev: false
/@octokit/request-error@5.0.1:
resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==}
engines: {node: '>= 18'}
dependencies:
'@octokit/types': 12.4.0
deprecation: 2.3.1
once: 1.4.0
dev: false
/@octokit/request@8.1.6:
resolution: {integrity: sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==}
engines: {node: '>= 18'}
dependencies:
'@octokit/endpoint': 9.0.4
'@octokit/request-error': 5.0.1
'@octokit/types': 12.4.0
universal-user-agent: 6.0.1
dev: false
/@octokit/types@12.4.0:
resolution: {integrity: sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==}
dependencies:
'@octokit/openapi-types': 19.1.0
dev: false
/before-after-hook@2.2.3:
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
dev: false
/deprecation@2.3.1:
resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
dev: false
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: false
/tunnel@0.0.6:
resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==}
engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'}
dev: false
/undici@5.28.2:
resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==}
engines: {node: '>=14.0'}
dependencies:
'@fastify/busboy': 2.1.0
dev: false
/universal-user-agent@6.0.1:
resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
dev: false
/uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
dev: false
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: false

View File

@ -1,7 +1,7 @@
{ {
"name": "svgl", "name": "svgl",
"author": "@pheralb_", "author": "@pheralb_",
"version": "3.2.2", "version": "4.0.0",
"description": "A beautiful library with SVG logos.", "description": "A beautiful library with SVG logos.",
"private": true, "private": true,
"license": "MIT", "license": "MIT",
@ -19,35 +19,47 @@
"preview": "vite preview", "preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"check:size": "cd ./check-size && npm run start",
"test": "vitest run", "test": "vitest run",
"lint": "prettier --plugin-search-dir . --check . && eslint .", "lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write ." "format": "prettier --plugin-search-dir . --write ."
}, },
"dependencies": { "dependencies": {
"@upstash/ratelimit": "1.0.0",
"@upstash/redis": "1.25.2",
"bits-ui": "0.11.8",
"clsx": "2.0.0",
"downloadjs": "1.4.7", "downloadjs": "1.4.7",
"svelte-sonner": "0.3.0" "jszip": "3.10.1",
"lucide-svelte": "0.298.0",
"shiki": "0.14.7",
"svelte-sonner": "0.3.6",
"tailwind-merge": "2.1.0"
}, },
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-auto": "2.1.0", "@sveltejs/adapter-auto": "3.0.0",
"@sveltejs/kit": "1.27.1", "@sveltejs/kit": "2.0.0",
"@types/downloadjs": "1.4.5", "@sveltejs/vite-plugin-svelte": "3.0.1",
"@typescript-eslint/eslint-plugin": "6.9.0", "@tailwindcss/typography": "0.5.10",
"@typescript-eslint/parser": "6.9.0", "@types/downloadjs": "1.4.6",
"@typescript-eslint/eslint-plugin": "6.14.0",
"@typescript-eslint/parser": "6.14.0",
"autoprefixer": "10.4.16", "autoprefixer": "10.4.16",
"eslint": "8.52.0", "eslint": "8.56.0",
"eslint-config-prettier": "9.0.0", "eslint-config-prettier": "9.1.0",
"eslint-plugin-svelte": "2.34.0", "eslint-plugin-svelte": "2.35.1",
"mdsvex": "0.11.0",
"phosphor-svelte": "1.3.0", "phosphor-svelte": "1.3.0",
"postcss": "8.4.31", "postcss": "8.4.32",
"prettier": "3.0.3", "prettier": "3.1.1",
"prettier-plugin-svelte": "3.0.3", "prettier-plugin-svelte": "3.1.2",
"prettier-plugin-tailwindcss": "0.5.6", "prettier-plugin-tailwindcss": "0.5.9",
"svelte": "4.2.2", "svelte": "4.2.8",
"svelte-check": "3.5.2", "svelte-check": "3.6.2",
"tailwindcss": "3.3.5", "tailwindcss": "3.3.6",
"tslib": "2.6.2", "tslib": "2.6.2",
"typescript": "5.2.2", "typescript": "5.3.3",
"vite": "4.5.0", "vite": "5.0.10",
"vitest": "0.34.6" "vitest": "1.0.4"
} }
} }

3111
pnpm-lock.yaml Normal file
View File

@ -0,0 +1,3111 @@
lockfileVersion: '6.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
dependencies:
'@upstash/ratelimit':
specifier: 1.0.0
version: 1.0.0
'@upstash/redis':
specifier: 1.25.2
version: 1.25.2
bits-ui:
specifier: 0.11.8
version: 0.11.8(svelte@4.2.8)
clsx:
specifier: 2.0.0
version: 2.0.0
downloadjs:
specifier: 1.4.7
version: 1.4.7
jszip:
specifier: 3.10.1
version: 3.10.1
lucide-svelte:
specifier: 0.298.0
version: 0.298.0(svelte@4.2.8)
shiki:
specifier: 0.14.7
version: 0.14.7
svelte-sonner:
specifier: 0.3.6
version: 0.3.6(svelte@4.2.8)
tailwind-merge:
specifier: 2.1.0
version: 2.1.0
devDependencies:
'@sveltejs/adapter-auto':
specifier: 3.0.0
version: 3.0.0(@sveltejs/kit@2.0.0)
'@sveltejs/kit':
specifier: 2.0.0
version: 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10)
'@sveltejs/vite-plugin-svelte':
specifier: 3.0.1
version: 3.0.1(svelte@4.2.8)(vite@5.0.10)
'@tailwindcss/typography':
specifier: 0.5.10
version: 0.5.10(tailwindcss@3.3.6)
'@types/downloadjs':
specifier: 1.4.6
version: 1.4.6
'@typescript-eslint/eslint-plugin':
specifier: 6.14.0
version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: 6.14.0
version: 6.14.0(eslint@8.56.0)(typescript@5.3.3)
autoprefixer:
specifier: 10.4.16
version: 10.4.16(postcss@8.4.32)
eslint:
specifier: 8.56.0
version: 8.56.0
eslint-config-prettier:
specifier: 9.1.0
version: 9.1.0(eslint@8.56.0)
eslint-plugin-svelte:
specifier: 2.35.1
version: 2.35.1(eslint@8.56.0)(svelte@4.2.8)
mdsvex:
specifier: 0.11.0
version: 0.11.0(svelte@4.2.8)
phosphor-svelte:
specifier: 1.3.0
version: 1.3.0(svelte@4.2.8)
postcss:
specifier: 8.4.32
version: 8.4.32
prettier:
specifier: 3.1.1
version: 3.1.1
prettier-plugin-svelte:
specifier: 3.1.2
version: 3.1.2(prettier@3.1.1)(svelte@4.2.8)
prettier-plugin-tailwindcss:
specifier: 0.5.9
version: 0.5.9(prettier-plugin-svelte@3.1.2)(prettier@3.1.1)
svelte:
specifier: 4.2.8
version: 4.2.8
svelte-check:
specifier: 3.6.2
version: 3.6.2(postcss@8.4.32)(svelte@4.2.8)
tailwindcss:
specifier: 3.3.6
version: 3.3.6
tslib:
specifier: 2.6.2
version: 2.6.2
typescript:
specifier: 5.3.3
version: 5.3.3
vite:
specifier: 5.0.10
version: 5.0.10
vitest:
specifier: 1.0.4
version: 1.0.4
packages:
/@aashutoshrathi/word-wrap@1.2.6:
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
dev: true
/@alloc/quick-lru@5.2.0:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
dev: true
/@ampproject/remapping@2.2.1:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.20
/@babel/runtime@7.23.6:
resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
dev: false
/@esbuild/android-arm64@0.19.9:
resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-arm@0.19.9:
resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-x64@0.19.9:
resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-arm64@0.19.9:
resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-x64@0.19.9:
resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-arm64@0.19.9:
resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-x64@0.19.9:
resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm64@0.19.9:
resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm@0.19.9:
resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ia32@0.19.9:
resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-loong64@0.19.9:
resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-mips64el@0.19.9:
resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ppc64@0.19.9:
resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-riscv64@0.19.9:
resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-s390x@0.19.9:
resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-x64@0.19.9:
resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/netbsd-x64@0.19.9:
resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/openbsd-x64@0.19.9:
resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/sunos-x64@0.19.9:
resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-arm64@0.19.9:
resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-ia32@0.19.9:
resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-x64@0.19.9:
resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.56.0
eslint-visitor-keys: 3.4.3
dev: true
/@eslint-community/regexpp@4.10.0:
resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
/@eslint/eslintrc@2.1.4:
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.0
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
/@eslint/js@8.56.0:
resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@floating-ui/core@1.5.2:
resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==}
dependencies:
'@floating-ui/utils': 0.1.6
dev: false
/@floating-ui/dom@1.5.3:
resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
dependencies:
'@floating-ui/core': 1.5.2
'@floating-ui/utils': 0.1.6
dev: false
/@floating-ui/utils@0.1.6:
resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
dev: false
/@humanwhocodes/config-array@0.11.13:
resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.1
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
dev: true
/@humanwhocodes/module-importer@1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
dev: true
/@humanwhocodes/object-schema@2.0.1:
resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==}
dev: true
/@internationalized/date@3.5.0:
resolution: {integrity: sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==}
dependencies:
'@swc/helpers': 0.5.3
dev: false
/@jest/schemas@29.6.3:
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@sinclair/typebox': 0.27.8
dev: true
/@jridgewell/gen-mapping@0.3.3:
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.20
/@jridgewell/resolve-uri@3.1.1:
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
engines: {node: '>=6.0.0'}
/@jridgewell/set-array@1.1.2:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
/@jridgewell/trace-mapping@0.3.20:
resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
/@melt-ui/svelte@0.65.2(svelte@4.2.8):
resolution: {integrity: sha512-BpsSl9Bjp1++8U3+LaDOFUoX/PFQ9N7QWFhlFdUEZduhrbVyU70v9A459SKrQ+esFSjvh1AvqJYkMAUJXJlAmQ==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
'@floating-ui/core': 1.5.2
'@floating-ui/dom': 1.5.3
'@internationalized/date': 3.5.0
dequal: 2.0.3
focus-trap: 7.5.4
nanoid: 4.0.2
svelte: 4.2.8
dev: false
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
dev: true
/@nodelib/fs.stat@2.0.5:
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
dev: true
/@nodelib/fs.walk@1.2.8:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
dev: true
/@polka/url@1.0.0-next.24:
resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==}
dev: true
/@rollup/rollup-android-arm-eabi@4.8.0:
resolution: {integrity: sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-android-arm64@4.8.0:
resolution: {integrity: sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-darwin-arm64@4.8.0:
resolution: {integrity: sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-darwin-x64@4.8.0:
resolution: {integrity: sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-linux-arm-gnueabihf@4.8.0:
resolution: {integrity: sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-linux-arm64-gnu@4.8.0:
resolution: {integrity: sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-linux-arm64-musl@4.8.0:
resolution: {integrity: sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-linux-riscv64-gnu@4.8.0:
resolution: {integrity: sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-linux-x64-gnu@4.8.0:
resolution: {integrity: sha512-PmvAj8k6EuWiyLbkNpd6BLv5XeYFpqWuRvRNRl80xVfpGXK/z6KYXmAgbI4ogz7uFiJxCnYcqyvZVD0dgFog7Q==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-linux-x64-musl@4.8.0:
resolution: {integrity: sha512-mdxnlW2QUzXwY+95TuxZ+CurrhgrPAMveDWI97EQlA9bfhR8tw3Pt7SUlc/eSlCNxlWktpmT//EAA8UfCHOyXg==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-win32-arm64-msvc@4.8.0:
resolution: {integrity: sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-win32-ia32-msvc@4.8.0:
resolution: {integrity: sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@rollup/rollup-win32-x64-msvc@4.8.0:
resolution: {integrity: sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@sinclair/typebox@0.27.8:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
/@sveltejs/adapter-auto@3.0.0(@sveltejs/kit@2.0.0):
resolution: {integrity: sha512-UNWSs/rOReBRfI/xFwSO2WYF1a7PT74SrWOHJmSNLY3Lq+zbH0uuvnlP+TmrTUBvOTkou3WJDjL6lK3n6aOUgQ==}
peerDependencies:
'@sveltejs/kit': ^2.0.0
dependencies:
'@sveltejs/kit': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10)
import-meta-resolve: 4.0.0
dev: true
/@sveltejs/kit@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10):
resolution: {integrity: sha512-/GFxvit+q7PztRbgGTFXhVB6jvb0fZSeWuz5f4siQ2r/5BVhxYh7++Bw3/ZUjiOuyoZFiNBmOPcRNQbkzEce0g==}
engines: {node: '>=18.13'}
hasBin: true
requiresBuild: true
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^3.0.0
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.3
dependencies:
'@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10)
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 4.3.2
esm-env: 1.0.0
kleur: 4.1.5
magic-string: 0.30.5
mrmime: 1.0.1
sade: 1.8.1
set-cookie-parser: 2.6.0
sirv: 2.0.3
svelte: 4.2.8
tiny-glob: 0.2.9
vite: 5.0.10
dev: true
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10):
resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^3.0.0
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
dependencies:
'@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10)
debug: 4.3.4
svelte: 4.2.8
vite: 5.0.10
transitivePeerDependencies:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.10):
resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
svelte: ^4.0.0 || ^5.0.0-next.0
vite: ^5.0.0
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.5
svelte: 4.2.8
svelte-hmr: 0.15.3(svelte@4.2.8)
vite: 5.0.10
vitefu: 0.2.5(vite@5.0.10)
transitivePeerDependencies:
- supports-color
dev: true
/@swc/helpers@0.5.3:
resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==}
dependencies:
tslib: 2.6.2
dev: false
/@tailwindcss/typography@0.5.10(tailwindcss@3.3.6):
resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.3.6
dev: true
/@types/cookie@0.6.0:
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
dev: true
/@types/downloadjs@1.4.6:
resolution: {integrity: sha512-mp3w70vsaiLRT9ix92fmI9Ob2yJAPZm6tShJtofo2uHbN11G2i6a0ApIEjBl/kv3e9V7Pv7jMjk1bUwYWvMHvA==}
dev: true
/@types/estree@1.0.5:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
/@types/pug@2.0.10:
resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==}
dev: true
/@types/semver@7.5.6:
resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
dev: true
/@types/unist@2.0.10:
resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
dev: true
/@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
eslint: ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 6.14.0
'@typescript-eslint/type-utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.14.0
debug: 4.3.4
eslint: 8.56.0
graphemer: 1.4.0
ignore: 5.3.0
natural-compare: 1.4.0
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 6.14.0
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.14.0
debug: 4.3.4
eslint: 8.56.0
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.14.0:
resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/visitor-keys': 6.14.0
dev: true
/@typescript-eslint/type-utils@6.14.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
'@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3)
debug: 4.3.4
eslint: 8.56.0
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/types@6.14.0:
resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
/@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3):
resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/visitor-keys': 6.14.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils@6.14.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
'@types/json-schema': 7.0.15
'@types/semver': 7.5.6
'@typescript-eslint/scope-manager': 6.14.0
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
eslint: 8.56.0
semver: 7.5.4
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/visitor-keys@6.14.0:
resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.14.0
eslint-visitor-keys: 3.4.3
dev: true
/@ungap/structured-clone@1.2.0:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
/@upstash/core-analytics@0.0.6:
resolution: {integrity: sha512-cpPSR0XJAJs4Ddz9nq3tINlPS5aLfWVCqhhtHnXt4p7qr5+/Znlt1Es736poB/9rnl1hAHrOsOvVj46NEXcVqA==}
engines: {node: '>=16.0.0'}
dependencies:
'@upstash/redis': 1.25.2
dev: false
/@upstash/ratelimit@1.0.0:
resolution: {integrity: sha512-IUlc+UKuHJQqXGQi7E3UKV0CKfRZ0g6qeNnbSve940k3xLoM+X3H45MrSwDaH7meMWemztLs0Q4yjkd3ItddCw==}
dependencies:
'@upstash/core-analytics': 0.0.6
dev: false
/@upstash/redis@1.25.2:
resolution: {integrity: sha512-iI3jgvmDIbe4Px0PskB8lrn1NXz7ZQyGpW9Ehmonk6SEFqhqssqIB04VmlNh8zZUXwzy6G9DaIa5gIUM6B7DwA==}
dependencies:
crypto-js: 4.2.0
dev: false
/@vitest/expect@1.0.4:
resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==}
dependencies:
'@vitest/spy': 1.0.4
'@vitest/utils': 1.0.4
chai: 4.3.10
dev: true
/@vitest/runner@1.0.4:
resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==}
dependencies:
'@vitest/utils': 1.0.4
p-limit: 5.0.0
pathe: 1.1.1
dev: true
/@vitest/snapshot@1.0.4:
resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==}
dependencies:
magic-string: 0.30.5
pathe: 1.1.1
pretty-format: 29.7.0
dev: true
/@vitest/spy@1.0.4:
resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==}
dependencies:
tinyspy: 2.2.0
dev: true
/@vitest/utils@1.0.4:
resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==}
dependencies:
diff-sequences: 29.6.3
loupe: 2.3.7
pretty-format: 29.7.0
dev: true
/acorn-jsx@5.3.2(acorn@8.11.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.11.2
dev: true
/acorn-walk@8.3.1:
resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==}
engines: {node: '>=0.4.0'}
dev: true
/acorn@8.11.2:
resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
engines: {node: '>=0.4.0'}
hasBin: true
/ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
dev: true
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
dev: true
/ansi-sequence-parser@1.1.1:
resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==}
dev: false
/ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
dependencies:
color-convert: 2.0.1
dev: true
/ansi-styles@5.2.0:
resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
engines: {node: '>=10'}
dev: true
/any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: true
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
dev: true
/arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: true
/argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
/aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
dependencies:
dequal: 2.0.3
/array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
dev: true
/assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
dev: true
/autoprefixer@10.4.16(postcss@8.4.32):
resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
dependencies:
browserslist: 4.22.2
caniuse-lite: 1.0.30001568
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
postcss: 8.4.32
postcss-value-parser: 4.2.0
dev: true
/axobject-query@3.2.1:
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
dependencies:
dequal: 2.0.3
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: true
/bits-ui@0.11.8(svelte@4.2.8):
resolution: {integrity: sha512-T3YaT88OJguBoUU/MSncf41fiIc+5/ka8Au2LUDo0nSECex+LFY40+hKWLJc5tRT56avkyHsI7x9daA2r9eS/g==}
peerDependencies:
svelte: ^4.0.0
dependencies:
'@internationalized/date': 3.5.0
'@melt-ui/svelte': 0.65.2(svelte@4.2.8)
nanoid: 5.0.4
svelte: 4.2.8
dev: false
/brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
dev: true
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
dev: true
/browserslist@4.22.2:
resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001568
electron-to-chromium: 1.4.609
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.2)
dev: true
/buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
dev: true
/cac@6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
dev: true
/callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
dev: true
/camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
dev: true
/caniuse-lite@1.0.30001568:
resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==}
dev: true
/chai@4.3.10:
resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
engines: {node: '>=4'}
dependencies:
assertion-error: 1.1.0
check-error: 1.0.3
deep-eql: 4.1.3
get-func-name: 2.0.2
loupe: 2.3.7
pathval: 1.1.1
type-detect: 4.0.8
dev: true
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
dev: true
/check-error@1.0.3:
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
dependencies:
get-func-name: 2.0.2
dev: true
/chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
anymatch: 3.1.3
braces: 3.0.2
glob-parent: 5.1.2
is-binary-path: 2.1.0
is-glob: 4.0.3
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.3
dev: true
/clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
engines: {node: '>=6'}
dev: false
/code-red@1.0.4:
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
'@types/estree': 1.0.5
acorn: 8.11.2
estree-walker: 3.0.3
periscopic: 3.1.0
/color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
dependencies:
color-name: 1.1.4
dev: true
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
/commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
dev: true
/concat-map@0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: true
/cookie@0.6.0:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
dev: true
/core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: false
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
dev: true
/crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
dev: false
/css-tree@2.3.1:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
dependencies:
mdn-data: 2.0.30
source-map-js: 1.0.2
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
dev: true
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
dev: true
/deep-eql@4.1.3:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
engines: {node: '>=6'}
dependencies:
type-detect: 4.0.8
dev: true
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
/deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
dev: true
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
/detect-indent@6.1.0:
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
engines: {node: '>=8'}
dev: true
/devalue@4.3.2:
resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
dev: true
/didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dev: true
/diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true
/dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
dependencies:
path-type: 4.0.0
dev: true
/dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: true
/doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
dependencies:
esutils: 2.0.3
dev: true
/downloadjs@1.4.7:
resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==}
dev: false
/electron-to-chromium@1.4.609:
resolution: {integrity: sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==}
dev: true
/es6-promise@3.3.1:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true
/esbuild@0.19.9:
resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/android-arm': 0.19.9
'@esbuild/android-arm64': 0.19.9
'@esbuild/android-x64': 0.19.9
'@esbuild/darwin-arm64': 0.19.9
'@esbuild/darwin-x64': 0.19.9
'@esbuild/freebsd-arm64': 0.19.9
'@esbuild/freebsd-x64': 0.19.9
'@esbuild/linux-arm': 0.19.9
'@esbuild/linux-arm64': 0.19.9
'@esbuild/linux-ia32': 0.19.9
'@esbuild/linux-loong64': 0.19.9
'@esbuild/linux-mips64el': 0.19.9
'@esbuild/linux-ppc64': 0.19.9
'@esbuild/linux-riscv64': 0.19.9
'@esbuild/linux-s390x': 0.19.9
'@esbuild/linux-x64': 0.19.9
'@esbuild/netbsd-x64': 0.19.9
'@esbuild/openbsd-x64': 0.19.9
'@esbuild/sunos-x64': 0.19.9
'@esbuild/win32-arm64': 0.19.9
'@esbuild/win32-ia32': 0.19.9
'@esbuild/win32-x64': 0.19.9
dev: true
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
dev: true
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: true
/eslint-compat-utils@0.1.2(eslint@8.56.0):
resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==}
engines: {node: '>=12'}
peerDependencies:
eslint: '>=6.0.0'
dependencies:
eslint: 8.56.0
dev: true
/eslint-config-prettier@9.1.0(eslint@8.56.0):
resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
dependencies:
eslint: 8.56.0
dev: true
/eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.8):
resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0-0
svelte: ^3.37.0 || ^4.0.0
peerDependenciesMeta:
svelte:
optional: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
'@jridgewell/sourcemap-codec': 1.4.15
debug: 4.3.4
eslint: 8.56.0
eslint-compat-utils: 0.1.2(eslint@8.56.0)
esutils: 2.0.3
known-css-properties: 0.29.0
postcss: 8.4.32
postcss-load-config: 3.1.4(postcss@8.4.32)
postcss-safe-parser: 6.0.0(postcss@8.4.32)
postcss-selector-parser: 6.0.13
semver: 7.5.4
svelte: 4.2.8
svelte-eslint-parser: 0.33.1(svelte@4.2.8)
transitivePeerDependencies:
- supports-color
- ts-node
dev: true
/eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
dev: true
/eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint@8.56.0:
resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
'@eslint-community/regexpp': 4.10.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.56.0
'@humanwhocodes/config-array': 0.11.13
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
'@ungap/structured-clone': 1.2.0
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
globals: 13.24.0
graphemer: 1.4.0
ignore: 5.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
strip-ansi: 6.0.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
dev: true
/esm-env@1.0.0:
resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==}
dev: true
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.11.2
acorn-jsx: 5.3.2(acorn@8.11.2)
eslint-visitor-keys: 3.4.3
dev: true
/esquery@1.5.0:
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
engines: {node: '>=0.10'}
dependencies:
estraverse: 5.3.0
dev: true
/esrecurse@4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
dependencies:
estraverse: 5.3.0
dev: true
/estraverse@5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
dev: true
/estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
dependencies:
'@types/estree': 1.0.5
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
dev: true
/execa@8.0.1:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
dependencies:
cross-spawn: 7.0.3
get-stream: 8.0.1
human-signals: 5.0.0
is-stream: 3.0.0
merge-stream: 2.0.0
npm-run-path: 5.1.0
onetime: 6.0.0
signal-exit: 4.1.0
strip-final-newline: 3.0.0
dev: true
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
/fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.5
dev: true
/fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
/fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
reusify: 1.0.4
dev: true
/file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flat-cache: 3.2.0
dev: true
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: true
/find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
dev: true
/flat-cache@3.2.0:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flatted: 3.2.9
keyv: 4.5.4
rimraf: 3.0.2
dev: true
/flatted@3.2.9:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
dev: true
/focus-trap@7.5.4:
resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
dependencies:
tabbable: 6.2.0
dev: false
/fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
/fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: true
optional: true
/function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
dev: true
/get-func-name@2.0.2:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
dev: true
/get-stream@8.0.1:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
dev: true
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
dev: true
/glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
dependencies:
is-glob: 4.0.3
dev: true
/glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: true
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: true
/globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
dev: true
/globalyzer@0.1.0:
resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
dev: true
/globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
fast-glob: 3.3.2
ignore: 5.3.0
merge2: 1.4.1
slash: 3.0.0
dev: true
/globrex@0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
dev: true
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
dev: true
/hasown@2.0.0:
resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
engines: {node: '>= 0.4'}
dependencies:
function-bind: 1.1.2
dev: true
/human-signals@5.0.0:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
dev: true
/ignore@5.3.0:
resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
engines: {node: '>= 4'}
dev: true
/immediate@3.0.6:
resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
dev: false
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
dev: true
/import-meta-resolve@4.0.0:
resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==}
dev: true
/imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
dev: true
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
once: 1.4.0
wrappy: 1.0.2
dev: true
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
dependencies:
binary-extensions: 2.2.0
dev: true
/is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
dependencies:
hasown: 2.0.0
dev: true
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
dev: true
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
/is-path-inside@3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
dev: true
/is-reference@3.0.2:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
dependencies:
'@types/estree': 1.0.5
/is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: false
/isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
/jiti@1.21.0:
resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
hasBin: true
dev: true
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
dependencies:
argparse: 2.0.1
dev: true
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: true
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
/json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
/jsonc-parser@3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
/jszip@3.10.1:
resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
dependencies:
lie: 3.3.0
pako: 1.0.11
readable-stream: 2.3.8
setimmediate: 1.0.5
dev: false
/keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
json-buffer: 3.0.1
dev: true
/kleur@4.1.5:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
dev: true
/known-css-properties@0.29.0:
resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==}
dev: true
/levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
dev: true
/lie@3.3.0:
resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
dependencies:
immediate: 3.0.6
dev: false
/lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
dev: true
/lilconfig@3.0.0:
resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
engines: {node: '>=14'}
dev: true
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: true
/local-pkg@0.5.0:
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
engines: {node: '>=14'}
dependencies:
mlly: 1.4.2
pkg-types: 1.0.3
dev: true
/locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
/locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
dependencies:
p-locate: 5.0.0
dev: true
/lodash.castarray@4.4.0:
resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
dev: true
/lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
dev: true
/lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: true
/loupe@2.3.7:
resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
dependencies:
get-func-name: 2.0.2
dev: true
/lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
dev: true
/lucide-svelte@0.298.0(svelte@4.2.8):
resolution: {integrity: sha512-7xYNSMY1z1QMjLe8GWToFtFh0lvTsrxdgEAXMite/Urn9tPD16Xk3597ibpgt9Ff7IBb/ArMc3y3ZKofZhs8fQ==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
svelte: 4.2.8
dev: false
/magic-string@0.27.0:
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
/magic-string@0.30.5:
resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
/mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
/mdsvex@0.11.0(svelte@4.2.8):
resolution: {integrity: sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
'@types/unist': 2.0.10
prism-svelte: 0.4.7
prismjs: 1.29.0
svelte: 4.2.8
vfile-message: 2.0.4
dev: true
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
dev: true
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
dependencies:
braces: 3.0.2
picomatch: 2.3.1
dev: true
/mimic-fn@4.0.0:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
dev: true
/min-indent@1.0.1:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
dev: true
/minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
dependencies:
brace-expansion: 1.1.11
dev: true
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
/mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
dependencies:
minimist: 1.2.8
dev: true
/mlly@1.4.2:
resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
dependencies:
acorn: 8.11.2
pathe: 1.1.1
pkg-types: 1.0.3
ufo: 1.3.2
dev: true
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
dev: true
/mrmime@1.0.1:
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
engines: {node: '>=10'}
dev: true
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: true
/mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
dev: true
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
/nanoid@4.0.2:
resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==}
engines: {node: ^14 || ^16 || >=18}
hasBin: true
dev: false
/nanoid@5.0.4:
resolution: {integrity: sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==}
engines: {node: ^18 || >=20}
hasBin: true
dev: false
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
/node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
dev: true
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
dev: true
/normalize-range@0.1.2:
resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
engines: {node: '>=0.10.0'}
dev: true
/npm-run-path@5.1.0:
resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
path-key: 4.0.0
dev: true
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
dev: true
/object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
dev: true
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
/onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
dependencies:
mimic-fn: 4.0.0
dev: true
/optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
dependencies:
'@aashutoshrathi/word-wrap': 1.2.6
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
dev: true
/p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
dependencies:
yocto-queue: 0.1.0
dev: true
/p-limit@5.0.0:
resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
engines: {node: '>=18'}
dependencies:
yocto-queue: 1.0.0
dev: true
/p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
dependencies:
p-limit: 3.1.0
dev: true
/pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
dev: false
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
dependencies:
callsites: 3.1.0
dev: true
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
dev: true
/path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
dev: true
/path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
dev: true
/path-key@4.0.0:
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
engines: {node: '>=12'}
dev: true
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
/path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
dev: true
/pathe@1.1.1:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
dev: true
/pathval@1.1.1:
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
dev: true
/periscopic@3.1.0:
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
dependencies:
'@types/estree': 1.0.5
estree-walker: 3.0.3
is-reference: 3.0.2
/phosphor-svelte@1.3.0(svelte@4.2.8):
resolution: {integrity: sha512-aW6/O2+j3TCA8oku8CwkMUvy00OHUa5CqpeqBr/Y9nT8wT/eTKZIBGt2G+JJddEHs0KkSBr7oIYdJUsUJY80fQ==}
peerDependencies:
svelte: '>=3'
dependencies:
svelte: 4.2.8
dev: true
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true
/picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: true
/pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
dev: true
/pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
dev: true
/pkg-types@1.0.3:
resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
dependencies:
jsonc-parser: 3.2.0
mlly: 1.4.2
pathe: 1.1.1
dev: true
/postcss-import@15.1.0(postcss@8.4.32):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.8
dev: true
/postcss-js@4.0.1(postcss@8.4.32):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.32
dev: true
/postcss-load-config@3.1.4(postcss@8.4.32):
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
peerDependencies:
postcss: '>=8.0.9'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
optional: true
ts-node:
optional: true
dependencies:
lilconfig: 2.1.0
postcss: 8.4.32
yaml: 1.10.2
dev: true
/postcss-load-config@4.0.2(postcss@8.4.32):
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
postcss: '>=8.0.9'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
optional: true
ts-node:
optional: true
dependencies:
lilconfig: 3.0.0
postcss: 8.4.32
yaml: 2.3.4
dev: true
/postcss-nested@6.0.1(postcss@8.4.32):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.0.13
dev: true
/postcss-safe-parser@6.0.0(postcss@8.4.32):
resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.3.3
dependencies:
postcss: 8.4.32
dev: true
/postcss-scss@4.0.9(postcss@8.4.32):
resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.4.29
dependencies:
postcss: 8.4.32
dev: true
/postcss-selector-parser@6.0.10:
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: true
/postcss-selector-parser@6.0.13:
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
dev: true
/postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true
/postcss@8.4.32:
resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
dev: true
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
dev: true
/prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.8):
resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==}
peerDependencies:
prettier: ^3.0.0
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
dependencies:
prettier: 3.1.1
svelte: 4.2.8
dev: true
/prettier-plugin-tailwindcss@0.5.9(prettier-plugin-svelte@3.1.2)(prettier@3.1.1):
resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==}
engines: {node: '>=14.21.3'}
peerDependencies:
'@ianvs/prettier-plugin-sort-imports': '*'
'@prettier/plugin-pug': '*'
'@shopify/prettier-plugin-liquid': '*'
'@trivago/prettier-plugin-sort-imports': '*'
prettier: ^3.0
prettier-plugin-astro: '*'
prettier-plugin-css-order: '*'
prettier-plugin-import-sort: '*'
prettier-plugin-jsdoc: '*'
prettier-plugin-marko: '*'
prettier-plugin-organize-attributes: '*'
prettier-plugin-organize-imports: '*'
prettier-plugin-style-order: '*'
prettier-plugin-svelte: '*'
prettier-plugin-twig-melody: '*'
peerDependenciesMeta:
'@ianvs/prettier-plugin-sort-imports':
optional: true
'@prettier/plugin-pug':
optional: true
'@shopify/prettier-plugin-liquid':
optional: true
'@trivago/prettier-plugin-sort-imports':
optional: true
prettier-plugin-astro:
optional: true
prettier-plugin-css-order:
optional: true
prettier-plugin-import-sort:
optional: true
prettier-plugin-jsdoc:
optional: true
prettier-plugin-marko:
optional: true
prettier-plugin-organize-attributes:
optional: true
prettier-plugin-organize-imports:
optional: true
prettier-plugin-style-order:
optional: true
prettier-plugin-svelte:
optional: true
prettier-plugin-twig-melody:
optional: true
dependencies:
prettier: 3.1.1
prettier-plugin-svelte: 3.1.2(prettier@3.1.1)(svelte@4.2.8)
dev: true
/prettier@3.1.1:
resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==}
engines: {node: '>=14'}
hasBin: true
dev: true
/pretty-format@29.7.0:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/schemas': 29.6.3
ansi-styles: 5.2.0
react-is: 18.2.0
dev: true
/prism-svelte@0.4.7:
resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==}
dev: true
/prismjs@1.29.0:
resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
engines: {node: '>=6'}
dev: true
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: false
/punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
dev: true
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
/react-is@18.2.0:
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
dev: true
/read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
dependencies:
pify: 2.3.0
dev: true
/readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
dependencies:
core-util-is: 1.0.3
inherits: 2.0.4
isarray: 1.0.0
process-nextick-args: 2.0.1
safe-buffer: 5.1.2
string_decoder: 1.1.1
util-deprecate: 1.0.2
dev: false
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
dev: true
/regenerator-runtime@0.14.0:
resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
dev: false
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
dev: true
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
is-core-module: 2.13.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: true
/rimraf@2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
hasBin: true
dependencies:
glob: 7.2.3
dev: true
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
dependencies:
glob: 7.2.3
dev: true
/rollup@4.8.0:
resolution: {integrity: sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.8.0
'@rollup/rollup-android-arm64': 4.8.0
'@rollup/rollup-darwin-arm64': 4.8.0
'@rollup/rollup-darwin-x64': 4.8.0
'@rollup/rollup-linux-arm-gnueabihf': 4.8.0
'@rollup/rollup-linux-arm64-gnu': 4.8.0
'@rollup/rollup-linux-arm64-musl': 4.8.0
'@rollup/rollup-linux-riscv64-gnu': 4.8.0
'@rollup/rollup-linux-x64-gnu': 4.8.0
'@rollup/rollup-linux-x64-musl': 4.8.0
'@rollup/rollup-win32-arm64-msvc': 4.8.0
'@rollup/rollup-win32-ia32-msvc': 4.8.0
'@rollup/rollup-win32-x64-msvc': 4.8.0
fsevents: 2.3.3
dev: true
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
dev: true
/sade@1.8.1:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
dependencies:
mri: 1.2.0
dev: true
/safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: false
/sander@0.5.1:
resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==}
dependencies:
es6-promise: 3.3.1
graceful-fs: 4.2.11
mkdirp: 0.5.6
rimraf: 2.7.1
dev: true
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/set-cookie-parser@2.6.0:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
dev: true
/setimmediate@1.0.5:
resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
dev: false
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
dependencies:
shebang-regex: 3.0.0
dev: true
/shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
dev: true
/shiki@0.14.7:
resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==}
dependencies:
ansi-sequence-parser: 1.1.1
jsonc-parser: 3.2.0
vscode-oniguruma: 1.7.0
vscode-textmate: 8.0.0
dev: false
/siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
dev: true
/signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
dev: true
/sirv@2.0.3:
resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==}
engines: {node: '>= 10'}
dependencies:
'@polka/url': 1.0.0-next.24
mrmime: 1.0.1
totalist: 3.0.1
dev: true
/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
dev: true
/sorcery@0.11.0:
resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==}
hasBin: true
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
buffer-crc32: 0.2.13
minimist: 1.2.8
sander: 0.5.1
dev: true
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
/stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
dev: true
/std-env@3.6.0:
resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==}
dev: true
/string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
dependencies:
safe-buffer: 5.1.2
dev: false
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
dependencies:
ansi-regex: 5.0.1
dev: true
/strip-final-newline@3.0.0:
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
engines: {node: '>=12'}
dev: true
/strip-indent@3.0.0:
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
engines: {node: '>=8'}
dependencies:
min-indent: 1.0.1
dev: true
/strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
dev: true
/strip-literal@1.3.0:
resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==}
dependencies:
acorn: 8.11.2
dev: true
/sucrase@3.34.0:
resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
engines: {node: '>=8'}
hasBin: true
dependencies:
'@jridgewell/gen-mapping': 0.3.3
commander: 4.1.1
glob: 7.1.6
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.6
ts-interface-checker: 0.1.13
dev: true
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
dependencies:
has-flag: 4.0.0
dev: true
/supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
dev: true
/svelte-check@3.6.2(postcss@8.4.32)(svelte@4.2.8):
resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==}
hasBin: true
peerDependencies:
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
dependencies:
'@jridgewell/trace-mapping': 0.3.20
chokidar: 3.5.3
fast-glob: 3.3.2
import-fresh: 3.3.0
picocolors: 1.0.0
sade: 1.8.1
svelte: 4.2.8
svelte-preprocess: 5.1.1(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- '@babel/core'
- coffeescript
- less
- postcss
- postcss-load-config
- pug
- sass
- stylus
- sugarss
dev: true
/svelte-eslint-parser@0.33.1(svelte@4.2.8):
resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
svelte: ^3.37.0 || ^4.0.0
peerDependenciesMeta:
svelte:
optional: true
dependencies:
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
postcss: 8.4.32
postcss-scss: 4.0.9(postcss@8.4.32)
svelte: 4.2.8
dev: true
/svelte-hmr@0.15.3(svelte@4.2.8):
resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
svelte: ^3.19.0 || ^4.0.0
dependencies:
svelte: 4.2.8
dev: true
/svelte-preprocess@5.1.1(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3):
resolution: {integrity: sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==}
engines: {node: '>= 14.10.0'}
requiresBuild: true
peerDependencies:
'@babel/core': ^7.10.2
coffeescript: ^2.5.1
less: ^3.11.3 || ^4.0.0
postcss: ^7 || ^8
postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0
pug: ^3.0.0
sass: ^1.26.8
stylus: ^0.55.0
sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0'
peerDependenciesMeta:
'@babel/core':
optional: true
coffeescript:
optional: true
less:
optional: true
postcss:
optional: true
postcss-load-config:
optional: true
pug:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
typescript:
optional: true
dependencies:
'@types/pug': 2.0.10
detect-indent: 6.1.0
magic-string: 0.27.0
postcss: 8.4.32
sorcery: 0.11.0
strip-indent: 3.0.0
svelte: 4.2.8
typescript: 5.3.3
dev: true
/svelte-sonner@0.3.6(svelte@4.2.8):
resolution: {integrity: sha512-MwVhh4nxCqTBLHYamRw+q9erZC2Y4wuL8mUa7phgq/9kq9VdTr+/6S1PX1CnALJPy2rkc7TlIECYTJavUkoWlg==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
svelte: 4.2.8
dev: false
/svelte@4.2.8:
resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==}
engines: {node: '>=16'}
dependencies:
'@ampproject/remapping': 2.2.1
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.20
acorn: 8.11.2
aria-query: 5.3.0
axobject-query: 3.2.1
code-red: 1.0.4
css-tree: 2.3.1
estree-walker: 3.0.3
is-reference: 3.0.2
locate-character: 3.0.0
magic-string: 0.30.5
periscopic: 3.1.0
/tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
dev: false
/tailwind-merge@2.1.0:
resolution: {integrity: sha512-l11VvI4nSwW7MtLSLYT4ldidDEUwQAMWuSHk7l4zcXZDgnCRa0V3OdCwFfM7DCzakVXMNRwAeje9maFFXT71dQ==}
dependencies:
'@babel/runtime': 7.23.6
dev: false
/tailwindcss@3.3.6:
resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
chokidar: 3.5.3
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.0
lilconfig: 2.1.0
micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
postcss: 8.4.32
postcss-import: 15.1.0(postcss@8.4.32)
postcss-js: 4.0.1(postcss@8.4.32)
postcss-load-config: 4.0.2(postcss@8.4.32)
postcss-nested: 6.0.1(postcss@8.4.32)
postcss-selector-parser: 6.0.13
resolve: 1.22.8
sucrase: 3.34.0
transitivePeerDependencies:
- ts-node
dev: true
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
/thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
dev: true
/thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
dev: true
/tiny-glob@0.2.9:
resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
dependencies:
globalyzer: 0.1.0
globrex: 0.1.2
dev: true
/tinybench@2.5.1:
resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==}
dev: true
/tinypool@0.8.1:
resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==}
engines: {node: '>=14.0.0'}
dev: true
/tinyspy@2.2.0:
resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==}
engines: {node: '>=14.0.0'}
dev: true
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: true
/totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
dev: true
/ts-api-utils@1.0.3(typescript@5.3.3):
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
engines: {node: '>=16.13.0'}
peerDependencies:
typescript: '>=4.2.0'
dependencies:
typescript: 5.3.3
dev: true
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
dev: true
/tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
dev: true
/type-detect@4.0.8:
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
engines: {node: '>=4'}
dev: true
/type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
dev: true
/typescript@5.3.3:
resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
engines: {node: '>=14.17'}
hasBin: true
dev: true
/ufo@1.3.2:
resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
dev: true
/unist-util-stringify-position@2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
dependencies:
'@types/unist': 2.0.10
dev: true
/update-browserslist-db@1.0.13(browserslist@4.22.2):
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
browserslist: 4.22.2
escalade: 3.1.1
picocolors: 1.0.0
dev: true
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.1
dev: true
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
/vfile-message@2.0.4:
resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
dependencies:
'@types/unist': 2.0.10
unist-util-stringify-position: 2.0.3
dev: true
/vite-node@1.0.4:
resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4
pathe: 1.1.1
picocolors: 1.0.0
vite: 5.0.10
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true
/vite@5.0.10:
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || >=20.0.0
less: '*'
lightningcss: ^1.21.0
sass: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
dependencies:
esbuild: 0.19.9
postcss: 8.4.32
rollup: 4.8.0
optionalDependencies:
fsevents: 2.3.3
dev: true
/vitefu@0.2.5(vite@5.0.10):
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
peerDependenciesMeta:
vite:
optional: true
dependencies:
vite: 5.0.10
dev: true
/vitest@1.0.4:
resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
'@types/node': ^18.0.0 || >=20.0.0
'@vitest/browser': ^1.0.0
'@vitest/ui': ^1.0.0
happy-dom: '*'
jsdom: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
'@types/node':
optional: true
'@vitest/browser':
optional: true
'@vitest/ui':
optional: true
happy-dom:
optional: true
jsdom:
optional: true
dependencies:
'@vitest/expect': 1.0.4
'@vitest/runner': 1.0.4
'@vitest/snapshot': 1.0.4
'@vitest/spy': 1.0.4
'@vitest/utils': 1.0.4
acorn-walk: 8.3.1
cac: 6.7.14
chai: 4.3.10
debug: 4.3.4
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.5
pathe: 1.1.1
picocolors: 1.0.0
std-env: 3.6.0
strip-literal: 1.3.0
tinybench: 2.5.1
tinypool: 0.8.1
vite: 5.0.10
vite-node: 1.0.4
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
- lightningcss
- sass
- stylus
- sugarss
- supports-color
- terser
dev: true
/vscode-oniguruma@1.7.0:
resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
dev: false
/vscode-textmate@8.0.0:
resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
dev: false
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
dependencies:
isexe: 2.0.0
dev: true
/why-is-node-running@2.2.2:
resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
engines: {node: '>=8'}
hasBin: true
dependencies:
siginfo: 2.0.0
stackback: 0.0.2
dev: true
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
/yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
dev: true
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
dev: true
/yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
dev: true
/yocto-queue@1.0.0:
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
engines: {node: '>=12.20'}
dev: true

View File

@ -6,13 +6,13 @@
:root { :root {
--sb-track-color: rgb(229 229 229 / 0.5); --sb-track-color: rgb(229 229 229 / 0.5);
--sb-thumb-color: #d4d4d4; --sb-thumb-color: #d4d4d4;
--sb-size: 8px; --sb-size: 10px;
} }
.dark { .dark {
--sb-track-color: #171717; --sb-track-color: #171717;
--sb-thumb-color: #404040; --sb-thumb-color: #404040;
--sb-size: 8px; --sb-size: 10px;
} }
} }
@ -34,6 +34,18 @@
background: var(--sb-thumb-color); background: var(--sb-thumb-color);
} }
aside::-webkit-scrollbar {
width: var(--sb-size);
}
aside::-webkit-scrollbar-track {
background: var(--sb-track-color);
}
aside::-webkit-scrollbar-thumb {
background: var(--sb-thumb-color);
}
nav::-webkit-scrollbar { nav::-webkit-scrollbar {
width: var(--sb-size); width: var(--sb-size);
} }
@ -48,9 +60,15 @@
} }
@font-face { @font-face {
font-family: 'General-Sans'; font-family: 'InterVariable';
src: url('/fonts/GeneralSans-Variable.woff2') format('woff2'); src: url('/fonts/InterVariable.woff2') format('woff2');
font-weight: 200 700; font-weight: 100 900;
font-display: swap; font-display: swap;
font-style: normal; font-style: normal;
} }
@font-face {
font-family: 'GeistMono';
src: url('/fonts/GeistMonoVariableVF.woff2') format('woff2');
font-display: swap;
}

View File

@ -5,6 +5,7 @@
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<meta name="robots" content="index, follow" /> <meta name="robots" content="index, follow" />
<meta name="author" content="@pheralb_" /> <meta name="author" content="@pheralb_" />
<meta name="description" content="A beautiful library with SVG logos" />
<!-- Favicon --> <!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="%sveltekit.assets%/images/logo.svg" /> <link rel="icon" type="image/svg+xml" href="%sveltekit.assets%/images/logo.svg" />
@ -23,13 +24,20 @@
<meta name="twitter:creator" content="@pheralb_" /> <meta name="twitter:creator" content="@pheralb_" />
<meta name="twitter:image" content="https://svgl.vercel.app/images/screenshot.png" /> <meta name="twitter:image" content="https://svgl.vercel.app/images/screenshot.png" />
<!-- Analytics -->
<script
async
src="https://umami.pheralb.dev/script.js"
data-website-id="50de464e-cf2c-4b76-b5e8-21c9259bc7be"
></script>
<!-- Title --> <!-- Title -->
<title>A beautiful library with SVG logos - Svgl</title> <title>A beautiful library with SVG logos - Svgl</title>
%sveltekit.head% %sveltekit.head%
</head> </head>
<body <body
data-sveltekit-preload-data="hover" data-sveltekit-preload-data="hover"
class="min-h-screen bg-light font-sans text-mini dark:bg-dark dark:text-white antialiased" class="min-h-screen bg-white font-sans text-mini dark:bg-dark dark:text-white antialiased selection:bg-neutral-200 dark:selection:bg-neutral-700"
> >
<div>%sveltekit.body%</div> <div>%sveltekit.body%</div>
</body> </body>

View File

@ -42,7 +42,7 @@
on:blur={handleBlur} on:blur={handleBlur}
on:mouseenter={handleMouseEnter} on:mouseenter={handleMouseEnter}
on:mouseleave={handleMouseLeave} on:mouseleave={handleMouseLeave}
class="relative flex items-center justify-center overflow-hidden rounded-md border border-neutral-200 dark:border-neutral-800 bg-neutral-100 dark:bg-neutral-900" class="relative flex items-center justify-center overflow-hidden rounded-md border border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900"
> >
<div <div
class="pointer-events-none absolute -inset-px opacity-0 transition duration-300" class="pointer-events-none absolute -inset-px opacity-0 transition duration-300"

View File

@ -0,0 +1,34 @@
<script lang="ts">
import { cn } from '@/utils/cn';
type methodType = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
export let method: methodType;
export let title: string;
export let description: string;
</script>
<div class={cn('border-2 border-neutral-100 dark:border-neutral-800 rounded-lg', 'p-4 mb-2')}>
<div class="flex items-center space-x-4 mb-4">
<p
class={cn(
'm-0 rounded-md font-medium px-1.5 py-0.5 text-sm leading-5',
method === 'GET' &&
' text-green-600 dark:text-green-500 bg-green-400/20 dark:bg-green-400/20',
method === 'POST' && ' text-blue-600 dark:text-blue-500 bg-blue-400/20 dark:bg-blue-400/20',
method === 'PUT' &&
' text-yellow-600 dark:text-yellow-500 bg-yellow-400/20 dark:bg-yellow-400/20',
method === 'PATCH' &&
' text-yellow-600 dark:text-yellow-500 bg-yellow-400/20 dark:bg-yellow-400/20',
method === 'DELETE' && ' text-red-600 dark:text-red-500 bg-red-400/20 dark:bg-red-400/20'
)}
>
{method}
</p>
<div class="flex flex-col space-y-0 m-0">
<h3 class="m-0 font-medium">{title}</h3>
<p class="mb-0 font-mono text-sm">{description}</p>
</div>
</div>
<slot />
</div>

View File

@ -0,0 +1,15 @@
<script lang="ts">
export let iconSize: number;
</script>
<svg
width={iconSize || 16}
height={iconSize || 16}
fill="none"
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="xMidYMid"
><path
d="M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46 6.397 1.185 8.746-2.777 8.746-6.158 0-3.052-.12-13.135-.174-23.83-35.61 7.742-43.124-15.103-43.124-15.103-5.823-14.795-14.213-18.73-14.213-18.73-11.613-7.944.876-7.78.876-7.78 12.853.902 19.621 13.19 19.621 13.19 11.417 19.568 29.945 13.911 37.249 10.64 1.149-8.272 4.466-13.92 8.127-17.116-28.431-3.236-58.318-14.212-58.318-63.258 0-13.975 5-25.394 13.188-34.358-1.329-3.224-5.71-16.242 1.24-33.874 0 0 10.749-3.44 35.21 13.121 10.21-2.836 21.16-4.258 32.038-4.307 10.878.049 21.837 1.47 32.066 4.307 24.431-16.56 35.165-13.12 35.165-13.12 6.967 17.63 2.584 30.65 1.255 33.873 8.207 8.964 13.173 20.383 13.173 34.358 0 49.163-29.944 59.988-58.447 63.157 4.591 3.972 8.682 11.762 8.682 23.704 0 17.126-.148 30.91-.148 35.126 0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002 256 57.307 198.691 0 128.001 0Zm-80.06 182.34c-.282.636-1.283.827-2.194.39-.929-.417-1.45-1.284-1.15-1.922.276-.655 1.279-.838 2.205-.399.93.418 1.46 1.293 1.139 1.931Zm6.296 5.618c-.61.566-1.804.303-2.614-.591-.837-.892-.994-2.086-.375-2.66.63-.566 1.787-.301 2.626.591.838.903 1 2.088.363 2.66Zm4.32 7.188c-.785.545-2.067.034-2.86-1.104-.784-1.138-.784-2.503.017-3.05.795-.547 2.058-.055 2.861 1.075.782 1.157.782 2.522-.019 3.08Zm7.304 8.325c-.701.774-2.196.566-3.29-.49-1.119-1.032-1.43-2.496-.726-3.27.71-.776 2.213-.558 3.315.49 1.11 1.03 1.45 2.505.701 3.27Zm9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033-1.448-.439-2.395-1.613-2.103-2.626.301-1.01 1.747-1.484 3.207-1.028 1.446.436 2.396 1.602 2.095 2.622Zm10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95-1.53.034-2.769-.82-2.786-1.86 0-1.065 1.202-1.932 2.733-1.958 1.522-.03 2.768.818 2.768 1.868Zm10.555-.405c.182 1.03-.875 2.088-2.387 2.37-1.485.271-2.861-.365-3.05-1.386-.184-1.056.893-2.114 2.376-2.387 1.514-.263 2.868.356 3.061 1.403Z"
fill="#121212"
/>
</svg>

View File

@ -0,0 +1,60 @@
<svg
width="30"
name="SVGL Logo"
viewBox="0 0 512 512"
fill="none"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
class=""
><rect
id="r4"
width="512"
height="512"
x="0"
y="0"
rx="128"
fill="#222"
stroke="#FFFFFF"
stroke-width="0"
stroke-opacity="100%"
paint-order="stroke"
></rect><rect
width="512"
height="512"
x="0"
y="0"
fill="url(#r6)"
rx="128"
style="mix-blend-mode: overlay;"
></rect><clipPath id="clip"><use xlink:href="#r4"></use></clipPath><defs
><linearGradient
id="r5"
gradientUnits="userSpaceOnUse"
gradientTransform="rotate(135)"
style="transform-origin: center center;"
><stop stop-color="#222"></stop><stop offset="1" stop-color="#222222"></stop></linearGradient
><radialGradient
id="r6"
cx="0"
cy="0"
r="1"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(256) rotate(90) scale(512)"
><stop stop-color="white"></stop><stop offset="1" stop-color="white" stop-opacity="0"
></stop></radialGradient
></defs
><svg
xmlns="http://www.w3.org/2000/svg"
width="310"
height="310"
fill="#e8e8e8"
viewBox="0 0 256 256"
x="101"
y="101"
alignment-baseline="middle"
style="color: rgb(255, 255, 255);"
><path
d="M168,32H88A56.06,56.06,0,0,0,32,88v80a56.06,56.06,0,0,0,56,56h48a8.07,8.07,0,0,0,2.53-.41c26.23-8.75,76.31-58.83,85.06-85.06A8.07,8.07,0,0,0,224,136V88A56.06,56.06,0,0,0,168,32ZM48,168V88A40,40,0,0,1,88,48h80a40,40,0,0,1,40,40v40H184a56.06,56.06,0,0,0-56,56v24H88A40,40,0,0,1,48,168Zm96,35.14V184a40,40,0,0,1,40-40h19.14C191,163.5,163.5,191,144,203.14Z"
></path></svg
></svg
>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,118 @@
<script lang="ts">
export let currentPath: string;
import { cn } from '@/utils/cn';
import Logo from './logo.svelte';
import Theme from './theme.svelte';
import { ArrowUpRight, CloudyIcon, GithubIcon, TwitterIcon } from 'lucide-svelte';
import XIcon from './xIcon.svelte';
const socials = [
{
name: 'GitHub',
url: 'https://github.com/pheralb/svgl',
icon: GithubIcon
}
];
const externalLinks = [
{
name: 'API',
url: '/api',
icon: CloudyIcon,
external: false
},
{
name: 'Terminal',
url: 'https://github.com/pheralb/svgl?tab=readme-ov-file#-terminal',
icon: ArrowUpRight,
external: true
},
{
name: 'Submit logo',
url: 'https://github.com/pheralb/svgl#-getting-started',
icon: ArrowUpRight,
external: true
}
];
</script>
<nav
class={cn(
'dark:bg-neutral-900 bg-white',
'w-full px-5 py-4 border-b border-neutral-200 dark:border-neutral-800',
'sticky top-0 z-50',
'backdrop-blur-md opacity-95'
)}
>
<div class="flex items-center justify-between mx-auto">
<div class="flex items-center space-x-2">
<a href="/">
<div class="flex items-center space-x-2 hover:opacity-80 transition-opacity">
<svelte:component this={Logo} />
<span class="text-[19px] font-medium tracking-wide hidden md:block">svgl</span>
<p class="text-neutral-500 hidden md:block font-mono">v4.0</p>
</div>
</a>
</div>
<div class="flex items-center space-x-0 md:space-x-7">
<div
class="flex items-center md:space-x-4 divide-x divide-neutral-300 dark:divide-neutral-700"
>
{#each externalLinks as link}
<a
href={link.url}
target={link.external ? '_blank' : ''}
class={cn(
'flex items-center hover:opacity-80 transition-opacity text-[15px] pl-2 md:pl-3 group',
currentPath === link.url &&
'underline underline-offset-8 decoration-dotted decoration-neutral-500'
)}
>
{#if !link.external}
<svelte:component
this={link.icon}
size={16}
strokeWidth={1.5}
class="mr-2"
name={link.name}
/>
{/if}
<span class={cn('hidden md:block', !link.external && 'block')}>{link.name}</span>
{#if link.external}
<svelte:component
this={link.icon}
size={16}
name="External link"
strokeWidth={1.5}
class="ml-1 transition-transform duration-300 group-hover:translate-x-[1px] hidden md:block"
/>
{/if}
</a>
{/each}
</div>
<div class="flex items-center space-x-4">
<a
href="https://twitter.com/pheralb_"
target="_blank"
class="flex items-center space-x-1 hover:opacity-80 transition-opacity"
title="Twitter"
>
<XIcon iconSize={16} />
</a>
{#each socials as social}
<a
href={social.url}
target="_blank"
class="flex items-center space-x-1 hover:opacity-80 transition-opacity"
title={social.name}
>
<svelte:component this={social.icon} size={20} strokeWidth={1.5} name={social.name} />
</a>
{/each}
<Theme />
</div>
</div>
</div>
</nav>

View File

@ -1,22 +1,23 @@
<script lang="ts"> <script lang="ts">
import { SearchIcon } from 'lucide-svelte';
export let searchTerm: string; export let searchTerm: string;
export let placeholder: string = 'Search...'; export let placeholder: string = 'Search...';
export let clearSearch: () => void; export let clearSearch: () => void;
import MagnifyingGlass from 'phosphor-svelte/lib/MagnifyingGlass';
import X from 'phosphor-svelte/lib/X'; import X from 'phosphor-svelte/lib/X';
</script> </script>
<div class="relative w-full"> <div class="sticky top-[63px] z-50">
<div class="relative w-full text-[16px]">
<div class="absolute inset-y-0 left-0 flex items-center pl-3 text-neutral-500"> <div class="absolute inset-y-0 left-0 flex items-center pl-3 text-neutral-500">
<div class="pointer-events-none"> <div class="pointer-events-none">
<MagnifyingGlass size={18} weight={searchTerm ? 'duotone' : 'regular'} /> <SearchIcon size={20} strokeWidth={searchTerm ? 2.5 : 1.5} />
</div> </div>
</div> </div>
<input <input
type="text" type="text"
{placeholder} {placeholder}
autocomplete="off" autocomplete="off"
class="w-full rounded-md border border-neutral-300 bg-neutral-200/50 p-3 pl-10 placeholder-neutral-500 focus:outline-none focus:ring-1 focus:ring-neutral-300 dark:border-neutral-800 dark:bg-neutral-700/10 dark:focus:ring-neutral-700" class="w-full border-b border-neutral-300 bg-white p-3 pl-11 placeholder-neutral-500 focus:outline-none focus:ring-1 focus:ring-neutral-300 dark:border-neutral-800 dark:bg-neutral-900 dark:focus:ring-neutral-700"
bind:value={searchTerm} bind:value={searchTerm}
on:input on:input
/> />
@ -32,3 +33,4 @@
</div> </div>
{/if} {/if}
</div> </div>
</div>

View File

@ -1,15 +1,20 @@
<script lang="ts"> <script lang="ts">
import type { iSVG } from '../types/svg';
import download from 'downloadjs'; import download from 'downloadjs';
import { toast } from 'svelte-sonner'; import { toast } from 'svelte-sonner';
import type { iSVG } from '../types/svg'; import jszip from 'jszip';
import { MIMETYPE, getSvgContent } from '../utils/getSvgContent';
// Utils:
import { MIMETYPE, getSvgContent } from '@/utils/getSvgContent';
import { flyAndScale } from '@/utils/flyAndScale';
// Icons: // Icons:
import DownloadSimple from 'phosphor-svelte/lib/DownloadSimple'; import { CopyIcon, DownloadIcon, LinkIcon, PackageIcon, PaintBucket } from 'lucide-svelte';
import Copy from 'phosphor-svelte/lib/Copy';
import Link from 'phosphor-svelte/lib/Link'; // Main Card:
import Star from 'phosphor-svelte/lib/Star';
import CardSpotlight from './cardSpotlight.svelte'; import CardSpotlight from './cardSpotlight.svelte';
import { DropdownMenu } from 'bits-ui';
// Props: // Props:
export let svgInfo: iSVG; export let svgInfo: iSVG;
@ -17,7 +22,33 @@
// Download SVG: // Download SVG:
const downloadSvg = (url?: string) => { const downloadSvg = (url?: string) => {
download(url || ''); download(url || '');
toast.success('Downloading...'); toast.success(`Downloading...`, {
description: `${svgInfo.title} - ${svgInfo.category}`
});
};
// Download all variants:
const downloadAllVariants = async ({ route }: iSVG) => {
const zip = new jszip();
if (typeof route === 'string') {
downloadSvg(route);
return;
}
const lightSvg = await getSvgContent(route.light, false);
const darkSvg = await getSvgContent(route.dark, false);
zip.file(`${svgInfo.title}.svg`, lightSvg);
zip.file(`${svgInfo.title}.dark.svg`, darkSvg);
zip.generateAsync({ type: 'blob' }).then((content) => {
download(content, `${svgInfo.title}.zip`, 'application/zip');
});
toast.success('Downloading light & dark variants...', {
description: `${svgInfo.title} - ${svgInfo.category}`
});
}; };
// Copy SVG to clipboard: // Copy SVG to clipboard:
@ -33,31 +64,43 @@
await navigator.clipboard.writeText(content); await navigator.clipboard.writeText(content);
} }
toast.success('Copied to clipboard!', { toast.success('Copied to clipboard!', {
icon: Star,
description: `${svgInfo.title} - ${svgInfo.category}` description: `${svgInfo.title} - ${svgInfo.category}`
}); });
}; };
// Icon Stroke & Size:
let iconStroke = 1.8;
let iconSize = 16;
</script> </script>
<CardSpotlight> <CardSpotlight>
<div class="flex flex-col items-center justify-center rounded-md p-4"> <div class="flex flex-col items-center justify-center rounded-md p-4">
<!-- Image -->
<img <img
class="hidden dark:block mb-4 mt-2 h-10" class="hidden dark:block mb-4 mt-2 h-10"
src={typeof svgInfo.route !== 'string' ? svgInfo.route.dark : svgInfo.route} src={typeof svgInfo.route !== 'string' ? svgInfo.route.dark : svgInfo.route}
alt={svgInfo.title} alt={svgInfo.title}
title={svgInfo.title}
loading="lazy"
/> />
<img <img
class="block dark:hidden mb-4 mt-2 h-10" class="block dark:hidden mb-4 mt-2 h-10"
src={typeof svgInfo.route !== 'string' ? svgInfo.route.light : svgInfo.route} src={typeof svgInfo.route !== 'string' ? svgInfo.route.light : svgInfo.route}
alt={svgInfo.title} alt={svgInfo.title}
title={svgInfo.title}
loading="lazy"
/> />
<!-- Title -->
<div class="mb-3 flex flex-col items-center justify-center"> <div class="mb-3 flex flex-col items-center justify-center">
<p class="truncate text-[15px] font-medium text-balance text-center">{svgInfo.title}</p> <p class="truncate text-[15px] font-medium text-balance text-center select-all">
{svgInfo.title}
</p>
<a <a
href={`/directory/${svgInfo.category.toLowerCase()}`} href={`/directory/${svgInfo.category.toLowerCase()}`}
class="text-sm lowercase text-neutral-500 hover:underline">{svgInfo.category}</a class="text-sm lowercase text-neutral-500 hover:underline font-mono">{svgInfo.category}</a
> >
</div> </div>
<!-- Actions -->
<div class="flex items-center space-x-1"> <div class="flex items-center space-x-1">
<button <button
title="Copy to clipboard" title="Copy to clipboard"
@ -85,10 +128,32 @@
}} }}
class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40" class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40"
> >
<Copy size={17} /> <CopyIcon size={iconSize} strokeWidth={iconStroke} />
</button> </button>
<button
title="Download" {#if typeof svgInfo.route !== 'string'}
<DropdownMenu.Root>
<DropdownMenu.Trigger
class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40"
>
<DownloadIcon size={iconSize} strokeWidth={iconStroke} />
</DropdownMenu.Trigger>
<DropdownMenu.Content
class="w-full shadow-md max-w-[229px] rounded-md border border-neutral-100 dark:border-neutral-800 bg-white dark:bg-neutral-900 px-1 py-1.5 shadow-popover"
transition={flyAndScale}
sideOffset={3}
>
<DropdownMenu.Item
class="flex h-10 select-none items-center rounded-md py-3 pl-3 pr-1.5 text-sm font-medium hover:bg-neutral-100 dark:hover:bg-neutral-700/40"
on:click={() => {
downloadAllVariants(svgInfo);
}}
>
<PackageIcon class="mr-2" size={18} />
<p>Light & Dark variants</p>
</DropdownMenu.Item>
<DropdownMenu.Item
class="flex h-10 select-none items-center rounded-md py-3 pl-3 pr-1.5 text-sm font-medium hover:bg-neutral-100 dark:hover:bg-neutral-700/40"
on:click={() => { on:click={() => {
const svgHasTheme = typeof svgInfo.route !== 'string'; const svgHasTheme = typeof svgInfo.route !== 'string';
@ -111,17 +176,30 @@
: svgInfo.route : svgInfo.route
); );
}} }}
>
<PaintBucket class="mr-2" size={18} />
Only {document.documentElement.classList.contains('dark') ? 'dark' : 'light'} variant
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Root>
{:else}
<button
title="Download SVG"
on:click={() => {
if (typeof svgInfo.route === 'string') downloadSvg(svgInfo.route);
}}
class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40" class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40"
> >
<DownloadSimple size={17} /> <DownloadIcon size={iconSize} strokeWidth={iconStroke} />
</button> </button>
{/if}
<a <a
href={svgInfo.url} href={svgInfo.url}
title="Website" title="Website"
target="_blank" target="_blank"
class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40" class="flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40"
> >
<Link size={17} /> <LinkIcon size={iconSize} strokeWidth={iconStroke} />
</a> </a>
</div> </div>
</div> </div>

View File

@ -35,12 +35,10 @@
} }
// Icons: // Icons:
import Moon from 'phosphor-svelte/lib/Moon'; import { MoonIcon, SunIcon } from 'lucide-svelte';
import Sun from 'phosphor-svelte/lib/Sun';
</script> </script>
<svelte:head> <svelte:head>
<!-- set dark mode class based on user preference / device settings (in head to avoid FOUC) -->
<script> <script>
if ( if (
localStorage.theme === 'dark' || localStorage.theme === 'dark' ||
@ -53,15 +51,11 @@
</script> </script>
</svelte:head> </svelte:head>
<button <button on:click={toggle} aria-label="Toggle dark mode" class="hover:opacity-80">
on:click={toggle}
class="duration-100 hover:-translate-y-0.5 focus:outline-none"
aria-label="Toggle dark mode"
>
<!-- moon icon --> <!-- moon icon -->
{#if dark} {#if dark}
<Sun size={18} /> <SunIcon size={20} strokeWidth={1.5} />
{:else} {:else}
<Moon size={18} /> <MoonIcon size={20} strokeWidth={1.5} />
{/if} {/if}
</button> </button>

View File

@ -0,0 +1,16 @@
<script lang="ts">
export let iconSize: number;
</script>
<svg
xmlns="http://www.w3.org/2000/svg"
width={iconSize || 16}
height={iconSize || 16}
name="Twitter"
fill="none"
viewBox="0 0 1200 1227"
><path
fill="currentColor"
d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"
/>
</svg>

View File

@ -2,6 +2,5 @@ import type { iSVG } from '@/types/svg';
import { svgs } from './svgs'; import { svgs } from './svgs';
export const svgsData = svgs.map((svg: iSVG, index: number) => { export const svgsData = svgs.map((svg: iSVG, index: number) => {
svg.id = index; return { id: index, ...svg };
return svg;
}); });

View File

@ -325,12 +325,6 @@ export const svgs: iSVG[] = [
route: '/library/mongodb.svg', route: '/library/mongodb.svg',
url: 'https://www.mongodb.com/' url: 'https://www.mongodb.com/'
}, },
{
title: 'Babel',
category: 'Compiler',
route: '/library/babel.svg',
url: 'https://babeljs.io'
},
{ {
title: 'Moon', title: 'Moon',
category: 'Framework', category: 'Framework',
@ -799,12 +793,6 @@ export const svgs: iSVG[] = [
route: '/library/swift.svg', route: '/library/swift.svg',
url: 'https://swift.org/' url: 'https://swift.org/'
}, },
{
title: 'Testing Library',
category: 'Framework',
route: '/library/testinglibrary.svg',
url: 'https://testing-library.com/'
},
{ {
title: 'TypeORM', title: 'TypeORM',
category: 'Database', category: 'Database',
@ -858,7 +846,7 @@ export const svgs: iSVG[] = [
}, },
{ {
title: 'Developer Student Club', title: 'Developer Student Club',
category: 'Education', category: 'Community',
route: '/library/gdsc.svg', route: '/library/gdsc.svg',
url: 'https://gdsc.community.dev/' url: 'https://gdsc.community.dev/'
}, },
@ -888,7 +876,7 @@ export const svgs: iSVG[] = [
}, },
{ {
title: 'midudev', title: 'midudev',
category: 'Education', category: 'Community',
route: '/library/midudev.svg', route: '/library/midudev.svg',
url: 'https://midu.dev' url: 'https://midu.dev'
}, },
@ -943,12 +931,6 @@ export const svgs: iSVG[] = [
route: '/library/jetbrains-space.svg', route: '/library/jetbrains-space.svg',
url: 'https://www.jetbrains.com/space/' url: 'https://www.jetbrains.com/space/'
}, },
{
title: 'Gin',
category: 'Framework',
route: '/library/gin.svg',
url: 'https://gin-gonic.com/'
},
{ {
title: 'Stimulus', title: 'Stimulus',
category: 'Framework', category: 'Framework',
@ -1327,12 +1309,6 @@ export const svgs: iSVG[] = [
route: '/library/bnb.svg', route: '/library/bnb.svg',
url: 'https://www.bnbchain.org/' url: 'https://www.bnbchain.org/'
}, },
{
title: 'Cardano',
category: 'Crypto',
route: '/library/ada.svg',
url: 'https://cardano.org/'
},
{ {
title: 'TRON', title: 'TRON',
category: 'Crypto', category: 'Crypto',
@ -1561,7 +1537,10 @@ export const svgs: iSVG[] = [
{ {
title: 'Cal.com', title: 'Cal.com',
category: 'Software', category: 'Software',
route: '/library/cal.svg', route: {
light: '/library/cal.svg',
dark: '/library/cal_dark.svg'
},
url: 'https://cal.com' url: 'https://cal.com'
}, },
{ {
@ -1590,7 +1569,7 @@ export const svgs: iSVG[] = [
}, },
{ {
title: 'Patreon', title: 'Patreon',
category: 'Software', category: 'Social',
route: { route: {
light: '/library/patreon.svg', light: '/library/patreon.svg',
dark: '/library/patreon_dark.svg' dark: '/library/patreon_dark.svg'
@ -1773,7 +1752,7 @@ export const svgs: iSVG[] = [
}, },
{ {
title: 'Pinterest', title: 'Pinterest',
category: 'Software', category: 'Social',
route: '/library/pinterest.svg', route: '/library/pinterest.svg',
url: 'https://pinterest.com/' url: 'https://pinterest.com/'
}, },
@ -1813,13 +1792,19 @@ export const svgs: iSVG[] = [
{ {
title: 'Penpot', title: 'Penpot',
category: 'Design', category: 'Design',
route: '/library/penpot.svg', route: {
light: '/library/penpot.svg',
dark: '/library/penpot_dark.svg'
},
url: 'https://penpot.app/' url: 'https://penpot.app/'
}, },
{ {
title: 'Sketch', title: 'Sketch',
category: 'Design', category: 'Design',
route: '/library/sketch.svg', route: {
light: '/library/sketch_light.svg',
dark: '/library/sketch.svg'
},
url: 'https://www.sketch.com/' url: 'https://www.sketch.com/'
}, },
{ {
@ -1834,12 +1819,6 @@ export const svgs: iSVG[] = [
route: '/library/ubuntu.svg', route: '/library/ubuntu.svg',
url: 'https://ubuntu.com/' url: 'https://ubuntu.com/'
}, },
{
title: 'Meta',
category: 'Social',
route: '/library/meta.svg',
url: 'https://meta.com/'
},
{ {
title: 'Cypress', title: 'Cypress',
category: 'Framework', category: 'Framework',

181
src/docs/api.md Normal file
View File

@ -0,0 +1,181 @@
---
title: API Reference
description: The API reference is a detailed documentation of all the endpoints available in the SVGL API.
---
<script>
import Endpoint from '../components/endpoints.svelte';
</script>
## Introduction
SVGL API is a RESTFul API that allows you to get all the information of the SVGs that are in the repository.
## Limitations
The API is currently open to everyone and does not require any authentication. However, to prevent abusive use of the API, there is a limit to the number of requests: **5 requests** with **60s** cooldown.
## Base URL
The base URL for the API is:
```bash
https://svgl.app/api/svgs
# or
https://svgl.app/api/categories
```
## Typescript usage
- For SVGs:
```ts
export interface svg {
id: number;
title: string;
category: string;
route:
| string
| {
dark: string;
light: string;
};
url: string;
}
```
- For categories:
```ts
export interface category {
category: string;
total: number;
}
```
## Endpoints
<Endpoint title="Get all SVGs" method="GET" description="Returns all the SVGs in the repository.">
```bash
/api/svgs
```
<p></p>
```json
// Returns:
[
{
"id": 0,
"title": "Discord",
"category": "Software",
"route": "https://svgl.app/library/discord.svg",
"url": "https://discord.com/"
},
...
]
```
</Endpoint>
<Endpoint title="Get a limited number of SVGs" method="GET" description="Returns a limited number of SVGs in the repository. Start from the first SVG.">
```bash
/api/svgs?limit=10
```
<p></p>
```json
// Returns:
[
{
"id": 0,
"title": "Discord",
"category": "Software",
"route": "https://svgl.app/library/discord.svg",
"url": "https://discord.com/"
},
...
]
```
</Endpoint>
<Endpoint title="Filter SVGs by category" method="GET" description="Returns all the SVGs in the repository that match the category.">
```bash
/api/svgs?category=software
```
<p></p>
```json
// Returns:
[
{
"id": 0,
"title": "Discord",
"category": "Software",
"route": "https://svgl.app/library/discord.svg",
"url": "https://discord.com/"
},
...
]
```
The list of categories is available [here](https://github.com/pheralb/svgl/blob/main/src/types/categories.ts) (except for the _all_ category).
</Endpoint>
<Endpoint title="Get only categories" method="GET" description="Returns only categories with the number of SVGs in each category.">
```bash
/api/categories
```
<p></p>
```json
// Returns:
[
{
"category": "Software",
"total": 97
},
{
"category": "Library",
"total": 25
},
...
]
```
</Endpoint>
<Endpoint title="Search SVGs by name" method="GET" description="Returns all the SVGs in the repository that match the name.">
```bash
/api/svgs?search=axiom
```
<p></p>
```json
// Returns:
[
{
"id": 267,
"title": "Axiom",
"category": "Software",
"route": {
"light": "https://svgl.app/library/axiom-light.svg",
"dark": "https://svgl.app/library/axiom-dark.svg"
},
"url": "https://axiom.co/"
}
]
```
</Endpoint>

View File

@ -13,42 +13,33 @@
// Icons: // Icons:
import Heart from 'phosphor-svelte/lib/Heart'; import Heart from 'phosphor-svelte/lib/Heart';
import ArrowUpRight from 'phosphor-svelte/lib/ArrowUpRight'; import { ArrowUpRight } from 'lucide-svelte';
import ArrowLeft from 'phosphor-svelte/lib/ArrowLeft';
import Star from 'phosphor-svelte/lib/Star';
import GithubLogo from 'phosphor-svelte/lib/GithubLogo';
import Box from 'phosphor-svelte/lib/Cube';
// Toaster: // Toaster:
import { Toaster } from 'svelte-sonner'; import { Toaster } from 'svelte-sonner';
// Components for all pages: // Components for all pages:
import Transition from '@/components/transition.svelte'; import Transition from '@/components/transition.svelte';
import Container from '@/components/container.svelte';
import Theme from '@/components/theme.svelte'; // Layout:
import Navbar from '@/components/navbar.svelte';
import { cn } from '@/utils/cn';
</script> </script>
<Navbar currentPath={data.pathname} />
<main> <main>
<aside
class={cn(
'z-50 w-full overflow-y-auto overflow-x-hidden',
'dark:border-neutral-800 md:fixed md:left-0 md:h-full md:w-56 md:pb-10',
'bg-white dark:bg-neutral-900',
'backdrop-blur-md opacity-95',
'border-r border-neutral-200 dark:border-neutral-800'
)}
>
<div class="md:px-6 md:py-6">
<nav <nav
class="z-50 w-full overflow-y-auto overflow-x-hidden border-b border-neutral-300 dark:border-neutral-800 md:fixed md:left-0 md:top-0 md:h-full md:w-60 md:border-none md:pb-10" class="flex items-center space-x-1 overflow-y-auto border-b border-neutral-300 dark:border-neutral-700/40 md:mb-3 md:flex-col md:space-x-0 md:space-y-1 md:overflow-y-visible px-5 md:px-0 pb-2 pt-3 md:pt-0"
>
<div class="px-6 py-6">
<div class="mb-3 border-b border-neutral-300 pb-3 dark:border-neutral-700/40">
<div class="flex items-center justify-between">
<a href="/">
<div
class="flex items-center space-x-2 duration-150 hover:text-neutral-500 dark:hover:text-neutral-300"
>
<h3 class="text-xl font-medium">svgl</h3>
<p class="text-neutral-500">v3.2.2</p>
</div>
</a>
<Theme />
</div>
<p class="mt-2 font-medium text-neutral-400">✨ Optimized SVGs for web</p>
</div>
<div
class="flex items-center space-x-1 overflow-y-auto border-b border-neutral-300 pb-3 dark:border-neutral-700/40 md:mb-3 md:flex-col md:space-x-0 md:space-y-1 md:overflow-y-visible"
> >
<a <a
href="/" href="/"
@ -63,83 +54,46 @@
{#each categories.sort() as category} {#each categories.sort() as category}
<a <a
href={`/directory/${category.toLowerCase()}`} href={`/directory/${category.toLowerCase()}`}
class={`flex w-full items-center rounded-md p-2 transition-none duration-100 text-neutral-600 hover:text-dark dark:hover:text-white dark:text-neutral-400 hover:bg-neutral-200 dark:hover:bg-neutral-700/40 class={cn(
${ 'flex w-full items-center justify-between rounded-md p-2 transition-none duration-100 text-neutral-600 hover:text-dark dark:hover:text-white dark:text-neutral-400 hover:bg-neutral-200 dark:hover:bg-neutral-700/40',
data.pathname === `/directory/${category.toLowerCase()}` data.pathname === `/directory/${category.toLowerCase()}`
? 'bg-neutral-200 dark:bg-neutral-700/30 font-medium dark:text-white text-dark' ? 'bg-neutral-200 dark:bg-neutral-700/30 font-medium dark:text-white text-dark'
: '' : ''
}`} )}
data-sveltekit-preload-data>{category}</a
> >
<span>{category}</span>
</a>
{/each} {/each}
</div> </nav>
<div <div></div>
class="mt-3 flex flex-row items-center space-x-2 border-b border-neutral-300 pb-3 dark:border-neutral-700/40 md:mt-0 md:flex-col md:space-x-0 md:space-y-1"
>
<a
href="https://github.com/pheralb/svgl#-getting-started"
target="_blank"
class="flex w-full items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40"
>
<div><Box size={18} /></div>
<span>Submit logo</span>
<div><ArrowUpRight size={12} /></div>
</a>
<a
href="https://github.com/pheralb/svgl"
target="_blank"
class="flex w-full items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40"
>
<div class="flex items-center space-x-2">
<div><GithubLogo size={18} /></div>
<span class="flex items-center justify-center">Repository</span>
{#if data.stars}
<div class="flex items-center space-x-1 text-neutral-600 dark:text-neutral-400">
<div>
<Star size={14} weight="duotone" class="text-yellow-700 dark:text-yellow-500" />
</div>
<span>{data.stars}</span>
</div>
{/if}
<div><ArrowUpRight size={12} /></div>
</div>
</a>
</div>
<a <a
href="https://twitter.com/pheralb_" href="https://twitter.com/pheralb_"
target="_blank" target="_blank"
class="mt-5 flex items-center space-x-2 duration-100 hover:text-dark dark:text-neutral-400 dark:hover:text-white" class="group mt-5 md:flex hidden items-center space-x-2 duration-100 hover:text-dark dark:text-neutral-400 dark:hover:text-white"
> >
<Heart color="#991b1b" size={18} weight={'duotone'} /> <Heart color="#991b1b" size={18} weight={'duotone'} />
<div class="flex items-center space-x-1"> <div class="flex items-center space-x-1">
<p class="text-muted text-sm">Created by pheralb</p> <p class="text-muted text-sm">Created by pheralb</p>
<ArrowUpRight size={12} /> <ArrowUpRight
size={14}
class="transition-transform duration-300 group-hover:-translate-y-[1px]"
/>
</div> </div>
</a> </a>
</div> </div>
</nav> </aside>
<div class="py-2 md:ml-60 md:py-6"> <div class="ml-0 md:ml-56 pb-6">
{#if data.pathname !== '/'}
<Container>
<a href="/">
<div
class="flex items-center space-x-2 duration-100 hover:text-neutral-500 dark:text-neutral-400 dark:hover:text-white"
>
<ArrowLeft size={20} />
<span>View all</span>
</div>
</a>
</Container>
{/if}
<Transition pathname={data.pathname}> <Transition pathname={data.pathname}>
<slot /> <slot />
</Transition> </Transition>
<Toaster <Toaster
position="bottom-right" position="bottom-right"
toastOptions={{ toastOptions={{
style: `background-color: #171717; class: 'font-sans',
descriptionClass: 'font-mono',
style: `background-color: #262626;
color: #ffff; color: #ffff;
border-radius: 0.4rem; border: 1px solid #262626;` border-radius: 0.4rem; border: 1px solid #121212;`
}} }}
/> />
</div> </div>

View File

@ -1,5 +1,6 @@
<script lang="ts"> <script lang="ts">
import type { iSVG } from '@/types/svg'; import type { iSVG } from '@/types/svg';
import { cn } from '@/utils/cn';
// Get all svgs: // Get all svgs:
import { svgsData } from '@/data'; import { svgsData } from '@/data';
@ -13,19 +14,22 @@
import NotFound from '@/components/notFound.svelte'; import NotFound from '@/components/notFound.svelte';
// Icons: // Icons:
import ArrowsClockWise from 'phosphor-svelte/lib/ArrowsClockwise'; import { ArrowDownUpIcon, ArrowUpDownIcon } from 'lucide-svelte';
import ArrowSquareOut from 'phosphor-svelte/lib/ArrowSquareOut';
let sorted: boolean = false;
// Search: // Search:
let searchTerm = ''; let searchTerm = '';
let filteredSvgs: iSVG[] = []; let filteredSvgs: iSVG[] = [];
// Order by last added:
if (searchTerm.length === 0) { if (searchTerm.length === 0) {
filteredSvgs = allSvgs.sort((a: iSVG, b: iSVG) => { filteredSvgs = allSvgs.sort((a: iSVG, b: iSVG) => {
return b.id! - a.id!; return b.id! - a.id!;
}); });
} }
// Search svgs:
const searchSvgs = () => { const searchSvgs = () => {
return (filteredSvgs = allSvgs.filter((svg: iSVG) => { return (filteredSvgs = allSvgs.filter((svg: iSVG) => {
let svgTitle = svg.title.toLowerCase(); let svgTitle = svg.title.toLowerCase();
@ -33,14 +37,13 @@
})); }));
}; };
// Clear search:
const clearSearch = () => { const clearSearch = () => {
searchTerm = ''; searchTerm = '';
searchSvgs(); searchSvgs();
}; };
// Sort: // Sort:
let sorted: boolean = false;
const sort = () => { const sort = () => {
if (sorted) { if (sorted) {
sortByLatest(); sortByLatest();
@ -52,7 +55,7 @@
// Sort alphabetically: // Sort alphabetically:
const sortAlphabetically = () => { const sortAlphabetically = () => {
filteredSvgs = filteredSvgs.sort((a: iSVG, b: iSVG) => { filteredSvgs = allSvgs.sort((a: iSVG, b: iSVG) => {
return a.title.localeCompare(b.title); return a.title.localeCompare(b.title);
}); });
}; };
@ -69,29 +72,29 @@
<title>A beautiful library with SVG logos - Svgl</title> <title>A beautiful library with SVG logos - Svgl</title>
</svelte:head> </svelte:head>
<Container>
<Search <Search
bind:searchTerm bind:searchTerm
on:input={searchSvgs} on:input={searchSvgs}
clearSearch={() => clearSearch()} clearSearch={() => clearSearch()}
placeholder={`Search ${filteredSvgs.length} logos...`} placeholder={`Search ${filteredSvgs.length} logos...`}
/> />
<div class={`flex items-center justify-between my-4 ${filteredSvgs.length === 0 && 'hidden'}`}>
<Container>
<div class="flex items-center justify-end mb-4">
<button <button
class="flex items-center justify-center space-x-2 rounded-md py-1.5 text-sm font-medium text-neutral-500 dark:text-neutral-400 hover:text-dark dark:hover:text-white duration-100 transition-colors" class={cn(
'flex items-center justify-center space-x-1 rounded-md px-3 py-1.5 text-sm font-medium hover:opacity-80 transition-opacity',
filteredSvgs.length === 0 && 'hidden'
)}
on:click={() => sort()} on:click={() => sort()}
> >
<ArrowsClockWise size={14} /> {#if sorted}
<ArrowDownUpIcon size={16} strokeWidth={2} class="mr-1" />
{:else}
<ArrowUpDownIcon size={16} strokeWidth={2} class="mr-1" />
{/if}
<span>{sorted ? 'Sort by latest' : 'Sort alphabetically'}</span> <span>{sorted ? 'Sort by latest' : 'Sort alphabetically'}</span>
</button> </button>
<a
class="flex items-center justify-center space-x-2 rounded-md py-1.5 text-sm font-medium text-neutral-500 dark:text-neutral-400 hover:text-dark dark:hover:text-white duration-100 transition-colors"
href="https://github.com/pheralb/svgl?tab=readme-ov-file#-getting-started"
target="_blank"
>
<span>Submit SVG</span>
<ArrowSquareOut size={14} />
</a>
</div> </div>
<Grid> <Grid>
{#each filteredSvgs as svg} {#each filteredSvgs as svg}

View File

@ -0,0 +1,49 @@
<script>
import { cn } from '@/utils/cn';
export let data;
</script>
<svelte:head>
<title>{data.meta.title} - SVGL</title>
<meta property="og:type" content="article" />
<meta property="og:title" content={data.meta.title} />
<meta property="og:description" content={data.meta.description} />
</svelte:head>
<section
class="bg-white dark:bg-neutral-900 bg-[url('/images/hero-pattern_light.svg')] dark:bg-[url('/images/hero-pattern_dark.svg')]"
>
<div class="py-8 px-4 mx-auto max-w-screen-xl text-center lg:py-20 z-10 relative">
<div class="flex items-center space-x-4 text-center justify-center">
<h1
class="mb-4 text-4xl font-bold tracking-tight leading-none text-neutral-900 md:text-5xl lg:text-6xl dark:text-white"
>
API Reference
</h1>
<span class="relative inline-block overflow-hidden rounded-full p-[1px] shadow-sm">
<span
class="absolute inset-[-1000%] animate-[spin_4s_linear_infinite] bg-[conic-gradient(from_90deg_at_50%_50%,#f4f4f5_0%,#f4f4f5_50%,#737373_100%)] dark:bg-[conic-gradient(from_90deg_at_50%_50%,#121212_0%,#121212_50%,#737373_100%)]"
/>
<div
class="inline-flex h-full w-full cursor-default items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-900 px-3 py-1 text-xs font-medium dark:text-white backdrop-blur-3xl border border-neutral-100 dark:border-neutral-800 font-mono"
>
beta
</div>
</span>
</div>
<p class="text-lg font-normal text-gray-500 lg:text-xl sm:px-16 lg:px-48 dark:text-gray-200">
The API reference is a detailed documentation of all the endpoints available in the API.
</p>
</div>
</section>
<article
class={cn(
'prose dark:prose-invert',
'mx-auto py-10 px-4 max-w-3xl',
'prose-h2:font-medium',
'prose-pre:m-0'
)}
>
<svelte:component this={data.content} />
</article>

14
src/routes/api/+page.ts Normal file
View File

@ -0,0 +1,14 @@
import { error } from '@sveltejs/kit';
export async function load() {
try {
const documentTitle = 'api';
const post = await import(`../../docs/${documentTitle}.md`);
return {
content: post.default,
meta: post.metadata
};
} catch (e) {
throw error(404, `Could not find this page`);
}
}

View File

@ -0,0 +1,38 @@
import type { RequestEvent } from './$types';
import { json } from '@sveltejs/kit';
import { ratelimit } from '@/server/redis';
// Data:
import { svgs } from '@/data/svgs';
export const GET = async ({ request }: RequestEvent) => {
const categories = svgs
.map((svg) => svg.category)
.filter((category, index, array) => array.indexOf(category) === index);
const ip = request.headers.get('x-forwarded-for') ?? '';
const { success, reset } = await ratelimit.limit(ip);
// Error 429 | If rate limit is exceeded:
if (!success) {
const now = Date.now();
const retryAfter = Math.floor((reset - now) / 1000);
return new Response('Too Many Requests', {
status: 429,
headers: {
'Retry-After': retryAfter.toString()
}
});
}
// Status 200 | If limit is a number:
return json(
categories.map((category) => {
return {
category,
total: svgs.filter((svg) => svg.category === category).length
};
}),
{ status: 200 }
);
};

View File

@ -0,0 +1,120 @@
import type { RequestEvent } from './$types';
import type { iSVG } from '@/types/svg';
import { error, json } from '@sveltejs/kit';
import { ratelimit } from '@/server/redis';
// Data:
import { svgsData } from '@/data';
export const GET = async ({ url, request }: RequestEvent) => {
const fullUrl = url.origin ?? 'svgl.vercel.app';
const ip = request.headers.get('x-forwarded-for') ?? '';
const { success, reset } = await ratelimit.limit(ip);
// Error 429 | If rate limit is exceeded:
if (!success) {
const now = Date.now();
const retryAfter = Math.floor((reset - now) / 1000);
return new Response('Too Many Requests', {
status: 429,
headers: {
'Retry-After': retryAfter.toString()
}
});
}
// Params:
const getLimitParams = url.searchParams.get('limit');
const getCategoryParams = url.searchParams.get('category');
const getSearchParams = url.searchParams.get('search');
// Add full route to svgs:
const fullRouteSvgsData: iSVG[] = svgsData.map((svg) => {
if (typeof svg.route === 'object' && svg.route !== null) {
return {
...svg,
route: {
light: `${fullUrl}${svg.route.light}`,
dark: `${fullUrl}${svg.route.dark}`
}
};
} else if (typeof svg.route === 'string') {
return {
...svg,
route: `${fullUrl}${svg.route}`
};
}
return svg;
});
// Status 200 | If no limit is provided, return all svgs:
if (!getLimitParams && !getCategoryParams && !getSearchParams) {
return json(fullRouteSvgsData, { status: 200 });
}
const limit = Number(getLimitParams);
const category = getCategoryParams;
if (category) {
const categorySvgs = fullRouteSvgsData.filter((svg) => {
return svg.category === category.charAt(0).toUpperCase() + category.slice(1);
});
// Error 400 | If category does not exist:
if (categorySvgs.length === 0) {
error(400, {
message: 'Category does not exist.'
});
}
if (!getLimitParams) {
return json(categorySvgs, { status: 200 });
}
return json(categorySvgs.slice(0, limit), { status: 200 });
}
if (getSearchParams) {
const searchSvgs = fullRouteSvgsData.filter((svg) => {
return svg.title.toLowerCase().includes(getSearchParams.toLowerCase());
});
// Error 400 | If search does not exist:
if (searchSvgs.length === 0) {
error(400, {
message: 'Search does not exist.'
});
}
if (!getLimitParams) {
return json(searchSvgs, { status: 200 });
}
return json(searchSvgs.slice(0, limit), { status: 200 });
}
// Error 400 | if limit is not a number:
if (isNaN(limit)) {
error(400, {
message: 'Limit must be a number.'
});
}
// Error 400 | If limit is not positive:
if (limit < 1) {
error(400, {
message: 'Limit must be a positive number.'
});
}
// Error 400 | If limit is greater than the number of svgs:
if (limit > fullRouteSvgsData.length) {
error(400, {
message: 'Limit is greater than the number of svgs.'
});
}
// Status 200 | If limit is a number:
return json(fullRouteSvgsData.slice(0, limit), { status: 200 });
};

View File

@ -0,0 +1,16 @@
<script>
import Container from '@/components/container.svelte';
import { ArrowLeft } from 'lucide-svelte';
</script>
<Container>
<a href="/">
<div
class="flex items-center space-x-2 duration-100 hover:text-neutral-500 dark:text-neutral-400 dark:hover:text-white group md:mt-2"
>
<ArrowLeft size={20} class="group-hover:-translate-x-[2px] group-hover:duration-200" />
<span>View all</span>
</div>
</a>
</Container>
<slot />

14
src/server/redis.ts Normal file
View File

@ -0,0 +1,14 @@
import { Redis } from '@upstash/redis';
import { Ratelimit } from '@upstash/ratelimit';
import { UPSTASH_REDIS_TOKEN, UPSTASH_REDIS_URL, SVGL_API_REQUESTS } from '$env/static/private';
const redis = new Redis({
url: UPSTASH_REDIS_URL,
token: UPSTASH_REDIS_TOKEN
});
export const ratelimit = new Ratelimit({
redis: redis,
limiter: Ratelimit.slidingWindow(Number(SVGL_API_REQUESTS), '60s'),
analytics: true
});

View File

@ -16,4 +16,5 @@ export type tCategory =
| 'Education' | 'Education'
| 'Design' | 'Design'
| 'Typing' | 'Typing'
| 'Community';
| 'Marketplace'; | 'Marketplace';

6
src/utils/cn.ts Normal file
View File

@ -0,0 +1,6 @@
import { clsx, type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}

43
src/utils/flyAndScale.ts Normal file
View File

@ -0,0 +1,43 @@
import { cubicOut } from 'svelte/easing';
import type { TransitionConfig } from 'svelte/transition';
type FlyAndScaleParams = {
y?: number;
x?: number;
start?: number;
duration?: number;
};
export const flyAndScale = (
node: Element,
params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 }
): TransitionConfig => {
const style = getComputedStyle(node);
const transform = style.transform === 'none' ? '' : style.transform;
const scaleConversion = (valueA: number, scaleA: [number, number], scaleB: [number, number]) => {
const [minA, maxA] = scaleA;
const [minB, maxB] = scaleB;
const percentage = (valueA - minA) / (maxA - minA);
const valueB = percentage * (maxB - minB) + minB;
return valueB;
};
const styleToString = (style: Record<string, number | string | undefined>): string => {
return Object.keys(style).reduce((str, key) => {
if (style[key] === undefined) return str;
return str + key + ':' + style[key] + ';';
}, '');
};
return {
duration: params.duration ?? 200,
delay: 0,
css: (t) => {
const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]);
const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]);
const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]);
return styleToString({
transform: transform + 'translate3d(' + x + 'px, ' + y + 'px, 0) scale(' + scale + ')',
opacity: t
});
},
easing: cubicOut
};
};

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,271 @@
<svg width="1440" height="462" viewBox="0 0 1440 462" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.3" clip-path="url(#clip0_302_24807)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 58.7206H48V0H47V57.4972H0V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 58.7206H96V0H95V57.4972H48V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 58.7206H144V0H143V57.4972H96V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 58.7206H192V0H191V57.4972H144V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 58.7206H240V0H239V57.4972H192V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 58.7206H288V0H287V57.4972H240V58.7206Z" fill="#262626"/>
<path d="M288 0H336V58.7206H288V0Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 58.7206H336V0H335V57.4972H288V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 58.7206H384V0H383V57.4972H336V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 58.7206H432V0H431V57.4972H384V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 58.7206H480V0H479V57.4972H432V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 58.7206H528V0H527V57.4972H480V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 58.7206H576V0H575V57.4972H528V58.7206Z" fill="#262626"/>
<path d="M576 0H624V58.7206H576V0Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 58.7206H624V0H623V57.4972H576V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 58.7206H672V0H671V57.4972H624V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 58.7206H720V0H719V57.4972H672V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 58.7206H768V0H767V57.4972H720V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 58.7206H816V0H815V57.4972H768V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 58.7206H864V0H863V57.4972H816V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 58.7206H912V0H911V57.4972H864V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 58.7206H960V0H959V57.4972H912V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 58.7206H1008V0H1007V57.4972H960V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 58.7206H1056V0H1055V57.4972H1008V58.7206Z" fill="#262626"/>
<path d="M1056 0H1104V58.7206H1056V0Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 58.7206H1104V0H1103V57.4972H1056V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 58.7206H1152V0H1151V57.4972H1104V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 58.7206H1200V0H1199V57.4972H1152V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 58.7206H1248V0H1247V57.4972H1200V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 58.7206H1296V0H1295V57.4972H1248V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 58.7206H1344V0H1343V57.4972H1296V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 58.7206H1392V0H1391V57.4972H1344V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 58.7206H1440V0H1439V57.4972H1392V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 117.441H48V58.7206L47 58.7206V116.218H0V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 117.441H96V58.7206L95 58.7206V116.218H48V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 117.441H144V58.7206L143 58.7206V116.218H96V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 117.441H192V58.7206L191 58.7206V116.218H144V117.441Z" fill="#262626"/>
<path d="M192 58.7206H240V117.441H192V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 117.441H240V58.7206L239 58.7206V116.218H192V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 117.441H288V58.7206L287 58.7206V116.218H240V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 117.441H336V58.7206L335 58.7206V116.218H288V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 117.441H384V58.7206L383 58.7206V116.218H336V117.441Z" fill="#262626"/>
<path d="M384 58.7206H432V117.441H384V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 117.441H432V58.7206L431 58.7206V116.218H384V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 117.441H480V58.7206L479 58.7206V116.218H432V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 117.441H528V58.7206L527 58.7206V116.218H480V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 117.441H576V58.7206L575 58.7206V116.218H528V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 117.441H624V58.7206L623 58.7206V116.218H576V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 117.441H672V58.7206L671 58.7206V116.218H624V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 117.441H720V58.7206L719 58.7206V116.218H672V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 117.441H768V58.7206L767 58.7206V116.218H720V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 117.441H816V58.7206L815 58.7206V116.218H768V117.441Z" fill="#262626"/>
<path d="M816 58.7206H864V117.441H816V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 117.441H864V58.7206L863 58.7206V116.218H816V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 117.441H912V58.7206L911 58.7206V116.218H864V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 117.441H960V58.7206L959 58.7206V116.218H912V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 117.441H1008V58.7206L1007 58.7206V116.218H960V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 117.441H1056V58.7206L1055 58.7206V116.218H1008V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 117.441H1104V58.7206L1103 58.7206V116.218H1056V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 117.441H1152V58.7206L1151 58.7206V116.218H1104V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 117.441H1200V58.7206L1199 58.7206V116.218H1152V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 117.441H1248V58.7206L1247 58.7206V116.218H1200V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 117.441H1296V58.7206L1295 58.7206V116.218H1248V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 117.441H1344V58.7206L1343 58.7206V116.218H1296V117.441Z" fill="#262626"/>
<path d="M1344 58.7206H1392V117.441H1344V58.7206Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 117.441H1392V58.7206L1391 58.7206V116.218H1344V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 117.441H1440V58.7206L1439 58.7206V116.218H1392V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 168.397H48V117.441H47V167.335H0V168.397Z" fill="#262626"/>
<path d="M48 117.441H96V168.397H48V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 168.397H96V117.441H95V167.335H48V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 168.397H144V117.441H143V167.335H96V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 168.397H192V117.441H191V167.335H144V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 168.397H240V117.441H239V167.335H192V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 168.397H288V117.441H287V167.335H240V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 168.397H336V117.441H335V167.335H288V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 168.397H384V117.441H383V167.335H336V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 168.397H432V117.441H431V167.335H384V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 168.397H480V117.441H479V167.335H432V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 168.397H528V117.441H527V167.335H480V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 168.397H576V117.441H575V167.335H528V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 168.397H624V117.441H623V167.335H576V168.397Z" fill="#262626"/>
<path d="M624 117.441H672V168.397H624V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 168.397H672V117.441H671V167.335H624V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 168.397H720V117.441H719V167.335H672V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 168.397H768V117.441H767V167.335H720V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 168.397H816V117.441H815V167.335H768V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 168.397H864V117.441H863V167.335H816V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 168.397H912V117.441H911V167.335H864V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 168.397H960V117.441H959V167.335H912V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 168.397H1008V117.441H1007V167.335H960V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 168.397H1056V117.441H1055V167.335H1008V168.397Z" fill="#262626"/>
<path d="M1056 117.441H1104V168.397H1056V117.441Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 168.397H1104V117.441H1103V167.335H1056V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 168.397H1152V117.441H1151V167.335H1104V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 168.397H1200V117.441H1199V167.335H1152V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 168.397H1248V117.441H1247V167.335H1200V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 168.397H1296V117.441H1295V167.335H1248V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 168.397H1344V117.441H1343V167.335H1296V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 168.397H1392V117.441H1391V167.335H1344V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 168.397H1440V117.441H1439V167.335H1392V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 227.118H48V168.397H47V225.894H0V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 227.118H96V168.397H95V225.894H48V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 227.118H144V168.397H143V225.894H96V227.118Z" fill="#262626"/>
<path d="M144 168.397H192V227.118H144V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 227.118H192V168.397H191V225.894H144V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 227.118H240V168.397H239V225.894H192V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 227.118H288V168.397H287V225.894H240V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 227.118H336V168.397H335V225.894H288V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 227.118H384V168.397H383V225.894H336V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 227.118H432V168.397H431V225.894H384V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 227.118H480V168.397H479V225.894H432V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 227.118H528V168.397H527V225.894H480V227.118Z" fill="#262626"/>
<path d="M528 168.397H576V227.118H528V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 227.118H576V168.397H575V225.894H528V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 227.118H624V168.397H623V225.894H576V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 227.118H672V168.397H671V225.894H624V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 227.118H720V168.397H719V225.894H672V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 227.118H768V168.397H767V225.894H720V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 227.118H816V168.397H815V225.894H768V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 227.118H864V168.397H863V225.894H816V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 227.118H912V168.397H911V225.894H864V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 227.118H960V168.397H959V225.894H912V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 227.118H1008V168.397H1007V225.894H960V227.118Z" fill="#262626"/>
<path d="M1008 168.397H1056V227.118H1008V168.397Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 227.118H1056V168.397H1055V225.894H1008V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 227.118H1104V168.397H1103V225.894H1056V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 227.118H1152V168.397H1151V225.894H1104V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 227.118H1200V168.397H1199V225.894H1152V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 227.118H1248V168.397H1247V225.894H1200V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 227.118H1296V168.397H1295V225.894H1248V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 227.118H1344V168.397H1343V225.894H1296V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 227.118H1392V168.397H1391V225.894H1344V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 227.118H1440V168.397H1439V225.894H1392V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 285.838H48V227.118H47V284.615H0V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 285.838H96V227.118H95V284.615H48V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 285.838H144V227.118H143V284.615H96V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 285.838H192V227.118H191V284.615H144V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 285.838H240V227.118H239V284.615H192V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 285.838H288V227.118H287V284.615H240V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 285.838H336V227.118H335V284.615H288V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 285.838H384V227.118H383V284.615H336V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 285.838H432V227.118H431V284.615H384V285.838Z" fill="#262626"/>
<path d="M432 227.118H480V285.838H432V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 285.838H480V227.118H479V284.615H432V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 285.838H528V227.118H527V284.615H480V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 285.838H576V227.118H575V284.615H528V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 285.838H624V227.118H623V284.615H576V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 285.838H672V227.118H671V284.615H624V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 285.838H720V227.118H719V284.615H672V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 285.838H768V227.118H767V284.615H720V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 285.838H816V227.118H815V284.615H768V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 285.838H864V227.118H863V284.615H816V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 285.838H912V227.118H911V284.615H864V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 285.838H960V227.118H959V284.615H912V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 285.838H1008V227.118H1007V284.615H960V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 285.838H1056V227.118H1055V284.615H1008V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 285.838H1104V227.118H1103V284.615H1056V285.838Z" fill="#262626"/>
<path d="M1104 227.118H1152V285.838H1104V227.118Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 285.838H1152V227.118H1151V284.615H1104V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 285.838H1200V227.118H1199V284.615H1152V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 285.838H1248V227.118H1247V284.615H1200V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 285.838H1296V227.118H1295V284.615H1248V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 285.838H1344V227.118H1343V284.615H1296V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 285.838H1392V227.118H1391V284.615H1344V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 285.838H1440V227.118H1439V284.615H1392V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 344.559H48V285.838H47V343.335H0V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 344.559H96V285.838H95V343.335H48V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 344.559H144V285.838H143V343.335H96V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 344.559H192V285.838H191V343.335H144V344.559Z" fill="#262626"/>
<path d="M192 285.838H240V344.559H192V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 344.559H240V285.838H239V343.335H192V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 344.559H288V285.838H287V343.335H240V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 344.559H336V285.838H335V343.335H288V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 344.559H384V285.838H383V343.335H336V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 344.559H432V285.838H431V343.335H384V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 344.559H480V285.838H479V343.335H432V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 344.559H528V285.838H527V343.335H480V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 344.559H576V285.838H575V343.335H528V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 344.559H624V285.838H623V343.335H576V344.559Z" fill="#262626"/>
<path d="M624 285.838H672V344.559H624V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 344.559H672V285.838H671V343.335H624V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 344.559H720V285.838H719V343.335H672V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 344.559H768V285.838H767V343.335H720V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 344.559H816V285.838H815V343.335H768V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 344.559H864V285.838H863V343.335H816V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 344.559H912V285.838H911V343.335H864V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 344.559H960V285.838H959V343.335H912V344.559Z" fill="#262626"/>
<path d="M960 285.838H1008V344.559H960V285.838Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 344.559H1008V285.838H1007V343.335H960V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 344.559H1056V285.838H1055V343.335H1008V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 344.559H1104V285.838H1103V343.335H1056V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 344.559H1152V285.838H1151V343.335H1104V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 344.559H1200V285.838H1199V343.335H1152V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 344.559H1248V285.838H1247V343.335H1200V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 344.559H1296V285.838H1295V343.335H1248V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 344.559H1344V285.838H1343V343.335H1296V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 344.559H1392V285.838H1391V343.335H1344V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 344.559H1440V285.838H1439V343.335H1392V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 403.279H48V344.559H47V402.056H0V403.279Z" fill="#262626"/>
<path d="M48 344.559H96V403.279H48V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 403.279H96V344.559H95V402.056H48V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 403.279H144V344.559H143V402.056H96V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 403.279H192V344.559H191V402.056H144V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 403.279H240V344.559H239V402.056H192V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 403.279H288V344.559H287V402.056H240V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 403.279H336V344.559H335V402.056H288V403.279Z" fill="#262626"/>
<path d="M336 344.559H384V403.279H336V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 403.279H384V344.559H383V402.056H336V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 403.279H432V344.559H431V402.056H384V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 403.279H480V344.559H479V402.056H432V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 403.279H528V344.559H527V402.056H480V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 403.279H576V344.559H575V402.056H528V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 403.279H624V344.559H623V402.056H576V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 403.279H672V344.559H671V402.056H624V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 403.279H720V344.559H719V402.056H672V403.279Z" fill="#262626"/>
<path d="M720 344.559H768V403.279H720V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 403.279H768V344.559H767V402.056H720V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 403.279H816V344.559H815V402.056H768V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 403.279H864V344.559H863V402.056H816V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 403.279H912V344.559H911V402.056H864V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 403.279H960V344.559H959V402.056H912V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 403.279H1008V344.559H1007V402.056H960V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 403.279H1056V344.559H1055V402.056H1008V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 403.279H1104V344.559H1103V402.056H1056V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 403.279H1152V344.559H1151V402.056H1104V403.279Z" fill="#262626"/>
<path d="M1152 344.559H1200V403.279H1152V344.559Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 403.279H1200V344.559H1199V402.056H1152V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 403.279H1248V344.559H1247V402.056H1200V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 403.279H1296V344.559H1295V402.056H1248V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 403.279H1344V344.559H1343V402.056H1296V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 403.279H1392V344.559H1391V402.056H1344V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 403.279H1440V344.559H1439V402.056H1392V403.279Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 462H48V403.279H47V460.777H0V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 462H96V403.279H95V460.777H48V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M96 462H144V403.279H143V460.777H96V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M144 462H192V403.279H191V460.777H144V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M192 462H240V403.279H239V460.777H192V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M240 462H288V403.279H287V460.777H240V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M288 462H336V403.279H335V460.777H288V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M336 462H384V403.279H383V460.777H336V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M384 462H432V403.279H431V460.777H384V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M432 462H480V403.279H479V460.777H432V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M480 462H528V403.279H527V460.777H480V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M528 462H576V403.279H575V460.777H528V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M576 462H624V403.279H623V460.777H576V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M624 462H672V403.279H671V460.777H624V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M672 462H720V403.279H719V460.777H672V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M720 462H768V403.279H767V460.777H720V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M768 462H816V403.279H815V460.777H768V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M816 462H864V403.279H863V460.777H816V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M864 462H912V403.279H911V460.777H864V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M912 462H960V403.279H959V460.777H912V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M960 462H1008V403.279H1007V460.777H960V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1008 462H1056V403.279H1055V460.777H1008V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1056 462H1104V403.279H1103V460.777H1056V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1104 462H1152V403.279H1151V460.777H1104V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1152 462H1200V403.279H1199V460.777H1152V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1200 462H1248V403.279H1247V460.777H1200V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1248 462H1296V403.279H1295V460.777H1248V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1296 462H1344V403.279H1343V460.777H1296V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1344 462H1392V403.279H1391V460.777H1344V462Z" fill="#262626"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1392 462H1440V403.279H1439V460.777H1392V462Z" fill="#262626"/>
</g>
<defs>
<clipPath id="clip0_302_24807">
<rect width="1440" height="462" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

BIN
static/images/readme.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 262 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 45 KiB

View File

@ -0,0 +1,9 @@
<svg width="101" height="22" viewBox="0 0 101 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.0582 20.817C4.32115 20.817 0 16.2763 0 10.6704C0 5.04589 4.1005 0.467773 10.0582 0.467773C13.2209 0.467773 15.409 1.43945 17.1191 3.66311L14.3609 5.96151C13.2025 4.72822 11.805 4.11158 10.0582 4.11158C6.17833 4.11158 4.04533 7.08268 4.04533 10.6704C4.04533 14.2582 6.38059 17.1732 10.0582 17.1732C11.7866 17.1732 13.2577 16.5566 14.4161 15.3233L17.1375 17.7151C15.501 19.8453 13.2577 20.817 10.0582 20.817Z" fill="#ffff"/>
<path d="M29.0161 5.88601H32.7304V20.4612H29.0161V18.331C28.2438 19.8446 26.9566 20.8536 24.4927 20.8536C20.5577 20.8536 17.4133 17.4341 17.4133 13.2297C17.4133 9.02528 20.5577 5.60571 24.4927 5.60571C26.9383 5.60571 28.2438 6.61477 29.0161 8.12835V5.88601ZM29.1264 13.2297C29.1264 10.95 27.5634 9.06266 25.0995 9.06266C22.7274 9.06266 21.1828 10.9686 21.1828 13.2297C21.1828 15.4346 22.7274 17.3967 25.0995 17.3967C27.5451 17.3967 29.1264 15.4907 29.1264 13.2297Z" fill="#ffff"/>
<path d="M35.3599 0H39.0742V20.4427H35.3599V0Z" fill="#ffff"/>
<path d="M40.7291 18.5182C40.7291 17.3223 41.6853 16.3132 42.9908 16.3132C44.2964 16.3132 45.2158 17.3223 45.2158 18.5182C45.2158 19.7515 44.278 20.7605 42.9908 20.7605C41.7037 20.7605 40.7291 19.7515 40.7291 18.5182Z" fill="#ffff"/>
<path d="M59.4296 18.1068C58.0505 19.7885 55.9543 20.8536 53.4719 20.8536C49.0404 20.8536 45.7858 17.4341 45.7858 13.2297C45.7858 9.02528 49.0404 5.60571 53.4719 5.60571C55.8623 5.60571 57.9402 6.61477 59.3193 8.20309L56.4508 10.6136C55.7336 9.71667 54.7958 9.04397 53.4719 9.04397C51.0999 9.04397 49.5553 10.95 49.5553 13.211C49.5553 15.472 51.0999 17.378 53.4719 17.378C54.9062 17.378 55.8991 16.6306 56.6346 15.6215L59.4296 18.1068Z" fill="#ffff"/>
<path d="M59.7422 13.2297C59.7422 9.02528 62.9968 5.60571 67.4283 5.60571C71.8598 5.60571 75.1144 9.02528 75.1144 13.2297C75.1144 17.4341 71.8598 20.8536 67.4283 20.8536C62.9968 20.8349 59.7422 17.4341 59.7422 13.2297ZM71.3449 13.2297C71.3449 10.95 69.8003 9.06266 67.4283 9.06266C65.0563 9.04397 63.5117 10.95 63.5117 13.2297C63.5117 15.4907 65.0563 17.3967 67.4283 17.3967C69.8003 17.3967 71.3449 15.4907 71.3449 13.2297Z" fill="#ffff"/>
<path d="M100.232 11.5482V20.4428H96.518V12.4638C96.518 9.94119 95.3412 8.85739 93.576 8.85739C91.921 8.85739 90.7442 9.67958 90.7442 12.4638V20.4428H87.0299V12.4638C87.0299 9.94119 85.8346 8.85739 84.0878 8.85739C82.4329 8.85739 80.9802 9.67958 80.9802 12.4638V20.4428H77.2659V5.8676H80.9802V7.88571C81.7525 6.31607 83.15 5.53125 85.3014 5.53125C87.3425 5.53125 89.0525 6.5403 89.9903 8.24074C90.9281 6.50293 92.3072 5.53125 94.8079 5.53125C97.8603 5.54994 100.232 7.86702 100.232 11.5482Z" fill="#ffff"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 364 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.92187 345.94141" fill="#ffff" style="width: 100%; height: 100%;">
<path d="m-68.324219 280.3457-36.376951 51.23633v28.96289l-31.65625 15.05664-.28516-.13476v188.95312l123.417971 58.30664 7.5429684 3.56055 7.5410156-3.56055L125.2793 564.41992V375.4668l-.23242.10937-31.666021-15.06055v-28.93359l-1.107421-1.55859-35.271485-49.67774-36.378906 51.23633v.0508l-26.4707032-37.28125-26.2656248 36.99414-.939453-1.32226-35.271485-49.67774zm6.435547 29.76172 14.070313 19.81641h-41.011719l13.90625-19.58399 13.035156-.23242zm125.326172 0 14.070312 19.81641H36.496094l13.904297-19.58399 13.037109-.23242zM.58789062 324.11523 14.658203 343.92969h-41.009765l13.904296-19.58399 13.03515662-.23047zM-92.71875 339.91016h19.451172v65.49609l-19.451172-9.18945v-56.30664zm29.4375 0h19.353516l-.002 79.35546-19.353515-9.14257.002-70.21289zm95.886719 0h19.453125l-.002 70.14648-19.449219 9.1875-.002-79.33398zm29.4375 0h19.353515v56.28515l-19.353515 9.14258v-65.42773zm-92.285157 14.00586h19.451172v81.0039l-19.451172-9.18945v-71.81445zm29.4375005 0H18.548828l-.002 71.9707-19.35351562 9.14453.001953-81.11523zm94.1835935 21.52539 17.125004 7.00195-17.125004 8.08984v-15.09179zm-198.080076.0254v15.08984l-17.12305-8.08984 17.12305-7zm-16.85938 23.80859 108.335941 51.17773v155.58985l-108.335941-51.17774V399.2754zm231.75586 0v155.58984L1.859375 606.04298V450.45313L110.19531 399.2754z" color="#fff" font-family="sans-serif" font-weight="400" overflow="visible" style="line-height:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#fff;text-transform:none;block-progression:tb;white-space:normal;isolation:auto;mix-blend-mode:normal;solid-color:#fff;solid-opacity:1" transform="translate(136.64258 -280.3457)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,3 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" color="#000" viewBox="0 0 32 32"> <svg xmlns="http://www.w3.org/2000/svg" color="#ffff" viewBox="0 0 32 32">
<path fill="currentcolor" fill-rule="evenodd" d="m.38 11.986 6.412-8.704a.8.8 0 0 1 .556-.32l8.564-.952a.8.8 0 0 1 .176 0l8.564.951a.8.8 0 0 1 .556.32l6.413 8.705a.8.8 0 0 1-.04.997L16.455 30.475a.6.6 0 0 1-.908 0L.418 12.983a.8.8 0 0 1-.039-.997zm17.826-7.403 6.047 5.712a.4.4 0 0 0 .674-.32l-.29-4.054a.2.2 0 0 1 .392-.07l1.326 4.642a1 1 0 0 0 .645.674l2.83.943a.2.2 0 0 1-.062.39h-2.72a1 1 0 0 0-.843.463l-7.414 11.65a.3.3 0 0 1-.523-.291l5.314-10.96a.6.6 0 0 0-.54-.862H8.958a.6.6 0 0 0-.54.862l5.314 10.96a.3.3 0 0 1-.523.292l-7.414-11.65a1 1 0 0 0-.844-.464H2.148a.2.2 0 0 1-.062-.39l2.908-.945a1 1 0 0 0 .652-.677l1.325-4.637a.2.2 0 0 1 .392.07l-.29 4.054a.4.4 0 0 0 .674.32l6.047-5.712a.2.2 0 0 1 .293.272L10.03 9.848a.4.4 0 0 0 .31.652h11.32a.4.4 0 0 0 .31-.652l-4.057-4.993a.2.2 0 0 1 .293-.272z"/> <path fill="currentcolor" fill-rule="evenodd" d="m.38 11.986 6.412-8.704a.8.8 0 0 1 .556-.32l8.564-.952a.8.8 0 0 1 .176 0l8.564.951a.8.8 0 0 1 .556.32l6.413 8.705a.8.8 0 0 1-.04.997L16.455 30.475a.6.6 0 0 1-.908 0L.418 12.983a.8.8 0 0 1-.039-.997zm17.826-7.403 6.047 5.712a.4.4 0 0 0 .674-.32l-.29-4.054a.2.2 0 0 1 .392-.07l1.326 4.642a1 1 0 0 0 .645.674l2.83.943a.2.2 0 0 1-.062.39h-2.72a1 1 0 0 0-.843.463l-7.414 11.65a.3.3 0 0 1-.523-.291l5.314-10.96a.6.6 0 0 0-.54-.862H8.958a.6.6 0 0 0-.54.862l5.314 10.96a.3.3 0 0 1-.523.292l-7.414-11.65a1 1 0 0 0-.844-.464H2.148a.2.2 0 0 1-.062-.39l2.908-.945a1 1 0 0 0 .652-.677l1.325-4.637a.2.2 0 0 1 .392.07l-.29 4.054a.4.4 0 0 0 .674.32l6.047-5.712a.2.2 0 0 1 .293.272L10.03 9.848a.4.4 0 0 0 .31.652h11.32a.4.4 0 0 0 .31-.652l-4.057-4.993a.2.2 0 0 1 .293-.272z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 891 B

After

Width:  |  Height:  |  Size: 892 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" color="#000" viewBox="0 0 32 32">
<path fill="currentcolor" fill-rule="evenodd" d="m.38 11.986 6.412-8.704a.8.8 0 0 1 .556-.32l8.564-.952a.8.8 0 0 1 .176 0l8.564.951a.8.8 0 0 1 .556.32l6.413 8.705a.8.8 0 0 1-.04.997L16.455 30.475a.6.6 0 0 1-.908 0L.418 12.983a.8.8 0 0 1-.039-.997zm17.826-7.403 6.047 5.712a.4.4 0 0 0 .674-.32l-.29-4.054a.2.2 0 0 1 .392-.07l1.326 4.642a1 1 0 0 0 .645.674l2.83.943a.2.2 0 0 1-.062.39h-2.72a1 1 0 0 0-.843.463l-7.414 11.65a.3.3 0 0 1-.523-.291l5.314-10.96a.6.6 0 0 0-.54-.862H8.958a.6.6 0 0 0-.54.862l5.314 10.96a.3.3 0 0 1-.523.292l-7.414-11.65a1 1 0 0 0-.844-.464H2.148a.2.2 0 0 1-.062-.39l2.908-.945a1 1 0 0 0 .652-.677l1.325-4.637a.2.2 0 0 1 .392.07l-.29 4.054a.4.4 0 0 0 .674.32l6.047-5.712a.2.2 0 0 1 .293.272L10.03 9.848a.4.4 0 0 0 .31.652h11.32a.4.4 0 0 0 .31-.652l-4.057-4.993a.2.2 0 0 1 .293-.272z"/>
</svg>

After

Width:  |  Height:  |  Size: 891 B

View File

@ -1,290 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
<defs>
<radialGradient cx="50.28%" cy="49.85%" fx="50.28%" fy="49.85%" r="50.33%" gradientTransform="matrix(1 0 0 .99252 0 0)" id="a">
<stop stop-color="#E33332" offset="0%"/>
<stop stop-color="#E03330" offset="20%"/>
<stop stop-color="#D52E2C" offset="38%"/>
<stop stop-color="#C32827" offset="54%"/>
<stop stop-color="#A91F23" offset="71%"/>
<stop stop-color="#89181A" offset="86%"/>
<stop stop-color="#640E0E" offset="100%"/>
</radialGradient>
<radialGradient cx="50.88%" cy="49.58%" fx="50.88%" fy="49.58%" r="91.64%" gradientTransform="matrix(1 0 0 .41938 0 .29)" id="d">
<stop stop-color="#F7B3C5" offset="0%"/>
<stop stop-color="#F7B0C2" offset="19%"/>
<stop stop-color="#F6A4B6" offset="38%"/>
<stop stop-color="#F390A5" offset="58%"/>
<stop stop-color="#E7728B" offset="79%"/>
<stop stop-color="#DC4D6C" offset="99%"/>
<stop stop-color="#DA4B6A" offset="100%"/>
</radialGradient>
<radialGradient cx="50.54%" cy="49.74%" fx="50.54%" fy="49.74%" r="56.12%" gradientTransform="matrix(.81559 0 0 1 .1 0)" id="e">
<stop stop-color="#F7B3C5" offset="0%"/>
<stop stop-color="#F7B0C2" offset="19%"/>
<stop stop-color="#F6A4B6" offset="38%"/>
<stop stop-color="#F390A5" offset="58%"/>
<stop stop-color="#E7728B" offset="79%"/>
<stop stop-color="#DC4D6C" offset="99%"/>
<stop stop-color="#DA4B6A" offset="100%"/>
</radialGradient>
<radialGradient cx="51.99%" cy="49.58%" fx="51.99%" fy="49.58%" r="91.66%" gradientTransform="matrix(1 0 0 .41925 0 .29)" id="h">
<stop stop-color="#F7B3C5" offset="0%"/>
<stop stop-color="#F7B0C2" offset="19%"/>
<stop stop-color="#F6A4B6" offset="38%"/>
<stop stop-color="#F390A5" offset="58%"/>
<stop stop-color="#E7728B" offset="79%"/>
<stop stop-color="#DC4D6C" offset="99%"/>
<stop stop-color="#DA4B6A" offset="100%"/>
</radialGradient>
<linearGradient x1="0%" y1="49.97%" x2="100%" y2="49.97%" id="b">
<stop stop-color="#F7B3C5" offset="0%"/>
<stop stop-color="#F7B0C2" offset="19%"/>
<stop stop-color="#F6A4B6" offset="38%"/>
<stop stop-color="#F390A5" offset="58%"/>
<stop stop-color="#E7728B" offset="79%"/>
<stop stop-color="#DC4D6C" offset="99%"/>
<stop stop-color="#DA4B6A" offset="100%"/>
</linearGradient>
<linearGradient x1=".03%" y1="26.46%" x2="100.02%" y2="26.46%" id="c">
<stop stop-color="#F7B3C5" offset="0%"/>
<stop stop-color="#F7B0C2" offset="19%"/>
<stop stop-color="#F6A4B6" offset="38%"/>
<stop stop-color="#F390A5" offset="58%"/>
<stop stop-color="#E7728B" offset="79%"/>
<stop stop-color="#DC4D6C" offset="99%"/>
<stop stop-color="#DA4B6A" offset="100%"/>
</linearGradient>
<linearGradient x1="0%" y1="50%" x2="100%" y2="50%" id="f">
<stop stop-color="#DA4B6A" offset="0%"/>
<stop stop-color="#DC4D6C" offset="1%"/>
<stop stop-color="#E7728B" offset="21%"/>
<stop stop-color="#F390A5" offset="42%"/>
<stop stop-color="#F6A4B6" offset="62%"/>
<stop stop-color="#F7B0C2" offset="81%"/>
<stop stop-color="#F7B3C5" offset="100%"/>
</linearGradient>
<linearGradient x1="0%" y1="26.48%" x2="99.97%" y2="26.48%" id="g">
<stop stop-color="#DA4B6A" offset="0%"/>
<stop stop-color="#DC4D6C" offset="1%"/>
<stop stop-color="#E7728B" offset="21%"/>
<stop stop-color="#F390A5" offset="42%"/>
<stop stop-color="#F6A4B6" offset="62%"/>
<stop stop-color="#F7B0C2" offset="81%"/>
<stop stop-color="#F7B3C5" offset="100%"/>
</linearGradient>
</defs>
<path d="M249.81 103.82c6.3 24.53-20.75 53.25-54.59 45.11 43.1-31.34 23.4-71.49.62-90.75-24.7-20.88-.79-27.58 7.18-20.01-.2-15.26-53.91-11.81-6.93 37.18 24.14 25.16-4.33 80.83-38.26 38.5-.28-.38-.53-.79-.76-1.2 5.48-2.28 9.98-8.47 9.98-18.66.05-3.6-.66-7.18-2.1-10.5 3.92-7.98 7.52-17.52 7.52-29.47C172.47 25.46 153.94 0 127.99 0c-25.95 0-44.48 25.46-44.48 54.02 0 11.95 3.61 21.5 7.53 29.49a25.28 25.28 0 0 0-2.1 10.51c0 10.2 4.49 16.38 9.98 18.66-.23.41-.49.82-.77 1.2-33.93 42.33-62.41-13.35-38.26-38.5 47-49-6.74-52.43-6.94-37.18 7.97-7.56 31.89-.86 7.18 20.01-22.77 19.21-42.46 59.37.62 90.75-33.83 8.14-60.87-20.58-54.59-45.1-10.98 20.21-2.84 58.45 40.74 65.83-46.4 10.64-32.43 74.7.23 64.45-28.01-1.65-24.9-33.89-13.57-43.6 12.54-10.74 28.39-3.17 57.3-8.01-.32 26.02 25.02 40 11.73 54.9-14.08 15.78-33.36-1.26-30.39-16.76-13.44 27.83 24.84 49.97 41.62 17.65 12.93-24.86-21.43-69.75 14.15-69.75s1.21 44.84 14.15 69.75c16.78 32.36 55.06 10.18 41.62-17.65 2.94 15.51-16.3 32.54-30.38 16.77-13.23-14.95 12.04-28.93 11.77-54.95 28.89 4.84 44.74-2.74 57.26 8.01 11.36 9.71 14.46 41.95-13.55 43.6 32.71 10.3 46.66-53.78.25-64.45 43.55-7.37 51.7-45.62 40.72-65.83Z" fill="url(#a)"/>
<path d="M34.1 192.49c12.53-10.75 26.91-1.35 56.78-10 0 0 .42-7.99.8-13.91-9.1 6.85-25.74 5.96-39.63 8-45.7 6.7-35.56 61.6-4.92 57.56-22.67-3.72-24.37-31.94-13.03-41.65Z" fill="url(#b)"/>
<path d="M93.44 153.14c5.05-7.82 5.68-20.41-4.54-8.96-34.53 38.7-94.45 7.08-82.71-40.35C-6.45 121-.38 165.85 46.93 169.66c11.88-3.95 36.33-.9 46.5-16.52Z" fill="url(#c)"/>
<path d="M60.76 148.93s12.13-1.24 20-10.48c-31.98 11.89-58.21-39.68-18.2-74.54 31.11-27.08-.56-37.76-9.64-25.74 3.35-3.31 30.46-1.44 5.75 19.45-22.73 19.26-46.82 59.24 2.09 91.31Z" fill="url(#d)"/>
<path d="M150.99 242.65c-13.32-14.9 0-28.36 2.44-51.84 1.62-15.84-4.3-33.37-25.43-33.37-21.14 0-27.06 17.56-25.43 33.37 2.41 23.48 15.75 36.94 2.44 51.84-14.07 15.76-40.38-.67-32.78-22.02-18.71 31.07 28.78 50.41 45.56 18.1 12.92-24.86-25.37-68.45 10.21-68.45s-2.7 43.59 10.21 68.46c16.78 32.3 64.26 12.96 45.55-18.1 7.6 21.34-18.7 37.76-32.77 22.01Z" fill="url(#e)"/>
<path d="M203.95 176.58c-13.9-2.02-30.55-1.15-39.63-8 .4 5.92.8 13.92.8 13.92 29.86 8.64 44.24-.77 56.77 9.99 11.34 9.7 9.64 37.93-13.07 41.6 30.68 4.1 40.84-50.81-4.87-57.5Z" fill="url(#f)"/>
<path d="M249.81 103.82c11.74 47.42-48.18 79.05-82.72 40.34-10.22-11.46-9.62 1.15-4.53 8.97 10.18 15.63 34.62 12.57 46.5 16.52 47.32-3.8 53.39-48.67 40.75-65.83Z" fill="url(#g)"/>
<path d="M175.25 138.45c7.86 9.24 19.98 10.48 19.98 10.48 48.9-32.03 24.82-72.06 2.02-91.31-24.71-20.89 2.4-22.76 5.75-19.45-9.1-12.02-40.75-1.34-9.64 25.74 40.08 34.86 13.85 86.43-18.11 74.54Z" fill="url(#h)"/>
<path d="M141.14 35.54c0 7.88-13.14 7.88-13.14 0 0-7.89 13.14-7.88 13.14 0Zm-20.7 7.22c0 5.42-9.02 5.42-9.02 0 0-5.43 9.03-5.43 9.03 0Zm5.77-24.98c0 5.44-9.04 5.44-9.04 0s9.04-5.39 9.04 0ZM107.4 56.31c0 2.72-4.52 2.72-4.52 0s4.52-2.72 4.52 0Zm.86-26.69c0 3.76-6.25 3.76-6.25 0s6.25-3.75 6.25 0ZM126.2 62.7c0 3.77-6.25 3.77-6.25 0s6.25-3.74 6.25 0Z" fill="#4B1313" opacity=".3"/>
<path d="M111.95 94c0 14.33-16.26 14.33-16.26 0 0-14.34 16.26-14.34 16.26 0Z" fill="#302D3B"/>
<path d="M103.62 90.34a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0Z" fill="#6F828A"/>
<path d="M160.35 94c0 14.33-16.26 14.33-16.26 0 0-14.34 16.26-14.34 16.26 0Z" fill="#302D3B"/>
<path d="M151.97 90.34a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0Z" fill="#6F828A"/>
<path d="M120.45 122.52c0 8.17-.68 14.79-1.46 14.79-.78 0-1.4-6.62-1.4-14.78.02-8.15.69-14.78 1.47-14.78.8 0 1.4 6.6 1.39 14.77Z" fill="#9E1C20"/>
<ellipse fill="#9E1C20" cx="128.26" cy="122.51" rx="1.07" ry="17.36"/>
<path d="M138.4 122.33c0 7.97-.66 14.43-1.42 14.43-.77 0-1.35-6.44-1.34-14.42.01-7.97.67-14.42 1.42-14.42.75 0 1.36 6.45 1.33 14.41Z" fill="#9E1C20"/>
<path d="M199.04 145.1c-1.67-2.22 8.1-9.56 9.79-7.33 1.7 2.23-8.12 9.56-9.79 7.33Z" fill="#F389A4"/>
<path d="M201.47 143.72c-.76-1 4.59-5.05 5.36-4.04.77 1.01-4.6 5.07-5.36 4.04Z" fill="#E34E70"/>
<path d="M204.83 135.32c-2.03-1.94 5.4-9.57 7.4-7.63 2 1.94-5.44 9.58-7.4 7.63Z" fill="#F389A4"/>
<path d="M206.73 133.84c-.92-.9 3.14-5.06 4.04-4.18.9.88-3.13 5.07-4.04 4.18Z" fill="#E34E70"/>
<path d="M215.35 121.16c-2.67-.82.43-11 3.1-10.18 2.67.82-.48 11-3.1 10.18Z" fill="#F7B3C5"/>
<path d="M216.39 118.96c-1.22-.38.49-5.94 1.69-5.58 1.2.37-.49 5.95-1.69 5.58Z" fill="#E34E70"/>
<path d="M188.05 144.73c-1.19-2.53 9.54-7.55 10.71-5 1.17 2.53-9.54 7.52-10.71 5Z" fill="#F389A4"/>
<path d="M190.67 143.92c-.53-1.17 5.32-3.9 5.87-2.75.54 1.15-5.4 3.9-5.87 2.75Z" fill="#E34E70"/>
<path d="M214.93 130.3c-2.33-1.5 3.45-10.44 5.78-8.92 2.32 1.53-3.42 10.45-5.78 8.93Z" fill="#F7B3C5"/>
<path d="M216.56 128.48c-1.07-.7 2.1-5.58 3.16-4.9 1.06.7-2.1 5.59-3.16 4.9Z" fill="#E34E70"/>
<path d="M171.78 159.11c1.08-2.76 11.12 1.2 10.1 3.97-1 2.77-11.2-1.2-10.1-3.97Z" fill="#F389A4"/>
<path d="M173.92 160.34c.5-1.27 6 .9 5.52 2.16-.48 1.25-6.02-.87-5.52-2.16Z" fill="#E34E70"/>
<path d="M185.92 162.36c.76-3.45 11.12-1.15 10.37 2.3-.74 3.44-11.14 1.15-10.37-2.3Z" fill="#F389A4"/>
<path d="M188.18 163.37c.35-1.59 6.06-.32 5.68 1.24-.39 1.57-6.04.28-5.68-1.24Z" fill="#E34E70"/>
<path d="M163 147.1c2.55-2.8 11.3 5.17 8.77 7.96-2.54 2.79-11.31-5.16-8.76-7.96Z" fill="#F389A4"/>
<path d="M164.66 149.21c1.18-1.28 5.96 3.09 4.8 4.36-1.17 1.28-5.96-3.03-4.8-4.36Z" fill="#E34E70"/>
<path d="M199.88 166.23c0-2.4 8.98-2.22 8.93.18-.05 2.4-8.99 2.24-8.93-.18Z" fill="#F7B3C5"/>
<path d="M201.88 166.58c0-1.1 4.9-1 4.9.08-.01 1.1-4.92 1.02-4.9-.08Z" fill="#E34E70"/>
<path d="M166.73 175.7c.75-3.44 11.12-1.15 10.38 2.3-.74 3.45-11.14 1.15-10.38-2.3Z" fill="#F389A4"/>
<path d="M168.98 176.66c.35-1.58 6.07-.33 5.68 1.25-.38 1.57-6.03.31-5.68-1.25Z" fill="#E34E70"/>
<path d="M121.7 164.45c0-3.53 12.55-3.7 12.6-.16.05 3.54-12.56 3.7-12.6.16Z" fill="#F389A4"/>
<path d="M124.55 164.87c0-1.62 6.87-1.71 6.9-.1.03 1.6-6.88 1.7-6.9.1Z" fill="#E34E70"/>
<path d="M137.96 168.68c2.45-2.54 10.1 4.89 7.6 7.42-2.49 2.52-10.06-4.89-7.6-7.42Z" fill="#F389A4"/>
<path d="M139.36 170.68c1.14-1.16 5.3 2.9 4.19 4.04-1.11 1.14-5.3-2.9-4.19-4.04Z" fill="#E34E70"/>
<path d="M150.12 178.72c3.52.19 2.93 10.81-.6 10.62-3.53-.19-2.93-10.8.6-10.62Z" fill="#F7B3C5"/>
<path d="M149.53 181.1c1.62.08 1.3 5.9-.3 5.8-1.6-.09-1.3-5.9.3-5.8Z" fill="#E34E70"/>
<path d="M144.06 189.44c3.46.71 1.34 11.12-2.12 10.45-3.46-.68-1.33-11.14 2.12-10.45Z" fill="#F7B3C5"/>
<path d="M143.16 191.68c1.59.33.43 6.06-1.15 5.72-1.58-.34-.43-6 1.15-5.72Z" fill="#E34E70"/>
<path d="M147.48 200.53c3.46.71 1.33 11.12-2.12 10.44-3.46-.69-1.34-11.13 2.12-10.44Z" fill="#F7B3C5"/>
<path d="M146.56 202.8c1.59.32.43 6.06-1.15 5.71-1.59-.35-.42-6.04 1.15-5.71Z" fill="#E34E70"/>
<path d="M139.56 212.1c3.45.7 1.34 11.12-2.12 10.42-3.46-.7-1.35-11.13 2.12-10.42Z" fill="#F7B3C5"/>
<path d="M138.63 214.36c1.6.34.44 6.07-1.14 5.72-1.57-.36-.4-6.04 1.14-5.72Z" fill="#E34E70"/>
<path d="M141.53 224.3c3.51.12 3.12 10.76-.4 10.63-3.54-.13-3.14-10.77.4-10.64Z" fill="#F7B3C5"/>
<path d="M140.98 226.69c1.63.07 1.4 5.88-.2 5.82-1.61-.06-1.4-5.88.2-5.82Z" fill="#E34E70"/>
<path d="M139.77 239.36c2.74-2.23 8.35 4.69 5.6 6.91-2.75 2.23-8.34-4.7-5.6-6.91Z" fill="#F7B3C5"/>
<path d="M140.69 241.22c1.26-1.01 4.32 2.77 3.03 3.78-1.3 1-4.28-2.77-3.03-3.78Z" fill="#E34E70"/>
<path d="M149 245.9c1.42-2.56 7.9 1.02 6.48 3.57-1.42 2.54-7.89-1-6.47-3.56Z" fill="#F389A4"/>
<path d="M150.29 247.04c.65-1.18 4.18.77 3.55 1.93-.64 1.16-4.2-.76-3.55-1.93Z" fill="#E34E70"/>
<path d="M157.17 253.73c.22-2.66 6.56-2.14 6.34.52-.22 2.66-6.56 2.13-6.34-.52Z" fill="#F389A4"/>
<path d="M158.58 254.18c.1-1.22 3.57-.94 3.48.27-.1 1.21-3.58.92-3.48-.27Z" fill="#E34E70"/>
<path d="M166.05 252.15c-.57-2.37 5.05-3.74 5.64-1.37.59 2.37-5.06 3.73-5.64 1.37Z" fill="#F389A4"/>
<path d="M167.42 252.13c-.25-1.08 2.83-1.82 3.1-.76.26 1.06-2.86 1.84-3.1.76Z" fill="#E34E70"/>
<path d="M174.56 252.34c-.93-2.26 4.44-4.48 5.36-2.23.92 2.26-4.4 4.43-5.36 2.23Z" fill="#F389A4"/>
<path d="M175.88 252.06c-.41-1 2.52-2.23 2.95-1.22.42 1.01-2.52 2.26-2.95 1.22Z" fill="#E34E70"/>
<path d="M179.35 246.33c-1.78-1.66 2.19-5.91 3.95-4.25 1.77 1.65-2.17 5.91-3.95 4.25Z" fill="#F389A4"/>
<path d="M180.47 245.57c-.8-.76 1.35-3.09 2.16-2.33.8.76-1.35 3.1-2.16 2.33Z" fill="#E34E70"/>
<path d="M185.9 238.73c-2.34-.67-.73-6.26 1.61-5.57 2.33.69.7 6.26-1.62 5.57Z" fill="#F389A4"/>
<path d="M186.55 237.56c-1.01-.32-.18-3.37.88-3.04 1.06.34.21 3.36-.88 3.04Z" fill="#E34E70"/>
<path d="M179.64 184.17c.3-3.51 10.9-2.6 10.58.93-.31 3.52-10.9 2.6-10.58-.93Z" fill="#F389A4"/>
<path d="M181.99 184.82c.15-1.62 5.93-1.1 5.8.5-.15 1.6-5.94 1.1-5.8-.5Z" fill="#E34E70"/>
<path d="M192.35 180.46c.07-3.46 10.7-3.25 10.62.23-.08 3.48-10.7 3.25-10.62-.23Z" fill="#F7B3C5"/>
<path d="M194.72 180.96c0-1.6 5.84-1.47 5.81.11-.03 1.58-5.81 1.5-5.81-.11Z" fill="#E34E70"/>
<path d="M204.4 184.86c.75-3.33 10-1.22 9.22 2.14-.79 3.35-10 1.22-9.23-2.14Z" fill="#F7B3C5"/>
<path d="M206.38 185.77c.36-1.52 5.41-.36 5.06 1.16-.36 1.51-5.41.38-5.06-1.16Z" fill="#E34E70"/>
<path d="M217.25 185.12c1.57-3.04 9.3.93 7.71 4.04-1.58 3.11-9.28-.98-7.71-4.04Z" fill="#FACFDA"/>
<path d="M218.8 186.41c.72-1.4 4.93.79 4.23 2.16-.7 1.38-4.95-.77-4.23-2.16Z" fill="#E34E70"/>
<path d="M225.4 193.87c2.55-1.15 5.49 5.34 2.92 6.5-2.57 1.14-5.5-5.34-2.92-6.5Z" fill="#FACFDA"/>
<path d="M225.73 195.5c1.17-.54 2.77 3.03 1.62 3.54-1.15.5-2.8-3.03-1.62-3.54Z" fill="#E34E70"/>
<path d="M232.56 201.7c2.8 0 2.78 7.13 0 7.08-2.78-.05-2.8-7.08 0-7.07Z" fill="#FACFDA"/>
<path d="M232.19 203.32c1.3 0 1.28 3.9 0 3.9s-1.27-3.9 0-3.9Z" fill="#E34E70"/>
<path d="M229.82 210.89c2.5.45 1.33 6.83-1.18 6.36-2.5-.48-1.33-6.8 1.18-6.36Z" fill="#FACFDA"/>
<path d="M229.23 212.3c1.16.22.51 3.7-.63 3.49-1.14-.21-.52-3.7.63-3.49Z" fill="#E34E70"/>
<path d="M230.1 220.12c2.02 1.12-.85 6.23-2.87 5.05-2.02-1.18.85-6.2 2.87-5.05Z" fill="#FACFDA"/>
<path d="M229.23 221.12c.92.52-.65 3.31-1.57 2.79-.92-.53.64-3.3 1.57-2.8Z" fill="#E34E70"/>
<path d="M224.1 226.91c1.4 1.37-2.08 4.94-3.48 3.56-1.4-1.39 2.07-4.94 3.47-3.56Z" fill="#FACFDA"/>
<path d="M223.13 227.54c.65.63-1.26 2.58-1.9 1.95-.63-.63 1.26-2.58 1.9-1.95Z" fill="#E34E70"/>
<path d="M210.6 164.77c-.8-3.36 9.54-5.82 10.35-2.43.8 3.38-9.54 5.83-10.35 2.43Z" fill="#F7B3C5"/>
<path d="M213.05 164.66c-.36-1.55 5.28-2.89 5.66-1.35.37 1.53-5.3 2.89-5.66 1.35Z" fill="#E34E70"/>
<path d="M223.85 165.68c-1.01-2.88 9.02-6.4 10.03-3.5 1 2.89-9.03 6.4-10.03 3.5Z" fill="#FACFDA"/>
<path d="M226.25 165.26c-.47-1.34 5.05-3.25 5.49-1.93.43 1.31-5.03 3.25-5.5 1.93Z" fill="#E34E70"/>
<path d="M232.9 158.12c-2.02-2.27 5.82-9.42 7.88-7.16 2.06 2.27-5.83 9.43-7.88 7.16Z" fill="#FACFDA"/>
<path d="M234.94 156.79c-.94-1.01 3.38-4.95 4.3-3.93.94 1.03-3.36 4.96-4.3 3.93Z" fill="#E34E70"/>
<path d="M245.77 150.8c-2.56-1.7 3.35-10.56 5.9-8.86 2.55 1.7-3.38 10.55-5.9 8.85Z" fill="#FACFDA"/>
<path d="M247.41 149c-1.16-.79 2.08-5.6 3.23-4.85 1.15.76-2.06 5.62-3.23 4.85Z" fill="#E34E70"/>
<path d="M249.4 138.16c-2.88-1.08.9-11.03 3.76-9.95 2.85 1.07-.91 11.05-3.76 9.95Z" fill="#FACFDA"/>
<path d="M250.6 136.07c-1.3-.5.77-5.94 2.03-5.45 1.26.5-.72 5.93-2.02 5.45Z" fill="#E34E70"/>
<path d="M254.68 124.42c-2.24.26-3.1-7.57-.86-7.82 2.25-.25 3.12 7.57.86 7.82Z" fill="#FACFDA"/>
<path d="M254.77 122.63c-1 .1-1.48-4.18-.47-4.28 1-.1 1.5 4.15.47 4.28Z" fill="#E34E70"/>
<path d="M222.28 113.04c-2.76-.33-1.46-10.9 1.3-10.55 2.76.35 1.46 10.9-1.3 10.55Z" fill="#F7B3C5"/>
<path d="M222.93 110.7c-1.27-.16-.56-5.94.7-5.79 1.25.15.56 5.94-.7 5.79Z" fill="#E34E70"/>
<path d="M218.15 104.58c-2.77.23-3.63-10.38-.84-10.6 2.79-.23 3.63 10.38.84 10.6Z" fill="#F7B3C5"/>
<path d="M218.31 102.14c-1.27.1-1.73-5.69-.46-5.8 1.26-.11 1.73 5.71.46 5.8Z" fill="#E34E70"/>
<path d="M221.13 91.37c-2.53 1.17-6.94-8.5-4.4-9.67 2.53-1.16 6.95 8.52 4.4 9.67Z" fill="#F7B3C5"/>
<path d="M220.45 89.04c-1.15.53-3.56-4.75-2.42-5.29 1.14-.53 3.59 4.8 2.42 5.29Z" fill="#E34E70"/>
<path d="M212.72 83.59c-2.27 1.27-7.08-7.38-4.8-8.64 2.3-1.27 7.1 7.37 4.8 8.64Z" fill="#F7B3C5"/>
<path d="M211.9 81.48c-1 .58-3.66-4.14-2.62-4.72 1.05-.6 3.7 4.13 2.62 4.72Z" fill="#E34E70"/>
<path d="M211.16 72.92c-1.94 1.52-7.52-5.64-5.56-7.16 1.97-1.53 7.54 5.6 5.56 7.16Z" fill="#F7B3C5"/>
<path d="M210.15 71.1c-.89.7-3.94-3.21-3.03-3.9.91-.7 3.93 3.2 3.03 3.9Z" fill="#E34E70"/>
<path d="M201.8 68.57c-1.88 1.62-7.8-5.25-5.92-6.87s7.76 5.25 5.91 6.87Z" fill="#F7B3C5"/>
<path d="M200.65 66.8c-.85.76-4.04-3.03-3.23-3.74.8-.72 4.1 3 3.23 3.75Z" fill="#E34E70"/>
<path d="M197.54 59.4c-1.7 1.46-6.53-4.16-4.83-5.61 1.7-1.46 6.53 4.15 4.83 5.62Z" fill="#F7B3C5"/>
<path d="M196.66 57.94c-.78.67-3.43-2.4-2.65-3.03.78-.63 3.42 2.37 2.65 3.03Z" fill="#E34E70"/>
<path d="M189.42 57.6c-1.9 1.15-5.75-5.19-3.83-6.35 1.92-1.16 5.76 5.17 3.83 6.35Z" fill="#F389A4"/>
<path d="M188.8 56.01c-.87.53-2.98-2.93-2.1-3.47.86-.53 2.96 2.94 2.1 3.47Z" fill="#E34E70"/>
<path d="M188.65 49.98c-2.13.63-3.78-4.87-1.63-5.5 2.16-.64 3.75 4.86 1.63 5.5Z" fill="#F389A4"/>
<path d="M188.51 48.65c-1.01.3-1.87-2.72-.89-3.03.98-.32 1.87 2.74.9 3.03Z" fill="#E34E70"/>
<path d="M182.74 43.86c-2.1-.74-.2-6.16 1.9-5.41 2.12.75.21 6.17-1.9 5.4Z" fill="#F389A4"/>
<path d="M183.44 42.73c-1.01-.33.08-3.3 1-2.96.94.35-.04 3.29-1 2.96Z" fill="#E34E70"/>
<path d="M188.09 37.59c-.36-2.2 5.3-3.1 5.66-.88.35 2.21-5.32 3.11-5.66.88Z" fill="#F389A4"/>
<path d="M189.41 37.67c-.16-1.01 2.94-1.49 3.1-.49.15 1-2.94 1.5-3.1.49Z" fill="#E34E70"/>
<path d="M56.97 145.1c1.66-2.22-8.1-9.56-9.8-7.33-1.7 2.23 8.12 9.56 9.8 7.33Z" fill="#F389A4"/>
<path d="M54.53 143.72c.76-1-4.59-5.05-5.36-4.04-.77 1.01 4.6 5.07 5.36 4.04Z" fill="#E34E70"/>
<path d="M51.17 135.32c2.03-1.94-5.4-9.57-7.4-7.63-2 1.94 5.44 9.58 7.4 7.63Z" fill="#F389A4"/>
<path d="M49.27 133.84c.92-.9-3.14-5.06-4.04-4.18-.9.88 3.13 5.07 4.04 4.18Z" fill="#E34E70"/>
<path d="M40.65 121.16c2.67-.82-.43-11-3.1-10.18-2.67.82.48 11 3.1 10.18Z" fill="#F7B3C5"/>
<path d="M39.61 118.96c1.22-.38-.49-5.94-1.69-5.58-1.2.37.49 5.95 1.69 5.58Z" fill="#E34E70"/>
<path d="M67.96 144.73c1.18-2.53-9.55-7.55-10.72-5-1.17 2.53 9.54 7.52 10.72 5Z" fill="#F389A4"/>
<path d="M65.38 143.92c.53-1.17-5.32-3.9-5.87-2.75-.54 1.15 5.34 3.9 5.87 2.75Z" fill="#E34E70"/>
<path d="M41.07 130.3c2.33-1.5-3.45-10.44-5.78-8.92-2.32 1.53 3.42 10.45 5.78 8.93Z" fill="#F7B3C5"/>
<path d="M39.44 128.48c1.07-.7-2.1-5.58-3.16-4.9-1.06.7 2.1 5.59 3.16 4.9Z" fill="#E34E70"/>
<path d="M84.7 158.8c-1.2-3.02-12.57 1.42-11.38 4.49 1.2 3.06 12.58-1.43 11.37-4.48Z" fill="#F389A4"/>
<path d="M82.28 160.21c-.56-1.4-6.77 1.02-6.24 2.44.54 1.43 6.78-1.05 6.24-2.44Z" fill="#E34E70"/>
<path d="M70.08 162.36c-.76-3.45-11.12-1.15-10.37 2.3.74 3.44 11.14 1.15 10.37-2.3Z" fill="#F389A4"/>
<path d="M67.82 163.37c-.35-1.59-6.06-.32-5.68 1.24.39 1.57 6.04.28 5.68-1.24Z" fill="#E34E70"/>
<path d="M93 147.1c-2.55-2.8-11.3 5.17-8.77 7.96 2.54 2.79 11.31-5.16 8.76-7.96Z" fill="#F389A4"/>
<path d="M91.34 149.21c-1.18-1.28-5.96 3.09-4.8 4.36 1.17 1.28 5.96-3.03 4.8-4.36Z" fill="#E34E70"/>
<path d="M57.61 165.96c-.07-2.6-9.24-2.46-9.16.14.09 2.6 9.23 2.47 9.16-.14Z" fill="#F7B3C5"/>
<path d="M55.55 166.32c0-1.2-5.05-1.1-5.05.07 0 1.17 5.08 1.12 5.05-.07Z" fill="#E34E70"/>
<path d="M89.27 175.7c-.75-3.44-11.12-1.15-10.38 2.3.74 3.45 11.14 1.15 10.38-2.3Z" fill="#F389A4"/>
<path d="M87.02 176.66c-.35-1.58-6.07-.33-5.68 1.25.38 1.57 6.03.31 5.68-1.25Z" fill="#E34E70"/>
<path d="M118.59 169.33c-2.02-2.89-10.74 3.2-8.71 6.07 2.02 2.86 10.73-3.16 8.7-6.07Z" fill="#F389A4"/>
<path d="M116.88 171.08c-.94-1.32-5.7 2.02-4.78 3.33.9 1.3 5.69-2.01 4.78-3.33Z" fill="#E34E70"/>
<path d="M105.88 178.72c-3.52.19-2.93 10.81.6 10.62 3.53-.19 2.93-10.8-.6-10.62Z" fill="#F7B3C5"/>
<path d="M106.47 181.1c-1.62.08-1.3 5.9.3 5.8 1.6-.09 1.3-5.9-.3-5.8Z" fill="#E34E70"/>
<path d="M111.94 189.44c-3.46.71-1.34 11.12 2.12 10.45 3.46-.68 1.33-11.14-2.12-10.45Z" fill="#F7B3C5"/>
<path d="M112.84 191.68c-1.59.33-.43 6.06 1.15 5.72 1.58-.34.43-6-1.15-5.72Z" fill="#E34E70"/>
<path d="M108.52 200.53c-3.46.71-1.33 11.12 2.12 10.44 3.46-.69 1.34-11.13-2.12-10.44Z" fill="#F7B3C5"/>
<path d="M109.44 202.8c-1.59.32-.43 6.06 1.15 5.71 1.59-.35.42-6.04-1.15-5.71Z" fill="#E34E70"/>
<path d="M116.44 212.1c-3.45.7-1.34 11.12 2.12 10.42 3.46-.7 1.35-11.13-2.12-10.42Z" fill="#F7B3C5"/>
<path d="M117.37 214.36c-1.6.34-.44 6.07 1.14 5.72 1.57-.36.4-6.04-1.14-5.72Z" fill="#E34E70"/>
<path d="M114.47 224.3c-3.5.12-3.12 10.76.4 10.63 3.54-.13 3.14-10.77-.4-10.64Z" fill="#F7B3C5"/>
<path d="M115.02 226.69c-1.63.07-1.4 5.88.2 5.82 1.61-.06 1.4-5.88-.2-5.82Z" fill="#E34E70"/>
<path d="M116.23 239.36c-2.74-2.23-8.35 4.69-5.6 6.91 2.75 2.23 8.34-4.7 5.6-6.91Z" fill="#F7B3C5"/>
<path d="M115.31 241.22c-1.26-1.01-4.32 2.77-3.03 3.78 1.3 1 4.28-2.77 3.03-3.78Z" fill="#E34E70"/>
<path d="M107 245.9c-1.42-2.56-7.9 1.02-6.48 3.57 1.42 2.54 7.89-1 6.47-3.56Z" fill="#F389A4"/>
<path d="M105.76 247.04c-.65-1.18-4.18.77-3.55 1.93.64 1.16 4.15-.76 3.55-1.93Z" fill="#E34E70"/>
<path d="M98.83 253.73c-.22-2.66-6.56-2.14-6.34.52.22 2.66 6.56 2.13 6.34-.52Z" fill="#F389A4"/>
<path d="M97.42 254.18c-.1-1.22-3.57-.94-3.48.27.1 1.21 3.58.92 3.48-.27Z" fill="#E34E70"/>
<path d="M89.95 252.15c.57-2.37-5.05-3.74-5.64-1.37-.59 2.37 5.06 3.73 5.64 1.37Z" fill="#F389A4"/>
<path d="M88.58 252.13c.25-1.08-2.83-1.82-3.1-.76-.26 1.06 2.86 1.84 3.1.76Z" fill="#E34E70"/>
<path d="M81.44 252.34c.93-2.26-4.44-4.48-5.36-2.23-.92 2.26 4.4 4.43 5.36 2.23Z" fill="#F389A4"/>
<path d="M80.12 252.06c.41-1-2.52-2.23-2.95-1.22-.42 1.01 2.52 2.26 2.95 1.22Z" fill="#E34E70"/>
<path d="M76.65 246.33c1.78-1.66-2.19-5.91-3.95-4.25-1.77 1.65 2.17 5.91 3.95 4.25Z" fill="#F389A4"/>
<path d="M75.53 245.57c.8-.76-1.35-3.09-2.16-2.33-.8.76 1.35 3.1 2.16 2.33Z" fill="#E34E70"/>
<path d="M70.1 238.73c2.34-.67.73-6.26-1.61-5.57-2.33.69-.7 6.26 1.62 5.57Z" fill="#F389A4"/>
<path d="M69.45 237.56c1.01-.32.18-3.37-.88-3.04-1.06.34-.21 3.36.88 3.04Z" fill="#E34E70"/>
<path d="M76.36 184.17c-.3-3.51-10.9-2.6-10.58.93.31 3.52 10.9 2.6 10.58-.93Z" fill="#F389A4"/>
<path d="M74.01 184.82c-.15-1.62-5.93-1.1-5.8.5.15 1.6 5.94 1.1 5.8-.5Z" fill="#E34E70"/>
<path d="M63.65 180.46c-.07-3.46-10.7-3.25-10.62.23.08 3.48 10.7 3.25 10.62-.23Z" fill="#F7B3C5"/>
<path d="M61.28 180.96c0-1.6-5.84-1.47-5.81.11.03 1.58 5.81 1.5 5.81-.11Z" fill="#E34E70"/>
<path d="M51.6 184.86c-.75-3.33-10-1.22-9.22 2.14.78 3.35 10 1.22 9.23-2.14Z" fill="#F7B3C5"/>
<path d="M49.62 185.77c-.36-1.52-5.41-.36-5.06 1.16.36 1.51 5.41.38 5.06-1.16Z" fill="#E34E70"/>
<path d="M38.75 185.12c-1.57-3.04-9.3.93-7.71 4.04 1.58 3.11 9.28-.98 7.71-4.04Z" fill="#FACFDA"/>
<path d="M37.2 186.41c-.72-1.4-4.93.79-4.23 2.16.7 1.38 4.95-.77 4.23-2.16Z" fill="#E34E70"/>
<path d="M30.6 193.87c-2.55-1.15-5.49 5.34-2.92 6.5 2.57 1.14 5.5-5.34 2.92-6.5Z" fill="#FACFDA"/>
<path d="M30.27 195.5c-1.17-.54-2.77 3.03-1.62 3.54 1.15.5 2.8-3.03 1.62-3.54Z" fill="#E34E70"/>
<path d="M23.44 201.7c-2.8 0-2.78 7.13 0 7.08 2.78-.05 2.8-7.08 0-7.07Z" fill="#FACFDA"/>
<path d="M23.81 203.32c-1.3 0-1.28 3.9 0 3.9s1.28-3.9 0-3.9Z" fill="#E34E70"/>
<path d="M26.18 210.89c-2.5.45-1.33 6.83 1.18 6.36 2.5-.48 1.33-6.8-1.18-6.36Z" fill="#FACFDA"/>
<path d="M26.77 212.3c-1.16.22-.51 3.7.63 3.49 1.14-.21.52-3.7-.63-3.49Z" fill="#E34E70"/>
<path d="M25.9 220.12c-2.02 1.12.85 6.23 2.87 5.05 2.02-1.18-.85-6.2-2.87-5.05Z" fill="#FACFDA"/>
<path d="M26.77 221.12c-.92.52.65 3.31 1.57 2.79.92-.53-.64-3.3-1.57-2.8Z" fill="#E34E70"/>
<path d="M31.9 226.91c-1.4 1.37 2.03 4.94 3.48 3.56 1.46-1.39-2.07-4.94-3.47-3.56Z" fill="#FACFDA"/>
<path d="M32.87 227.54c-.65.63 1.26 2.58 1.9 1.95.63-.63-1.26-2.58-1.9-1.95Z" fill="#E34E70"/>
<path d="M45.4 164.77c.8-3.36-9.54-5.82-10.35-2.43-.8 3.38 9.54 5.83 10.35 2.43Z" fill="#F7B3C5"/>
<path d="M42.95 164.66c.36-1.55-5.28-2.89-5.66-1.35-.37 1.53 5.3 2.89 5.66 1.35Z" fill="#E34E70"/>
<path d="M32.15 165.68c1.01-2.88-9.02-6.4-10.03-3.5-1 2.89 9.03 6.4 10.03 3.5Z" fill="#FACFDA"/>
<path d="M29.75 165.26c.47-1.34-5.05-3.25-5.49-1.93-.43 1.31 5.03 3.25 5.5 1.93Z" fill="#E34E70"/>
<path d="M23.1 158.12c2.02-2.27-5.82-9.42-7.88-7.16-2.06 2.27 5.83 9.43 7.88 7.16Z" fill="#FACFDA"/>
<path d="M21.06 156.79c.94-1.01-3.38-4.95-4.3-3.93-.94 1.03 3.36 4.96 4.3 3.93Z" fill="#E34E70"/>
<path d="M10.23 150.8c2.56-1.7-3.35-10.56-5.9-8.86-2.55 1.7 3.38 10.55 5.9 8.85Z" fill="#FACFDA"/>
<path d="M8.59 149c1.16-.79-2.03-5.6-3.23-4.85-1.2.76 2.06 5.62 3.23 4.85Z" fill="#E34E70"/>
<path d="M6.6 138.16c2.88-1.08-.9-11.03-3.76-9.95-2.85 1.07.91 11.05 3.76 9.95Z" fill="#FACFDA"/>
<path d="M5.4 136.07c1.3-.5-.77-5.94-2.03-5.45-1.26.5.72 5.93 2.02 5.45Z" fill="#E34E70"/>
<path d="M1.32 124.42c2.24.26 3.1-7.57.86-7.82-2.25-.25-3.12 7.57-.86 7.82Z" fill="#FACFDA"/>
<path d="M1.23 122.63c1 .1 1.48-4.18.47-4.28-1-.1-1.5 4.15-.47 4.28Z" fill="#E34E70"/>
<path d="M33.72 113.04c2.76-.33 1.46-10.9-1.3-10.55-2.76.35-1.46 10.9 1.3 10.55Z" fill="#F7B3C5"/>
<path d="M33.07 110.7c1.27-.16.56-5.94-.7-5.79-1.25.15-.56 5.94.7 5.79Z" fill="#E34E70"/>
<path d="M37.85 104.58c2.77.23 3.63-10.38.84-10.6-2.79-.23-3.63 10.38-.84 10.6Z" fill="#F7B3C5"/>
<path d="M37.69 102.14c1.27.1 1.73-5.69.46-5.8-1.26-.11-1.73 5.71-.46 5.8Z" fill="#E34E70"/>
<path d="M34.87 91.37c2.53 1.17 6.94-8.5 4.4-9.67-2.53-1.16-6.95 8.52-4.4 9.67Z" fill="#F7B3C5"/>
<path d="M35.55 89.04c1.15.53 3.56-4.75 2.42-5.29-1.14-.53-3.59 4.8-2.42 5.29Z" fill="#E34E70"/>
<path d="M43.28 83.59c2.27 1.27 7.08-7.38 4.8-8.64-2.3-1.27-7.1 7.37-4.8 8.64Z" fill="#F7B3C5"/>
<path d="M44.1 81.48c1 .58 3.66-4.14 2.62-4.72-1.05-.6-3.7 4.13-2.62 4.72Z" fill="#E34E70"/>
<path d="M44.84 72.92c1.94 1.52 7.52-5.64 5.56-7.16-1.97-1.53-7.54 5.6-5.56 7.16Z" fill="#F7B3C5"/>
<path d="M45.85 71.1c.89.7 3.94-3.21 3.03-3.9-.91-.7-3.93 3.2-3.03 3.9Z" fill="#E34E70"/>
<path d="M54.2 68.57c1.88 1.62 7.8-5.25 5.92-6.87s-7.76 5.25-5.91 6.87Z" fill="#F7B3C5"/>
<path d="M55.35 66.8c.85.76 4.04-3.03 3.23-3.74-.8-.72-4.1 3-3.23 3.75Z" fill="#E34E70"/>
<path d="M58.46 59.4c1.7 1.46 6.53-4.16 4.83-5.61-1.7-1.46-6.53 4.15-4.83 5.62Z" fill="#F7B3C5"/>
<path d="M59.34 57.94c.78.67 3.43-2.4 2.65-3.03-.78-.63-3.42 2.37-2.65 3.03Z" fill="#E34E70"/>
<path d="M66.58 57.6c1.9 1.15 5.75-5.19 3.83-6.35-1.92-1.16-5.76 5.17-3.83 6.35Z" fill="#F389A4"/>
<path d="M67.2 56.01c.87.53 2.98-2.93 2.1-3.47-.86-.53-2.96 2.94-2.1 3.47Z" fill="#E34E70"/>
<path d="M67.35 49.98c2.13.63 3.78-4.87 1.63-5.5-2.16-.64-3.75 4.86-1.63 5.5Z" fill="#F389A4"/>
<path d="M67.49 48.65c1.01.3 1.87-2.72.89-3.03-.98-.32-1.87 2.74-.9 3.03Z" fill="#E34E70"/>
<path d="M73.26 43.86c2.1-.74.21-6.16-1.9-5.41-2.13.75-.21 6.17 1.9 5.4Z" fill="#F389A4"/>
<path d="M72.56 42.73c1.01-.33-.08-3.3-1-2.96-.94.35.04 3.29 1 2.96Z" fill="#E34E70"/>
<path d="M67.91 37.59c.36-2.2-5.3-3.1-5.66-.88-.35 2.21 5.32 3.11 5.66.88Z" fill="#F389A4"/>
<path d="M66.59 37.67c.16-1.01-2.94-1.49-3.1-.49-.15 1 2.94 1.5 3.1.49Z" fill="#E34E70"/>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

3
static/robots.txt Normal file
View File

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Allow: /

View File

@ -1,13 +1,32 @@
import adapter from '@sveltejs/adapter-auto'; import adapter from '@sveltejs/adapter-auto';
import { vitePreprocess } from '@sveltejs/kit/vite'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
// Extensions:
import { mdsvex, escapeSvelte } from 'mdsvex';
import shiki from 'shiki';
// Markdown config:
/** @type {import('mdsvex').MdsvexOptions} */
const mdsvexOptions = {
extensions: ['.md'],
highlight: {
highlighter: async (code, lang = 'text') => {
const highlighter = await shiki.getHighlighter({ theme: 'vitesse-dark' });
const html = escapeSvelte(highlighter.codeToHtml(code, { lang }));
return `{@html \`${html}\` }`;
}
}
};
// Svelte config:
/** @type {import('@sveltejs/kit').Config} */ /** @type {import('@sveltejs/kit').Config} */
const config = { const config = {
preprocess: vitePreprocess(), extensions: ['.svelte', '.md'],
preprocess: [vitePreprocess(), mdsvex(mdsvexOptions)],
kit: { kit: {
adapter: adapter(), adapter: adapter(),
alias: { alias: {
'@': './src/*', '@': './src/*'
} }
} }
}; };

View File

@ -9,7 +9,8 @@ module.exports = {
light: '#f5f5f5' light: '#f5f5f5'
}, },
fontFamily: { fontFamily: {
sans: ['General-Sans', 'sans-serif'] sans: ['InterVariable', 'sans-serif'],
mono: ['GeistMono', 'monospace']
}, },
fontSize: { fontSize: {
mini: '14px' mini: '14px'
@ -17,6 +18,7 @@ module.exports = {
} }
}, },
plugins: [ plugins: [
require('@tailwindcss/typography'),
({ addUtilities }) => { ({ addUtilities }) => {
addUtilities({ addUtilities({
'.text-balance': { '.text-balance': {

View File

@ -10,8 +10,4 @@
"sourceMap": true, "sourceMap": true,
"strict": true "strict": true
} }
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
//
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
// from the referenced tsconfig.json - TypeScript does not merge them in
} }