Merge branch 'next' into main

This commit is contained in:
Pablo Hdez 2024-01-25 16:00:23 +00:00 committed by GitHub
commit 7dd3854193
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
33 changed files with 923 additions and 614 deletions

View File

@ -1,17 +1,20 @@
---
name: Request SVG.
about: Request an SVG here.
title: "[Request]:"
title: '🔔 [Request]:'
labels: request
assignees: pheralb
---
## 🔎 Information:
- **Title**:
- **Category**:
- **Source (.svg)**:
- **Website**:
## Checklist (required):
## 📝 Checklist:
- [x] #739
- [x] I have permission to use this logo.
- [x] The link I have provided is optimized for web use.
- [x] The size of the SVG is less than **20kb**.

View File

@ -10,6 +10,10 @@
Discover
</a>
<span>&nbsp;&nbsp;</span>
<a href="https://github.com/pheralb/svgl/issues/new?assignees=pheralb&labels=request&projects=&template=request-svg-.md&title=%5BRequest%5D%3A">
Request logo
</a>
<span>&nbsp;&nbsp;</span>
<a href="#-getting-started">
Submit logo
</a>
@ -100,10 +104,22 @@ pnpm install
"category": "Category",
"route": "/library/your_logo.svg",
"url": "Website"
},
}
```
- If the logo has light and dark mode:
- If the logo has logo + wordmark version:
```json
{
"title": "Title",
"category": "Category",
"route": "/library/your_logo.svg",
"wordmark": "/library/your_logo_wordmark.svg",
"url": "Website"
}
```
- If the logo/wordmark has light and dark mode:
```json
{
@ -113,37 +129,18 @@ pnpm install
"light": "/library/your_logo_light.svg",
"dark": "/library/your_logo_dark.svg"
},
"url": "Website"
},
```
- If the logo has logo + wordmark version:
```json
// Only solid color:
{
"title": "Title",
"category": "Category",
"route": "/library/your_logo.svg",
"wordmark": "/library/your_logo_wordmark.svg",
"url": "Website"
},
// Add light/dark mode:
{
"title": "Title",
"category": "Category",
"route": "/library/your_logo.svg",
"wordmark": {
"light": "/library/your_logo_wordmark_light.svg",
"dark": "/library/your_logo_wordmark_dark.svg"
"light": "/library/your_wordmark-logo_light.svg",
"dark": "/library/your_wordmark-logo_dark.svg"
},
"url": "Website"
},
}
```
> [!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.
>
> - 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.
> - You can add multiple categories to the same logo, for example: `"category": ["Social", "Design"]` (max 3 categories per logo).
And create a pull request with your logo 🚀.

View File

@ -1,7 +1,7 @@
{
"name": "svgl",
"author": "@pheralb_",
"version": "4.0.0",
"version": "4.1.0",
"description": "A beautiful library with SVG logos.",
"private": true,
"license": "MIT",
@ -30,45 +30,44 @@
"build:figma": "concurrently -n plugin,svelte 'npm run build:plugin -- --define:SITE_URL=\\\"$npm_package_config_siteURL\\\"' 'npm run build'"
},
"dependencies": {
"@figma/plugin-typings": "^1.82.0",
"@figma/plugin-typings": "1.84.0",
"@upstash/ratelimit": "1.0.0",
"@upstash/redis": "1.25.2",
"bits-ui": "0.11.8",
"clsx": "2.0.0",
"@upstash/redis": "1.28.2",
"bits-ui": "0.15.1",
"clsx": "2.1.0",
"downloadjs": "1.4.7",
"jszip": "3.10.1",
"lucide-svelte": "0.298.0",
"lucide-svelte": "0.314.0",
"shiki": "0.14.7",
"svelte-sonner": "0.3.6",
"tailwind-merge": "2.1.0"
"tailwind-merge": "2.2.1"
},
"devDependencies": {
"@sveltejs/adapter-auto": "3.0.0",
"@sveltejs/kit": "2.0.0",
"@sveltejs/adapter-auto": "3.1.1",
"@sveltejs/kit": "2.4.3",
"@sveltejs/vite-plugin-svelte": "3.0.1",
"@tailwindcss/typography": "0.5.10",
"@types/downloadjs": "1.4.6",
"@typescript-eslint/eslint-plugin": "6.14.0",
"@typescript-eslint/parser": "6.14.0",
"autoprefixer": "10.4.16",
"concurrently": "^8.2.2",
"esbuild": "^0.19.10",
"@typescript-eslint/eslint-plugin": "6.19.1",
"@typescript-eslint/parser": "6.19.1",
"autoprefixer": "10.4.17",
"concurrently": "8.2.2",
"esbuild": "0.19.12",
"eslint": "8.56.0",
"eslint-config-prettier": "9.1.0",
"eslint-plugin-svelte": "2.35.1",
"mdsvex": "0.11.0",
"phosphor-svelte": "1.3.0",
"postcss": "8.4.32",
"prettier": "3.1.1",
"postcss": "8.4.33",
"prettier": "3.2.4",
"prettier-plugin-svelte": "3.1.2",
"prettier-plugin-tailwindcss": "0.5.9",
"svelte": "4.2.8",
"svelte-check": "3.6.2",
"tailwindcss": "3.3.6",
"prettier-plugin-tailwindcss": "0.5.11",
"svelte": "4.2.9",
"svelte-check": "3.6.3",
"tailwindcss": "3.4.1",
"tslib": "2.6.2",
"typescript": "5.3.3",
"vite": "5.0.10",
"vitest": "1.0.4"
"vite": "5.0.12",
"vitest": "1.2.1"
},
"config": {
"siteURL": "https://svgl.app?figma=1"

View File

@ -6,20 +6,20 @@ settings:
dependencies:
'@figma/plugin-typings':
specifier: ^1.82.0
version: 1.82.0
specifier: 1.84.0
version: 1.84.0
'@upstash/ratelimit':
specifier: 1.0.0
version: 1.0.0
'@upstash/redis':
specifier: 1.25.2
version: 1.25.2
specifier: 1.28.2
version: 1.28.2
bits-ui:
specifier: 0.11.8
version: 0.11.8(svelte@4.2.8)
specifier: 0.15.1
version: 0.15.1(svelte@4.2.9)
clsx:
specifier: 2.0.0
version: 2.0.0
specifier: 2.1.0
version: 2.1.0
downloadjs:
specifier: 1.4.7
version: 1.4.7
@ -27,49 +27,49 @@ dependencies:
specifier: 3.10.1
version: 3.10.1
lucide-svelte:
specifier: 0.298.0
version: 0.298.0(svelte@4.2.8)
specifier: 0.314.0
version: 0.314.0(svelte@4.2.9)
shiki:
specifier: 0.14.7
version: 0.14.7
svelte-sonner:
specifier: 0.3.6
version: 0.3.6(svelte@4.2.8)
version: 0.3.6(svelte@4.2.9)
tailwind-merge:
specifier: 2.1.0
version: 2.1.0
specifier: 2.2.1
version: 2.2.1
devDependencies:
'@sveltejs/adapter-auto':
specifier: 3.0.0
version: 3.0.0(@sveltejs/kit@2.0.0)
specifier: 3.1.1
version: 3.1.1(@sveltejs/kit@2.4.3)
'@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)
specifier: 2.4.3
version: 2.4.3(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12)
'@sveltejs/vite-plugin-svelte':
specifier: 3.0.1
version: 3.0.1(svelte@4.2.8)(vite@5.0.10)
version: 3.0.1(svelte@4.2.9)(vite@5.0.12)
'@tailwindcss/typography':
specifier: 0.5.10
version: 0.5.10(tailwindcss@3.3.6)
version: 0.5.10(tailwindcss@3.4.1)
'@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)
specifier: 6.19.1
version: 6.19.1(@typescript-eslint/parser@6.19.1)(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)
specifier: 6.19.1
version: 6.19.1(eslint@8.56.0)(typescript@5.3.3)
autoprefixer:
specifier: 10.4.16
version: 10.4.16(postcss@8.4.32)
specifier: 10.4.17
version: 10.4.17(postcss@8.4.33)
concurrently:
specifier: ^8.2.2
specifier: 8.2.2
version: 8.2.2
esbuild:
specifier: ^0.19.10
version: 0.19.10
specifier: 0.19.12
version: 0.19.12
eslint:
specifier: 8.56.0
version: 8.56.0
@ -78,34 +78,31 @@ devDependencies:
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)
version: 2.35.1(eslint@8.56.0)(svelte@4.2.9)
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)
version: 0.11.0(svelte@4.2.9)
postcss:
specifier: 8.4.32
version: 8.4.32
specifier: 8.4.33
version: 8.4.33
prettier:
specifier: 3.1.1
version: 3.1.1
specifier: 3.2.4
version: 3.2.4
prettier-plugin-svelte:
specifier: 3.1.2
version: 3.1.2(prettier@3.1.1)(svelte@4.2.8)
version: 3.1.2(prettier@3.2.4)(svelte@4.2.9)
prettier-plugin-tailwindcss:
specifier: 0.5.9
version: 0.5.9(prettier-plugin-svelte@3.1.2)(prettier@3.1.1)
specifier: 0.5.11
version: 0.5.11(prettier-plugin-svelte@3.1.2)(prettier@3.2.4)
svelte:
specifier: 4.2.8
version: 4.2.8
specifier: 4.2.9
version: 4.2.9
svelte-check:
specifier: 3.6.2
version: 3.6.2(postcss@8.4.32)(svelte@4.2.8)
specifier: 3.6.3
version: 3.6.3(postcss@8.4.33)(svelte@4.2.9)
tailwindcss:
specifier: 3.3.6
version: 3.3.6
specifier: 3.4.1
version: 3.4.1
tslib:
specifier: 2.6.2
version: 2.6.2
@ -113,11 +110,11 @@ devDependencies:
specifier: 5.3.3
version: 5.3.3
vite:
specifier: 5.0.10
version: 5.0.10
specifier: 5.0.12
version: 5.0.12
vitest:
specifier: 1.0.4
version: 1.0.4
specifier: 1.2.1
version: 1.2.1
packages:
@ -143,9 +140,17 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
dev: true
/@esbuild/aix-ppc64@0.19.10:
resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==}
/@babel/runtime@7.23.8:
resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
dev: false
/@esbuild/aix-ppc64@0.19.12:
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
@ -153,8 +158,8 @@ packages:
dev: true
optional: true
/@esbuild/android-arm64@0.19.10:
resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==}
/@esbuild/android-arm64@0.19.12:
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
@ -162,8 +167,8 @@ packages:
dev: true
optional: true
/@esbuild/android-arm@0.19.10:
resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==}
/@esbuild/android-arm@0.19.12:
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
@ -171,8 +176,8 @@ packages:
dev: true
optional: true
/@esbuild/android-x64@0.19.10:
resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==}
/@esbuild/android-x64@0.19.12:
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
@ -180,8 +185,8 @@ packages:
dev: true
optional: true
/@esbuild/darwin-arm64@0.19.10:
resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==}
/@esbuild/darwin-arm64@0.19.12:
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
@ -189,8 +194,8 @@ packages:
dev: true
optional: true
/@esbuild/darwin-x64@0.19.10:
resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==}
/@esbuild/darwin-x64@0.19.12:
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
@ -198,8 +203,8 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-arm64@0.19.10:
resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==}
/@esbuild/freebsd-arm64@0.19.12:
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
@ -207,8 +212,8 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-x64@0.19.10:
resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==}
/@esbuild/freebsd-x64@0.19.12:
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
@ -216,8 +221,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm64@0.19.10:
resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==}
/@esbuild/linux-arm64@0.19.12:
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
@ -225,8 +230,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm@0.19.10:
resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==}
/@esbuild/linux-arm@0.19.12:
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
@ -234,8 +239,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-ia32@0.19.10:
resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==}
/@esbuild/linux-ia32@0.19.12:
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
@ -243,8 +248,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-loong64@0.19.10:
resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==}
/@esbuild/linux-loong64@0.19.12:
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
@ -252,8 +257,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-mips64el@0.19.10:
resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==}
/@esbuild/linux-mips64el@0.19.12:
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
@ -261,8 +266,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-ppc64@0.19.10:
resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==}
/@esbuild/linux-ppc64@0.19.12:
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
@ -270,8 +275,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-riscv64@0.19.10:
resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==}
/@esbuild/linux-riscv64@0.19.12:
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
@ -279,8 +284,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-s390x@0.19.10:
resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==}
/@esbuild/linux-s390x@0.19.12:
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
@ -288,8 +293,8 @@ packages:
dev: true
optional: true
/@esbuild/linux-x64@0.19.10:
resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==}
/@esbuild/linux-x64@0.19.12:
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
@ -297,8 +302,8 @@ packages:
dev: true
optional: true
/@esbuild/netbsd-x64@0.19.10:
resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==}
/@esbuild/netbsd-x64@0.19.12:
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
@ -306,8 +311,8 @@ packages:
dev: true
optional: true
/@esbuild/openbsd-x64@0.19.10:
resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==}
/@esbuild/openbsd-x64@0.19.12:
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
@ -315,8 +320,8 @@ packages:
dev: true
optional: true
/@esbuild/sunos-x64@0.19.10:
resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==}
/@esbuild/sunos-x64@0.19.12:
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
@ -324,8 +329,8 @@ packages:
dev: true
optional: true
/@esbuild/win32-arm64@0.19.10:
resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==}
/@esbuild/win32-arm64@0.19.12:
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
@ -333,8 +338,8 @@ packages:
dev: true
optional: true
/@esbuild/win32-ia32@0.19.10:
resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==}
/@esbuild/win32-ia32@0.19.12:
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
@ -342,8 +347,8 @@ packages:
dev: true
optional: true
/@esbuild/win32-x64@0.19.10:
resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==}
/@esbuild/win32-x64@0.19.12:
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@ -388,8 +393,8 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@figma/plugin-typings@1.82.0:
resolution: {integrity: sha512-To5M9VRpNysrGGtZtPF5Ke9eobfhTUr7kieAsYMhpPg+VKdr0EM6XDFtCqhtuDrLfPAZFa/cBQo68auWwD4mlA==}
/@figma/plugin-typings@1.84.0:
resolution: {integrity: sha512-YisOp7S2y10BWMLBJY2DazCjRpg/0m03dDlS3nKhpw2alFQSXNuSLLd+y4pbnJpOXJMnInZdbikr/7JxudjsYg==}
dev: false
/@floating-ui/core@1.5.2:
@ -429,8 +434,8 @@ packages:
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==}
/@internationalized/date@3.5.1:
resolution: {integrity: sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==}
dependencies:
'@swc/helpers': 0.5.3
dev: false
@ -467,18 +472,18 @@ packages:
'@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==}
/@melt-ui/svelte@0.68.0(svelte@4.2.9):
resolution: {integrity: sha512-/QvA98hnYEodZtHJ71+ocum/WWp30hVNt3F8uiZKnNYwZDaiQYjlyR9AaGKYcZLCe6R68op1mfCzc0kTzJilyA==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
'@floating-ui/core': 1.5.2
'@floating-ui/dom': 1.5.3
'@internationalized/date': 3.5.0
'@internationalized/date': 3.5.1
dequal: 2.0.3
focus-trap: 7.5.4
nanoid: 4.0.2
svelte: 4.2.8
nanoid: 5.0.4
svelte: 4.2.9
dev: false
/@nodelib/fs.scandir@2.1.5:
@ -614,17 +619,17 @@ packages:
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==}
/@sveltejs/adapter-auto@3.1.1(@sveltejs/kit@2.4.3):
resolution: {integrity: sha512-6LeZft2Fo/4HfmLBi5CucMYmgRxgcETweQl/yQoZo/895K3S9YWYN4Sfm/IhwlIpbJp3QNvhKmwCHbsqQNYQpw==}
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)
'@sveltejs/kit': 2.4.3(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12)
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==}
/@sveltejs/kit@2.4.3(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12):
resolution: {integrity: sha512-nKNhUdt61vtD961kQpUk6vLDhpnV0yku5F1uYNWvrJYFV0+cGfmW7ol0JVMSjHMXlMtmmv2FTc+nPRrTFwb2UA==}
engines: {node: '>=18.13'}
hasBin: true
requiresBuild: true
@ -633,23 +638,24 @@ packages:
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)
'@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.9)(vite@5.0.12)
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 4.3.2
esm-env: 1.0.0
import-meta-resolve: 4.0.0
kleur: 4.1.5
magic-string: 0.30.5
mrmime: 1.0.1
mrmime: 2.0.0
sade: 1.8.1
set-cookie-parser: 2.6.0
sirv: 2.0.3
svelte: 4.2.8
sirv: 2.0.4
svelte: 4.2.9
tiny-glob: 0.2.9
vite: 5.0.10
vite: 5.0.12
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):
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12):
resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
engines: {node: ^18.0.0 || >=20}
peerDependencies:
@ -657,30 +663,30 @@ packages:
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)
'@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.9)(vite@5.0.12)
debug: 4.3.4
svelte: 4.2.8
vite: 5.0.10
svelte: 4.2.9
vite: 5.0.12
transitivePeerDependencies:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.10):
/@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.9)(vite@5.0.12):
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)
'@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.9)(vite@5.0.12)
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)
svelte: 4.2.9
svelte-hmr: 0.15.3(svelte@4.2.9)
vite: 5.0.12
vitefu: 0.2.5(vite@5.0.12)
transitivePeerDependencies:
- supports-color
dev: true
@ -691,7 +697,7 @@ packages:
tslib: 2.6.2
dev: false
/@tailwindcss/typography@0.5.10(tailwindcss@3.3.6):
/@tailwindcss/typography@0.5.10(tailwindcss@3.4.1):
resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
@ -700,7 +706,7 @@ packages:
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.3.6
tailwindcss: 3.4.1
dev: true
/@types/cookie@0.6.0:
@ -730,8 +736,8 @@ packages:
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==}
/@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -742,11 +748,11 @@ packages:
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
'@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 6.19.1
'@typescript-eslint/type-utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.19.1
debug: 4.3.4
eslint: 8.56.0
graphemer: 1.4.0
@ -759,8 +765,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==}
/@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -769,10 +775,10 @@ packages:
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
'@typescript-eslint/scope-manager': 6.19.1
'@typescript-eslint/types': 6.19.1
'@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.19.1
debug: 4.3.4
eslint: 8.56.0
typescript: 5.3.3
@ -780,16 +786,16 @@ packages:
- supports-color
dev: true
/@typescript-eslint/scope-manager@6.14.0:
resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==}
/@typescript-eslint/scope-manager@6.19.1:
resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/visitor-keys': 6.14.0
'@typescript-eslint/types': 6.19.1
'@typescript-eslint/visitor-keys': 6.19.1
dev: true
/@typescript-eslint/type-utils@6.14.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==}
/@typescript-eslint/type-utils@6.19.1(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -798,8 +804,8 @@ packages:
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)
'@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3)
'@typescript-eslint/utils': 6.19.1(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)
@ -808,13 +814,13 @@ packages:
- supports-color
dev: true
/@typescript-eslint/types@6.14.0:
resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==}
/@typescript-eslint/types@6.19.1:
resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==}
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==}
/@typescript-eslint/typescript-estree@6.19.1(typescript@5.3.3):
resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@ -822,11 +828,12 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/visitor-keys': 6.14.0
'@typescript-eslint/types': 6.19.1
'@typescript-eslint/visitor-keys': 6.19.1
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
@ -834,8 +841,8 @@ packages:
- 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==}
/@typescript-eslint/utils@6.19.1(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@ -843,9 +850,9 @@ packages:
'@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)
'@typescript-eslint/scope-manager': 6.19.1
'@typescript-eslint/types': 6.19.1
'@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3)
eslint: 8.56.0
semver: 7.5.4
transitivePeerDependencies:
@ -853,11 +860,11 @@ packages:
- typescript
dev: true
/@typescript-eslint/visitor-keys@6.14.0:
resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==}
/@typescript-eslint/visitor-keys@6.19.1:
resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
'@typescript-eslint/types': 6.14.0
'@typescript-eslint/types': 6.19.1
eslint-visitor-keys: 3.4.3
dev: true
@ -869,7 +876,7 @@ packages:
resolution: {integrity: sha512-cpPSR0XJAJs4Ddz9nq3tINlPS5aLfWVCqhhtHnXt4p7qr5+/Znlt1Es736poB/9rnl1hAHrOsOvVj46NEXcVqA==}
engines: {node: '>=16.0.0'}
dependencies:
'@upstash/redis': 1.25.2
'@upstash/redis': 1.28.2
dev: false
/@upstash/ratelimit@1.0.0:
@ -878,46 +885,47 @@ packages:
'@upstash/core-analytics': 0.0.6
dev: false
/@upstash/redis@1.25.2:
resolution: {integrity: sha512-iI3jgvmDIbe4Px0PskB8lrn1NXz7ZQyGpW9Ehmonk6SEFqhqssqIB04VmlNh8zZUXwzy6G9DaIa5gIUM6B7DwA==}
/@upstash/redis@1.28.2:
resolution: {integrity: sha512-e4HmmCji6kE6UnriU92sAVGLQcRYAB4fXSPXls08cjW7zdE/wFaDfhAGi1/T4/wUN50bAy/lpHwW4bMkI2EAcw==}
dependencies:
crypto-js: 4.2.0
dev: false
/@vitest/expect@1.0.4:
resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==}
/@vitest/expect@1.2.1:
resolution: {integrity: sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==}
dependencies:
'@vitest/spy': 1.0.4
'@vitest/utils': 1.0.4
'@vitest/spy': 1.2.1
'@vitest/utils': 1.2.1
chai: 4.3.10
dev: true
/@vitest/runner@1.0.4:
resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==}
/@vitest/runner@1.2.1:
resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==}
dependencies:
'@vitest/utils': 1.0.4
'@vitest/utils': 1.2.1
p-limit: 5.0.0
pathe: 1.1.1
dev: true
/@vitest/snapshot@1.0.4:
resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==}
/@vitest/snapshot@1.2.1:
resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==}
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==}
/@vitest/spy@1.2.1:
resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==}
dependencies:
tinyspy: 2.2.0
dev: true
/@vitest/utils@1.0.4:
resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==}
/@vitest/utils@1.2.1:
resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==}
dependencies:
diff-sequences: 29.6.3
estree-walker: 3.0.3
loupe: 2.3.7
pretty-format: 29.7.0
dev: true
@ -930,8 +938,8 @@ packages:
acorn: 8.11.2
dev: true
/acorn-walk@8.3.1:
resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==}
/acorn-walk@8.3.2:
resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
engines: {node: '>=0.4.0'}
dev: true
@ -1004,24 +1012,24 @@ packages:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
dev: true
/autoprefixer@10.4.16(postcss@8.4.32):
resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
/autoprefixer@10.4.17(postcss@8.4.33):
resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
dependencies:
browserslist: 4.22.2
caniuse-lite: 1.0.30001568
caniuse-lite: 1.0.30001579
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
postcss: 8.4.32
postcss: 8.4.33
postcss-value-parser: 4.2.0
dev: true
/axobject-query@3.2.1:
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
/axobject-query@4.0.0:
resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==}
dependencies:
dequal: 2.0.3
@ -1034,15 +1042,15 @@ packages:
engines: {node: '>=8'}
dev: true
/bits-ui@0.11.8(svelte@4.2.8):
resolution: {integrity: sha512-T3YaT88OJguBoUU/MSncf41fiIc+5/ka8Au2LUDo0nSECex+LFY40+hKWLJc5tRT56avkyHsI7x9daA2r9eS/g==}
/bits-ui@0.15.1(svelte@4.2.9):
resolution: {integrity: sha512-1Np8bT6W6SC2tKESfm0CySW+7+xU5S0GuUZqIxC41atZE3WIRiRlzXEYHxW88w6UaLFzZ51ns4E7pchkdV5XCQ==}
peerDependencies:
svelte: ^4.0.0
dependencies:
'@internationalized/date': 3.5.0
'@melt-ui/svelte': 0.65.2(svelte@4.2.8)
'@internationalized/date': 3.5.1
'@melt-ui/svelte': 0.68.0(svelte@4.2.9)
nanoid: 5.0.4
svelte: 4.2.8
svelte: 4.2.9
dev: false
/brace-expansion@1.1.11:
@ -1052,6 +1060,12 @@ packages:
concat-map: 0.0.1
dev: true
/brace-expansion@2.0.1:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
dependencies:
balanced-match: 1.0.2
dev: true
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
@ -1064,7 +1078,7 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001568
caniuse-lite: 1.0.30001579
electron-to-chromium: 1.4.609
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.2)
@ -1089,8 +1103,8 @@ packages:
engines: {node: '>= 6'}
dev: true
/caniuse-lite@1.0.30001568:
resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==}
/caniuse-lite@1.0.30001579:
resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==}
dev: true
/chai@4.3.10:
@ -1144,8 +1158,8 @@ packages:
wrap-ansi: 7.0.0
dev: true
/clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
/clsx@2.1.0:
resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==}
engines: {node: '>=6'}
dev: false
@ -1320,35 +1334,35 @@ packages:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true
/esbuild@0.19.10:
resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==}
/esbuild@0.19.12:
resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/aix-ppc64': 0.19.10
'@esbuild/android-arm': 0.19.10
'@esbuild/android-arm64': 0.19.10
'@esbuild/android-x64': 0.19.10
'@esbuild/darwin-arm64': 0.19.10
'@esbuild/darwin-x64': 0.19.10
'@esbuild/freebsd-arm64': 0.19.10
'@esbuild/freebsd-x64': 0.19.10
'@esbuild/linux-arm': 0.19.10
'@esbuild/linux-arm64': 0.19.10
'@esbuild/linux-ia32': 0.19.10
'@esbuild/linux-loong64': 0.19.10
'@esbuild/linux-mips64el': 0.19.10
'@esbuild/linux-ppc64': 0.19.10
'@esbuild/linux-riscv64': 0.19.10
'@esbuild/linux-s390x': 0.19.10
'@esbuild/linux-x64': 0.19.10
'@esbuild/netbsd-x64': 0.19.10
'@esbuild/openbsd-x64': 0.19.10
'@esbuild/sunos-x64': 0.19.10
'@esbuild/win32-arm64': 0.19.10
'@esbuild/win32-ia32': 0.19.10
'@esbuild/win32-x64': 0.19.10
'@esbuild/aix-ppc64': 0.19.12
'@esbuild/android-arm': 0.19.12
'@esbuild/android-arm64': 0.19.12
'@esbuild/android-x64': 0.19.12
'@esbuild/darwin-arm64': 0.19.12
'@esbuild/darwin-x64': 0.19.12
'@esbuild/freebsd-arm64': 0.19.12
'@esbuild/freebsd-x64': 0.19.12
'@esbuild/linux-arm': 0.19.12
'@esbuild/linux-arm64': 0.19.12
'@esbuild/linux-ia32': 0.19.12
'@esbuild/linux-loong64': 0.19.12
'@esbuild/linux-mips64el': 0.19.12
'@esbuild/linux-ppc64': 0.19.12
'@esbuild/linux-riscv64': 0.19.12
'@esbuild/linux-s390x': 0.19.12
'@esbuild/linux-x64': 0.19.12
'@esbuild/netbsd-x64': 0.19.12
'@esbuild/openbsd-x64': 0.19.12
'@esbuild/sunos-x64': 0.19.12
'@esbuild/win32-arm64': 0.19.12
'@esbuild/win32-ia32': 0.19.12
'@esbuild/win32-x64': 0.19.12
dev: true
/escalade@3.1.1:
@ -1379,7 +1393,7 @@ packages:
eslint: 8.56.0
dev: true
/eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.8):
/eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.9):
resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
@ -1396,13 +1410,13 @@ packages:
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: 8.4.33
postcss-load-config: 3.1.4(postcss@8.4.33)
postcss-safe-parser: 6.0.0(postcss@8.4.33)
postcss-selector-parser: 6.0.13
semver: 7.5.4
svelte: 4.2.8
svelte-eslint-parser: 0.33.1(svelte@4.2.8)
svelte: 4.2.9
svelte-eslint-parser: 0.33.1(svelte@4.2.9)
transitivePeerDependencies:
- supports-color
- ts-node
@ -1937,12 +1951,12 @@ packages:
yallist: 4.0.0
dev: true
/lucide-svelte@0.298.0(svelte@4.2.8):
resolution: {integrity: sha512-7xYNSMY1z1QMjLe8GWToFtFh0lvTsrxdgEAXMite/Urn9tPD16Xk3597ibpgt9Ff7IBb/ArMc3y3ZKofZhs8fQ==}
/lucide-svelte@0.314.0(svelte@4.2.9):
resolution: {integrity: sha512-w7oPy6aU7ybjopT9k65S1S5y/XgFVL6i6Qm0MT9pSjvORfWEdaI7cvonx5D2w3+Ty8+0jVRm4k8U/txhEpwLOg==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
svelte: 4.2.8
svelte: 4.2.9
dev: false
/magic-string@0.27.0:
@ -1961,7 +1975,7 @@ packages:
/mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
/mdsvex@0.11.0(svelte@4.2.8):
/mdsvex@0.11.0(svelte@4.2.9):
resolution: {integrity: sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==}
peerDependencies:
svelte: '>=3 <5'
@ -1969,7 +1983,7 @@ packages:
'@types/unist': 2.0.10
prism-svelte: 0.4.7
prismjs: 1.29.0
svelte: 4.2.8
svelte: 4.2.9
vfile-message: 2.0.4
dev: true
@ -2006,6 +2020,13 @@ packages:
brace-expansion: 1.1.11
dev: true
/minimatch@9.0.3:
resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
dev: true
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
@ -2031,8 +2052,8 @@ packages:
engines: {node: '>=4'}
dev: true
/mrmime@1.0.1:
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
/mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
dev: true
@ -2054,12 +2075,6 @@ packages:
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}
@ -2202,14 +2217,6 @@ packages:
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
@ -2237,29 +2244,29 @@ packages:
pathe: 1.1.1
dev: true
/postcss-import@15.1.0(postcss@8.4.32):
/postcss-import@15.1.0(postcss@8.4.33):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
postcss: 8.4.32
postcss: 8.4.33
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):
/postcss-js@4.0.1(postcss@8.4.33):
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
postcss: 8.4.33
dev: true
/postcss-load-config@3.1.4(postcss@8.4.32):
/postcss-load-config@3.1.4(postcss@8.4.33):
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
engines: {node: '>= 10'}
peerDependencies:
@ -2272,11 +2279,11 @@ packages:
optional: true
dependencies:
lilconfig: 2.1.0
postcss: 8.4.32
postcss: 8.4.33
yaml: 1.10.2
dev: true
/postcss-load-config@4.0.2(postcss@8.4.32):
/postcss-load-config@4.0.2(postcss@8.4.33):
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
@ -2289,36 +2296,36 @@ packages:
optional: true
dependencies:
lilconfig: 3.0.0
postcss: 8.4.32
postcss: 8.4.33
yaml: 2.3.4
dev: true
/postcss-nested@6.0.1(postcss@8.4.32):
/postcss-nested@6.0.1(postcss@8.4.33):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
postcss: 8.4.32
postcss: 8.4.33
postcss-selector-parser: 6.0.13
dev: true
/postcss-safe-parser@6.0.0(postcss@8.4.32):
/postcss-safe-parser@6.0.0(postcss@8.4.33):
resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.3.3
dependencies:
postcss: 8.4.32
postcss: 8.4.33
dev: true
/postcss-scss@4.0.9(postcss@8.4.32):
/postcss-scss@4.0.9(postcss@8.4.33):
resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.4.29
dependencies:
postcss: 8.4.32
postcss: 8.4.33
dev: true
/postcss-selector-parser@6.0.10:
@ -2341,8 +2348,8 @@ packages:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true
/postcss@8.4.32:
resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
/postcss@8.4.33:
resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
@ -2355,18 +2362,18 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
/prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.8):
/prettier-plugin-svelte@3.1.2(prettier@3.2.4)(svelte@4.2.9):
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
prettier: 3.2.4
svelte: 4.2.9
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==}
/prettier-plugin-tailwindcss@0.5.11(prettier-plugin-svelte@3.1.2)(prettier@3.2.4):
resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==}
engines: {node: '>=14.21.3'}
peerDependencies:
'@ianvs/prettier-plugin-sort-imports': '*'
@ -2414,12 +2421,12 @@ packages:
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)
prettier: 3.2.4
prettier-plugin-svelte: 3.1.2(prettier@3.2.4)(svelte@4.2.9)
dev: true
/prettier@3.1.1:
resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==}
/prettier@3.2.4:
resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==}
engines: {node: '>=14'}
hasBin: true
dev: true
@ -2628,12 +2635,12 @@ packages:
engines: {node: '>=14'}
dev: true
/sirv@2.0.3:
resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==}
/sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
dependencies:
'@polka/url': 1.0.0-next.24
mrmime: 1.0.1
mrmime: 2.0.0
totalist: 3.0.1
dev: true
@ -2746,8 +2753,8 @@ packages:
engines: {node: '>= 0.4'}
dev: true
/svelte-check@3.6.2(postcss@8.4.32)(svelte@4.2.8):
resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==}
/svelte-check@3.6.3(postcss@8.4.33)(svelte@4.2.9):
resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==}
hasBin: true
peerDependencies:
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
@ -2758,8 +2765,8 @@ packages:
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)
svelte: 4.2.9
svelte-preprocess: 5.1.1(postcss@8.4.33)(svelte@4.2.9)(typescript@5.3.3)
typescript: 5.3.3
transitivePeerDependencies:
- '@babel/core'
@ -2773,7 +2780,7 @@ packages:
- sugarss
dev: true
/svelte-eslint-parser@0.33.1(svelte@4.2.8):
/svelte-eslint-parser@0.33.1(svelte@4.2.9):
resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2785,21 +2792,21 @@ packages:
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
postcss: 8.4.33
postcss-scss: 4.0.9(postcss@8.4.33)
svelte: 4.2.9
dev: true
/svelte-hmr@0.15.3(svelte@4.2.8):
/svelte-hmr@0.15.3(svelte@4.2.9):
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
svelte: 4.2.9
dev: true
/svelte-preprocess@5.1.1(postcss@8.4.32)(svelte@4.2.8)(typescript@5.3.3):
/svelte-preprocess@5.1.1(postcss@8.4.33)(svelte@4.2.9)(typescript@5.3.3):
resolution: {integrity: sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==}
engines: {node: '>= 14.10.0'}
requiresBuild: true
@ -2840,31 +2847,32 @@ packages:
'@types/pug': 2.0.10
detect-indent: 6.1.0
magic-string: 0.27.0
postcss: 8.4.32
postcss: 8.4.33
sorcery: 0.11.0
strip-indent: 3.0.0
svelte: 4.2.8
svelte: 4.2.9
typescript: 5.3.3
dev: true
/svelte-sonner@0.3.6(svelte@4.2.8):
/svelte-sonner@0.3.6(svelte@4.2.9):
resolution: {integrity: sha512-MwVhh4nxCqTBLHYamRw+q9erZC2Y4wuL8mUa7phgq/9kq9VdTr+/6S1PX1CnALJPy2rkc7TlIECYTJavUkoWlg==}
peerDependencies:
svelte: '>=3 <5'
dependencies:
svelte: 4.2.8
svelte: 4.2.9
dev: false
/svelte@4.2.8:
resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==}
/svelte@4.2.9:
resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==}
engines: {node: '>=16'}
dependencies:
'@ampproject/remapping': 2.2.1
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.20
'@types/estree': 1.0.5
acorn: 8.11.2
aria-query: 5.3.0
axobject-query: 3.2.1
axobject-query: 4.0.0
code-red: 1.0.4
css-tree: 2.3.1
estree-walker: 3.0.3
@ -2877,14 +2885,14 @@ packages:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
dev: false
/tailwind-merge@2.1.0:
resolution: {integrity: sha512-l11VvI4nSwW7MtLSLYT4ldidDEUwQAMWuSHk7l4zcXZDgnCRa0V3OdCwFfM7DCzakVXMNRwAeje9maFFXT71dQ==}
/tailwind-merge@2.2.1:
resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==}
dependencies:
'@babel/runtime': 7.23.6
'@babel/runtime': 7.23.8
dev: false
/tailwindcss@3.3.6:
resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==}
/tailwindcss@3.4.1:
resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@ -2902,11 +2910,11 @@ packages:
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: 8.4.33
postcss-import: 15.1.0(postcss@8.4.33)
postcss-js: 4.0.1(postcss@8.4.33)
postcss-load-config: 4.0.2(postcss@8.4.33)
postcss-nested: 6.0.1(postcss@8.4.33)
postcss-selector-parser: 6.0.13
resolve: 1.22.8
sucrase: 3.34.0
@ -3045,8 +3053,8 @@ packages:
unist-util-stringify-position: 2.0.3
dev: true
/vite-node@1.0.4:
resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==}
/vite-node@1.2.1:
resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
dependencies:
@ -3054,7 +3062,7 @@ packages:
debug: 4.3.4
pathe: 1.1.1
picocolors: 1.0.0
vite: 5.0.10
vite: 5.0.12
transitivePeerDependencies:
- '@types/node'
- less
@ -3066,8 +3074,8 @@ packages:
- terser
dev: true
/vite@5.0.10:
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
/vite@5.0.12:
resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@ -3094,14 +3102,14 @@ packages:
terser:
optional: true
dependencies:
esbuild: 0.19.10
postcss: 8.4.32
esbuild: 0.19.12
postcss: 8.4.33
rollup: 4.8.0
optionalDependencies:
fsevents: 2.3.3
dev: true
/vitefu@0.2.5(vite@5.0.10):
/vitefu@0.2.5(vite@5.0.12):
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
@ -3109,11 +3117,11 @@ packages:
vite:
optional: true
dependencies:
vite: 5.0.10
vite: 5.0.12
dev: true
/vitest@1.0.4:
resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==}
/vitest@1.2.1:
resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@ -3137,12 +3145,12 @@ packages:
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
'@vitest/expect': 1.2.1
'@vitest/runner': 1.2.1
'@vitest/snapshot': 1.2.1
'@vitest/spy': 1.2.1
'@vitest/utils': 1.2.1
acorn-walk: 8.3.2
cac: 6.7.14
chai: 4.3.10
debug: 4.3.4
@ -3155,8 +3163,8 @@ packages:
strip-literal: 1.3.0
tinybench: 2.5.1
tinypool: 0.8.1
vite: 5.0.10
vite-node: 1.0.4
vite: 5.0.12
vite-node: 1.2.1
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less

View File

@ -0,0 +1,244 @@
<script lang="ts">
import type { iSVG } from '@/types/svg';
import JSZip from 'jszip';
import download from 'downloadjs';
import { toast } from 'svelte-sonner';
import { DownloadIcon } from 'lucide-svelte';
import { getSvgContent } from '@/utils/getSvgContent';
import {
Dialog,
DialogTrigger,
DialogContent,
DialogHeader,
DialogTitle,
DialogDescription
} from '@/ui/dialog';
import { buttonStyles } from '@/ui/styles';
// Props:
export let svgInfo: iSVG;
export let isDarkTheme: () => boolean;
// Shared:
let iconStroke = 1.8;
let iconSize = 16;
let mainDownloadStyles =
'flex items-center space-x-2 rounded-md p-2 duration-100 hover:bg-neutral-200 dark:hover:bg-neutral-700/40';
let cardDownloadStyles =
'flex w-full flex-col p-4 rounded-md shadow-sm dark:bg-neutral-800/20 bg-neutral-200/10 border border-neutral-200 dark:border-neutral-800 space-y-2';
// Functions:
const downloadSvg = (url?: string) => {
download(url || '');
const category = Array.isArray(svgInfo.category)
? svgInfo.category.sort().join(' - ')
: svgInfo.category;
toast.success(`Downloading...`, {
description: `${svgInfo.title} - ${category}`
});
};
// Download all variants:
const downloadAllVariants = async ({
lightRoute,
darkRoute,
isWordmark
}: {
lightRoute: string;
darkRoute: string;
isWordmark?: boolean;
}) => {
const zip = new JSZip();
const lightSvg = await getSvgContent(lightRoute, false);
const darkSvg = await getSvgContent(darkRoute, false);
if (isWordmark) {
zip.file(`${svgInfo.title}_wordmark_light.svg`, lightSvg);
zip.file(`${svgInfo.title}_wordmark_dark.svg`, darkSvg);
} else {
zip.file(`${svgInfo.title}_light.svg`, lightSvg);
zip.file(`${svgInfo.title}_dark.svg`, darkSvg);
}
zip.generateAsync({ type: 'blob' }).then((content) => {
download(
content,
isWordmark ? `${svgInfo.title}_wordmark_light_dark.zip` : `${svgInfo.title}_light_dark.zip`,
'application/zip'
);
});
const category = Array.isArray(svgInfo.category)
? svgInfo.category.sort().join(' - ')
: svgInfo.category;
toast.success('Downloading light & dark variants...', {
description: isWordmark
? `${svgInfo.title} - Wordmark - ${category}`
: `${svgInfo.title} - ${category}`
});
};
</script>
{#if typeof svgInfo.route === 'string'}
<button
title="Download Light & Dark variants"
class={mainDownloadStyles}
on:click={() => {
if (typeof svgInfo.route === 'string') {
downloadSvg(svgInfo.route);
return;
}
}}
>
<DownloadIcon size={iconSize} strokeWidth={iconStroke} />
</button>
{:else}
<Dialog>
<DialogTrigger title="Download SVG" class={mainDownloadStyles}>
<DownloadIcon size={iconSize} strokeWidth={iconStroke} />
</DialogTrigger>
<DialogContent class="max-w-[630px]">
<DialogHeader>
<DialogTitle>Download {svgInfo.title}</DialogTitle>
<DialogDescription>This logo has multiple options to download.</DialogDescription>
</DialogHeader>
<div
class="flex w-full flex-col md:flex-row items-center justify-center space-y-2 md:space-y-0 md:space-x-2 mt-5"
>
<div class={cardDownloadStyles}>
<img
src={isDarkTheme() ? svgInfo.route.dark : svgInfo.route.light}
alt={svgInfo.title}
class="h-8 my-4"
/>
<button
title="Logo with light & dark variants"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.route !== 'string') {
downloadAllVariants({
lightRoute: svgInfo.route.light,
darkRoute: svgInfo.route.dark
});
}
}}
>
<DownloadIcon size={iconSize} />
<p>Light & dark variants</p>
</button>
<button
title="Download light variant"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.route !== 'string') {
downloadSvg(svgInfo.route.light);
return;
}
}}
>
<DownloadIcon class="mr-2" size={iconSize} />
Only light variant
</button>
<button
title="Download dark variant"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.route !== 'string') {
downloadSvg(svgInfo.route.dark);
return;
}
}}
>
<DownloadIcon class="mr-2" size={iconSize} />
Only dark variant
</button>
</div>
{#if typeof svgInfo.wordmark === 'string' && svgInfo.wordmark !== undefined}
<div class={cardDownloadStyles}>
<img
src={isDarkTheme() ? svgInfo.wordmark : svgInfo.wordmark}
alt={svgInfo.title}
class="h-8 my-4"
/>
<button
title="Download Wordmark logo"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.wordmark === 'string') {
downloadSvg(svgInfo.wordmark);
return;
}
}}
>
<DownloadIcon class="mr-2" size={iconSize} />
<p>Wordmark logo</p>
</button>
</div>
{/if}
{#if typeof svgInfo.wordmark !== 'string' && svgInfo.wordmark !== undefined}
<div class={cardDownloadStyles}>
<img
src={isDarkTheme() ? svgInfo.wordmark.dark : svgInfo.wordmark.light}
alt={svgInfo.title}
class="h-8 my-4"
/>
<button
title="Download Wordmark light variant"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.wordmark !== 'string') {
downloadAllVariants({
lightRoute: svgInfo.wordmark?.light || '',
darkRoute: svgInfo.wordmark?.dark || '',
isWordmark: true
});
return;
}
}}
>
<DownloadIcon class="mr-2" size={iconSize} />
Light & dark variants
</button>
<button
title="Download Wordmark light variant"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.wordmark !== 'string') {
downloadSvg(svgInfo.wordmark?.light);
return;
}
}}
>
<DownloadIcon class="mr-2" size={iconSize} />
Wordmark light variant
</button>
<button
title="Download Wordmark dark variant"
class={buttonStyles}
on:click={() => {
if (typeof svgInfo.wordmark !== 'string') {
downloadSvg(svgInfo.wordmark?.dark);
return;
}
}}
>
<DownloadIcon class="mr-2" size={iconSize} />
Wordmark dark variant
</button>
</div>
{/if}
</div>
</DialogContent>
</Dialog>
{/if}

View File

@ -50,14 +50,14 @@
'backdrop-blur-md opacity-95'
)}
>
<!-- Se le puso un aria-label al href="/" -->
<!-- Se le puso un aria-label al href="/" -->
<div class="flex items-center justify-between mx-auto">
<div class="flex items-center space-x-2">
<a href="/" aria-label="Go to the SVGL v4.0 home page">
<a href="/" aria-label="Go to the SVGL v4.1 home page">
<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-400 hidden md:block font-mono">v4.0</p>
<p class="text-neutral-400 hidden md:block font-mono">v4.1</p>
</div>
</a>
</div>

View File

@ -1,4 +1,5 @@
<script lang="ts">
import { buttonStyles } from '@/ui/styles';
export let notFoundTerm: string;
import { PackageOpen, ArrowUpRight } from 'lucide-svelte';
</script>
@ -11,15 +12,15 @@
<a
href="https://github.com/pheralb/svgl?tab=readme-ov-file#-getting-started"
target="_blank"
class="flex items-center space-x-2 rounded-md border border-neutral-300 p-2 duration-100 hover:bg-neutral-200 dark:border-neutral-700 dark:hover:bg-neutral-700/40"
class={buttonStyles}
>
<span>Submit logo</span>
<ArrowUpRight size={16} />
</a>
<a
href="https://github.com/pheralb/svgl/issues/new"
href="https://github.com/pheralb/svgl/issues/new?assignees=pheralb&labels=request&projects=&template=request-svg-.md&title=%5BRequest%5D%3A"
target="_blank"
class="flex items-center space-x-2 rounded-md border border-neutral-300 p-2 duration-100 hover:bg-neutral-200 dark:border-neutral-700 dark:hover:bg-neutral-700/40"
class={buttonStyles}
>
<span>Request SVG</span>
<ArrowUpRight size={16} />

View File

@ -1,9 +1,10 @@
<script lang="ts">
import { inputStyles } from '@/ui/styles';
import { Command, SearchIcon } from 'lucide-svelte';
export let searchTerm: string;
export let placeholder: string = 'Search...';
export let clearSearch: () => void;
import X from 'phosphor-svelte/lib/X';
import { X } from 'lucide-svelte';
let inputElement;
@ -36,7 +37,7 @@
type="text"
{placeholder}
autocomplete="off"
class="w-full border-b border-neutral-300 bg-white p-3 px-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"
class={inputStyles}
bind:value={searchTerm}
on:input
use:focusInput

View File

@ -1,28 +1,18 @@
<script lang="ts">
import type { iSVG } from '../types/svg';
import download from 'downloadjs';
import { toast } from 'svelte-sonner';
import jszip from 'jszip';
// Utils:
import { cn } from '@/utils/cn';
import { MIMETYPE, getSvgContent } from '@/utils/getSvgContent';
import { flyAndScale } from '@/utils/flyAndScale';
// Icons:
import {
CopyIcon,
DownloadIcon,
LinkIcon,
PackageIcon,
PaintBucket,
ChevronsRight,
Baseline
} from 'lucide-svelte';
import { CopyIcon, LinkIcon, ChevronsRight, Baseline } from 'lucide-svelte';
// Main Card:
// Components & styles:
import CardSpotlight from './cardSpotlight.svelte';
import { DropdownMenu } from 'bits-ui';
import DownloadSvg from './downloadSvg.svelte';
import { badgeStyles } from '@/ui/styles';
// Figma
import { onMount } from 'svelte';
@ -41,51 +31,6 @@
// Wordmark SVG:
let wordmarkSvg = false;
// Download SVG:
const downloadSvg = (url?: string) => {
download(url || '');
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);
if (svgInfo.wordmark) {
if (typeof svgInfo.wordmark === 'string') {
downloadSvg(svgInfo.wordmark);
return;
}
const lightWordmarkSvg = await getSvgContent(svgInfo.wordmark.light, false);
const darkWordmarkSvg = await getSvgContent(svgInfo.wordmark.dark, false);
zip.file(`${svgInfo.title}.wordmark.svg`, lightWordmarkSvg);
zip.file(`${svgInfo.title}.wordmark.dark.svg`, darkWordmarkSvg);
}
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:
const copyToClipboard = async (url?: string) => {
const data = {
@ -105,22 +50,26 @@
await navigator.clipboard.writeText(content);
}
const category = Array.isArray(svgInfo.category)
? svgInfo.category.sort().join(' - ')
: svgInfo.category;
if (isInFigma) {
toast.success('Ready to paste in Figma!', {
description: `${svgInfo.title} - ${svgInfo.category}`
description: `${svgInfo.title} - ${category}`
});
return;
}
if (wordmarkSvg) {
toast.success('Copied wordmark SVG to clipboard!', {
description: `${svgInfo.title} - ${svgInfo.category}`
description: `${svgInfo.title} - ${category}`
});
return;
}
toast.success('Copied to clipboard!', {
description: `${svgInfo.title} - ${svgInfo.category}`
description: `${svgInfo.title} - ${category}`
});
};
@ -158,14 +107,14 @@
/>
{:else}
<img
class="hidden dark:block mb-4 mt-2 h-10"
class={cn('hidden dark:block mb-4 mt-2 h-10')}
src={typeof svgInfo.route !== 'string' ? svgInfo.route.dark : svgInfo.route}
alt={svgInfo.title}
title={svgInfo.title}
loading="lazy"
/>
<img
class="block dark:hidden mb-4 mt-2 h-10"
class={cn('block dark:hidden mb-4 mt-2 h-10')}
src={typeof svgInfo.route !== 'string' ? svgInfo.route.light : svgInfo.route}
alt={svgInfo.title}
title={svgInfo.title}
@ -173,15 +122,21 @@
/>
{/if}
<!-- Title -->
<!-- Aqui se modifico el text-neutral a 400 -->
<div class="mb-3 flex flex-col items-center justify-center">
<div class="mb-3 flex flex-col space-y-1 items-center justify-center">
<p class="truncate text-[15px] font-medium text-balance text-center select-all">
{svgInfo.title}
</p>
<a
href={`/directory/${svgInfo.category.toLowerCase()}`}
class="text-sm lowercase text-neutral-400 hover:underline font-mono">{svgInfo.category}</a
>
<div class="flex items-center space-x-1 justify-center">
{#if Array.isArray(svgInfo.category)}
{#each svgInfo.category.sort() as c, index}
<a href={`/directory/${c.toLowerCase()}`} class={badgeStyles}>{c} </a>
{/each}
{:else}
<a href={`/directory/${svgInfo.category.toLowerCase()}`} class={badgeStyles}>
{svgInfo.category}
</a>
{/if}
</div>
</div>
<!-- Actions -->
<div class="flex items-center space-x-1">
@ -276,73 +231,14 @@
</button>
{/if}
{#if typeof svgInfo.route !== 'string'}
<DropdownMenu.Root>
<DropdownMenu.Trigger
title="Download SVG"
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
title="Download Light & Dark variants"
class="flex h-10 select-none items-center rounded-md py-3 pl-3 pr-1.5 text-sm font-medium cursor-pointer 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
title="Download only {document.documentElement.classList.contains('dark')
? 'dark'
: 'light'} variant"
class="flex h-10 select-none items-center rounded-md py-3 pl-3 pr-1.5 text-sm font-medium cursor-pointer hover:bg-neutral-100 dark:hover:bg-neutral-700/40"
on:click={() => {
const svgHasTheme = typeof svgInfo.route !== 'string';
<DownloadSvg
{svgInfo}
isDarkTheme={() => {
const dark = document.documentElement.classList.contains('dark');
return dark;
}}
/>
if (!svgHasTheme) {
downloadSvg(
typeof svgInfo.route === 'string'
? svgInfo.route
: "Something went wrong. Couldn't copy the SVG."
);
return;
}
const dark = document.documentElement.classList.contains('dark');
downloadSvg(
typeof svgInfo.route !== 'string'
? dark
? svgInfo.route.dark
: svgInfo.route.light
: 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"
>
<DownloadIcon size={iconSize} strokeWidth={iconStroke} />
</button>
{/if}
<a
href={svgInfo.url}
title="Website"

View File

@ -1160,7 +1160,7 @@ export const svgs: iSVG[] = [
},
{
title: 'WordPress',
category: 'Software',
category: ['Software', 'CMS'],
route: '/library/wordpress.svg',
url: 'https://wordpress.org/'
},
@ -2028,16 +2028,7 @@ export const svgs: iSVG[] = [
url: 'https://www.webflow.com'
},
{
title: 'bigcommerce',
category: 'CMS',
route: {
light: '/library/bigcommerce-light.svg',
dark: '/library/bigcommerce-dark.svg'
},
url: 'https://www.bigcommerce.co.uk'
},
{
title: 'sanity',
title: 'Sanity',
category: 'CMS',
route: '/library/sanity.svg',
url: 'https://www.sanity.io'
@ -2049,57 +2040,60 @@ export const svgs: iSVG[] = [
url: 'https://www.sky.com'
},
{
title: 'airbnb',
title: 'Airbnb',
category: 'Software',
route: '/library/airbnb.svg',
wordmark: '/library/airbnb-wordmark.svg',
url: 'https://www.airbnb.com'
},
{
title: 'uber',
title: 'Uber',
category: 'Software',
route: '/library/uber.svg',
route: {
light: '/library/uber_light.svg',
dark: '/library/uber_dark.svg'
},
url: 'https://www.uber.com'
},
{
title: 'gmail',
title: 'Gmail',
category: 'Software',
route: '/library/gmail.svg',
url: 'https://www.gmail.com'
},
{
title: 'outlook',
title: 'Outlook',
category: 'Software',
route: '/library/outlook.svg',
url: 'https://www.outlook.com'
},
{
title: 'slack',
title: 'Slack',
category: 'Software',
route: '/library/slack.svg',
wordmark: '/library/slack-wordmark.svg',
url: 'https://www.slack.com'
},
{
title: 'snapchat',
title: 'Snapchat',
category: 'Software',
route: '/library/snapchat.svg',
url: 'https://www.snapchat.com'
},
{
title: 'ebay',
title: 'Ebay',
category: 'Software',
route: '/library/ebay.svg',
url: 'https://www.ebay.com'
},
{
title: 'ibm',
title: 'IBM',
category: 'Software',
route: '/library/ibm.svg',
url: 'https://www.ibm.com'
},
{
title: 'trustpilot',
title: 'TrustPilot',
category: 'Software',
route: '/library/trustpilot.svg',
url: 'https://www.trustpilot.com'
@ -2383,5 +2377,14 @@ export const svgs: iSVG[] = [
dark: '/library/replicate-wordmark_dark.svg'
},
url: 'https://replicate.com/'
},
{
title: 'Markdown',
category: 'Language',
route: {
light: '/library/markdown-light.svg',
dark: '/library/markdown-dark.svg'
},
url: 'https://www.markdownguide.org/'
}
];

View File

@ -27,32 +27,33 @@ 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 {
export interface Category {
category: string;
total: number;
}
```
- For SVGs:
```ts
type ThemeOptions = {
light: string;
dark: string;
};
export interface iSVG {
id: number;
title: string;
category: string | string[];
route: string | ThemeOptions;
wordmark?: string | ThemeOptions;
url: string;
}
```
## Endpoints
<Endpoint title="Get all SVGs" method="GET" description="Returns all the SVGs in the repository.">

View File

@ -8,13 +8,9 @@
// Get categories:
import { svgs } from '@/data/svgs';
const categories = svgs
.map((svg) => svg.category)
.flatMap((svg) => Array.isArray(svg.category) ? svg.category : [svg.category])
.filter((category, index, array) => array.indexOf(category) === index);
// Icons:
import Heart from 'phosphor-svelte/lib/Heart';
import { ArrowUpRight } from 'lucide-svelte';
// Toaster:
import { Toaster } from 'svelte-sonner';

View File

@ -15,6 +15,7 @@
// Icons:
import { ArrowDown, ArrowDownUpIcon, ArrowUpDownIcon } from 'lucide-svelte';
import { buttonStyles } from '@/ui/styles';
let sorted: boolean = false;
let isFirstLoad: boolean = true;
@ -117,15 +118,14 @@
</Grid>
{#if filteredSvgs.length > 30 && !showAll}
<div class="flex items-center justify-center mt-4">
<button
class="flex items-center space-x-2 rounded-md border border-neutral-300 p-2 duration-100 hover:bg-neutral-200 dark:border-neutral-700 dark:hover:bg-neutral-700/40"
on:click={() => (showAll = true)}
>
<ArrowDown size={16} strokeWidth={2} />
<span>Load All SVGs</span>
<span class="opacity-70">
({filteredSvgs.length - 30} more)
</span>
<button class={buttonStyles} on:click={() => (showAll = true)}>
<div class="flex items-center space-x-2 relative">
<ArrowDown size={16} strokeWidth={2} />
<span>Load All SVGs</span>
<span class="opacity-70">
({filteredSvgs.length - 30} more)
</span>
</div>
</button>
</div>
{/if}

View File

@ -13,7 +13,13 @@ export const load = (async ({ params }) => {
}
// Filter out the svg with the matching slug:
const svgsByCategory = svgs.filter((svg: iSVG) => svg.category.toLowerCase() === slug);
const svgsByCategory = svgs.filter((svg: iSVG) => {
if (Array.isArray(svg.category)) {
return svg.category.some(categoryItem => categoryItem.toLowerCase() === slug);
} else {
return svg.category.toLowerCase() === slug;
}
});
return {
category: slug as string,

View File

@ -1,20 +1,18 @@
import type { tCategory } from './categories';
type CategoryPair = [tCategory, tCategory];
type CategoryTriple = [tCategory, tCategory, tCategory];
type ThemeOptions = {
dark: string;
light: string;
};
export interface iSVG {
id?: number;
title: string;
category: tCategory;
route:
| string // for backwards compat of when theme support was not added
| {
dark: string;
light: string;
};
wordmark?:
| string // for backwards compat of when theme support was not added
| {
dark: string;
light: string;
};
category: tCategory | CategoryPair | CategoryTriple;
route: string | ThemeOptions;
wordmark?: string | ThemeOptions;
url: string;
}

View File

@ -0,0 +1,38 @@
<script lang="ts">
import { Dialog as DialogPrimitive } from 'bits-ui';
import * as Dialog from '@/ui/dialog';
import { cn } from '@/utils/cn';
import { X } from 'lucide-svelte';
import { flyAndScale } from '@/utils/flyAndScale';
type $$Props = DialogPrimitive.ContentProps;
let className: $$Props['class'] = undefined;
export let transition: $$Props['transition'] = flyAndScale;
export let transitionConfig: $$Props['transitionConfig'] = {
duration: 200
};
export { className as class };
</script>
<Dialog.Portal>
<Dialog.Overlay />
<DialogPrimitive.Content
{transition}
{transitionConfig}
class={cn(
'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] border border-neutral-200 dark:border-neutral-800 dark:bg-neutral-900 bg-white p-6 shadow-lg sm:rounded-lg md:w-full',
className
)}
{...$$restProps}
>
<slot />
<DialogPrimitive.Close
class="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"
>
<X class="h-4 w-4" />
<span class="sr-only">Close</span>
</DialogPrimitive.Close>
</DialogPrimitive.Content>
</Dialog.Portal>

View File

@ -0,0 +1,13 @@
<script lang="ts">
import { Dialog as DialogPrimitive } from 'bits-ui';
import { cn } from '@/utils/cn';
type $$Props = DialogPrimitive.DescriptionProps;
let className: $$Props['class'] = undefined;
export { className as class };
</script>
<DialogPrimitive.Description class={cn('text-sm opacity-70 mb-2', className)} {...$$restProps}>
<slot />
</DialogPrimitive.Description>

View File

@ -0,0 +1,16 @@
<script lang="ts">
import { cn } from '@/utils/cn';
import type { HTMLAttributes } from 'svelte/elements';
type $$Props = HTMLAttributes<HTMLDivElement>;
let className: $$Props['class'] = undefined;
export { className as class };
</script>
<div
class={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}
{...$$restProps}
>
<slot />
</div>

View File

@ -0,0 +1,13 @@
<script lang="ts">
import { cn } from '@/utils/cn';
import type { HTMLAttributes } from 'svelte/elements';
type $$Props = HTMLAttributes<HTMLDivElement>;
let className: $$Props['class'] = undefined;
export { className as class };
</script>
<div class={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...$$restProps}>
<slot />
</div>

View File

@ -0,0 +1,24 @@
<script lang="ts">
import { Dialog as DialogPrimitive } from 'bits-ui';
import { cn } from '@/utils/cn';
import { fade } from 'svelte/transition';
type $$Props = DialogPrimitive.OverlayProps;
let className: $$Props['class'] = undefined;
export let transition: $$Props['transition'] = fade;
export let transitionConfig: $$Props['transitionConfig'] = {
duration: 150
};
export { className as class };
</script>
<DialogPrimitive.Overlay
{transition}
{transitionConfig}
class={cn(
'fixed inset-0 z-50 bg-neutral-100/80 dark:bg-neutral-900/80 backdrop-blur-sm',
className
)}
{...$$restProps}
/>

View File

@ -0,0 +1,8 @@
<script lang="ts">
import { Dialog as DialogPrimitive } from 'bits-ui';
type $$Props = DialogPrimitive.PortalProps;
</script>
<DialogPrimitive.Portal {...$$restProps}>
<slot />
</DialogPrimitive.Portal>

View File

@ -0,0 +1,16 @@
<script lang="ts">
import { Dialog as DialogPrimitive } from 'bits-ui';
import { cn } from '@/utils/cn';
type $$Props = DialogPrimitive.TitleProps;
let className: $$Props['class'] = undefined;
export { className as class };
</script>
<DialogPrimitive.Title
class={cn('text-lg font-semibold leading-none tracking-tight', className)}
{...$$restProps}
>
<slot />
</DialogPrimitive.Title>

34
src/ui/dialog/index.ts Normal file
View File

@ -0,0 +1,34 @@
import { Dialog as DialogPrimitive } from 'bits-ui';
const Root = DialogPrimitive.Root;
const Trigger = DialogPrimitive.Trigger;
import Title from './dialog-title.svelte';
import Portal from './dialog-portal.svelte';
import Footer from './dialog-footer.svelte';
import Header from './dialog-header.svelte';
import Overlay from './dialog-overlay.svelte';
import Content from './dialog-content.svelte';
import Description from './dialog-description.svelte';
export {
Root,
Title,
Portal,
Footer,
Header,
Trigger,
Overlay,
Content,
Description,
//
Root as Dialog,
Title as DialogTitle,
Portal as DialogPortal,
Footer as DialogFooter,
Header as DialogHeader,
Trigger as DialogTrigger,
Overlay as DialogOverlay,
Content as DialogContent,
Description as DialogDescription
};

8
src/ui/styles.ts Normal file
View File

@ -0,0 +1,8 @@
export const buttonStyles =
'flex items-center space-x-2 relative h-10 overflow-hidden rounded-md border border-neutral-200 dark:border-neutral-800 bg-transparent px-4 text-neutral-950 dark:text-white hover:bg-neutral-200/50 dark:hover:bg-neutral-800/50 focus:outline-none focus:ring-1 focus:ring-neutral-300 dark:focus:ring-neutral-700 transition-colors duration-100';
export const inputStyles =
'w-full border-b border-neutral-300 bg-white p-3 px-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';
export const badgeStyles =
'inline-flex items-center px-2.5 py-0.5 rounded-full font-medium bg-neutral-100 dark:bg-neutral-800/50 text-neutral-500 dark:text-neutral-400 text-xs font-mono hover:underline';

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<svg width="64" height="55.425" version="1.0" xmlns="http://www.w3.org/2000/svg">
<svg viewBox="0 0 64 55.425" width="64" height="55.425" version="1.0" xmlns="http://www.w3.org/2000/svg">
<rect id="background" width="100%" height="100%" fill="none" />
<path id="emblem" d="m32 0-14.255 24.69c5.409-1.6676 11.228-1.9148 16.869-0.58434l4.8177 1.1372-4.5328 19.22-4.8247-1.1372c-5.9293-1.3987-11.628 1.716-14.036 6.6851l-4.4595-2.1575c3.4034-7.0291 11.424-11.285 19.636-9.3476l2.2595-9.579c-8.0938-1.9081-16.624-9e-3 -23.145 5.153-6.5204 5.1607-10.329 13.028-10.329 21.344l64 7.9e-4z" fill="#60a5fa" stroke-linecap="square" stroke-width="4.8768" style="paint-order:markers fill stroke" />
</svg>

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 652 B

View File

@ -1,3 +1,4 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2_2)">
<path d="M0 11.0769C0 4.95931 4.95931 0 11.0769 0H36.9231C43.0407 0 48 4.95931 48 11.0769V36.9231C48 43.0407 43.0407 48 36.9231 48H11.0769C4.95931 48 0 43.0407 0 36.9231V11.0769Z" fill="#0052FF"/>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="208" height="128"><path fill="none" stroke="#FFF" stroke-width="10" d="M15 5h178a10 10 0 0 1 10 10v98a10 10 0 0 1-10 10H15a10 10 0 0 1-10-10V15A10 10 0 0 1 15 5z"/><path fill="#FFF" d="M30 98V30h20l20 25 20-25h20v68H90V59L70 84 50 59v39H30zm125 0-30-33h20V30h20v35h20l-30 33z"/></svg>

After

Width:  |  Height:  |  Size: 352 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="208" height="128" fill="none"><g fill="#000"><path fill-rule="evenodd" d="M15 10a5 5 0 0 0-5 5v98a5 5 0 0 0 5 5h178a5 5 0 0 0 5-5V15a5 5 0 0 0-5-5zM0 15A15 15 0 0 1 15 0h178a15 15 0 0 1 15 15v98a15 15 0 0 1-15 15H15a15 15 0 0 1-15-15z" clip-rule="evenodd"/><path d="M30 98V30h20l20 25 20-25h20v68H90V59L70 84 50 59v39zm125 0-30-33h20V30h20v35h20z"/></g></svg>

After

Width:  |  Height:  |  Size: 406 B

View File

@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="60">
<svg viewBox="0 0 120 60" xmlns="http://www.w3.org/2000/svg" width="120" height="60">
<path d="M16.147 5.154l1.09 2.05a6.15 6.15 0 0 0 .824 1.024c.913.913 1.782 1.87 2.56 2.895 1.848 2.427 3.095 5.122 3.986 8.04.534 1.782.824 3.608.846 5.456.09 5.523-1.804 10.266-5.634 14.208a16.3 16.3 0 0 1-2.004 1.715c-.38 0-.557-.3-.713-.557-.3-.5-.468-1.047-.557-1.603-.134-.668-.223-1.336-.178-2.027v-.312c-.022-.067-.356-30.732-.223-30.888z" fill="#599636"/>
<path d="M16.147 5.088c-.045-.09-.09-.022-.134.022.022.445-.134.846-.38 1.225-.267.38-.624.668-.98.98-1.982 1.715-3.54 3.786-4.788 6.102-1.648 3.118-2.516 6.458-2.76 9.977-.11 1.27.4 5.746.802 7.037 1.09 3.43 3.05 6.302 5.6 8.796.624.6 1.292 1.158 1.982 1.692.2 0 .223-.178.267-.312a6.11 6.11 0 0 0 .2-.869c.2-1.113.312-2.227.445-3.34l-.245-31.31z" fill="#6cac48"/>
<path d="M17.24 41.9c.045-.512.3-.935.557-1.358-.267-.11-.468-.334-.624-.58-.134-.223-.245-.5-.334-.735-.312-.935-.38-1.915-.468-2.873v-.58c-.11.09-.134.846-.134.958-.067 1.024-.2 2.027-.4 3.006-.067.4-.11.802-.356 1.158 0 .045 0 .09.022.156.4 1.18.512 2.383.58 3.608v.445c0 .534-.022.423.423.6.178.067.38.09.557.223.134 0 .156-.11.156-.2l-.067-.735v-2.05c-.022-.356.045-.713.09-1.047z" fill="#c2bfbf"/>

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -1,12 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.0" viewBox="0 0 1190.55 841.89">
<path d="M824.58 393.61v116.13h-38.17v-96.3l38.17-19.83zM313.77 512.66l89.19-46.64-11-28.48-58.72 27.38-19.47 47.74z" class="st0"/>
<path d="m786.42 413.34 96.77-49.52-16.35-27.65-80.42 39.3v37.87z" class="st1"/>
<path d="M513.89 384.42v125.32h-36.4V331.26l36.4 53.16z" class="st0"/>
<path d="m368.93 377.49-55.15 135.17-28.37-24.42 65.71-156.98 17.81 46.23z" class="st1"/>
<path d="M351.12 331.26h37.6l69.54 178.48h-38.49l-68.65-178.48zm168.4 0 80.16 121.94v56.54L477.49 331.26h42.03zm186.7 0h-37.88v178.51h37.88V331.26zm80.2 32.56H728.1v-32.56h135.82l19.26 32.56h-96.76z" class="st2"/>
<path d="M995.03 442.01v67.72h-37.6v-67.72" class="st1"/>
<path d="m957.43 442.01 63.62-110.75H1061l-65.97 110.75h-37.6z" class="st2"/>
<path d="m957.43 442.01-65.4-110.75h41.14l44.3 75.9-20.04 34.85z" class="st0"/>
<path d="M144.27 351.86c0 24.85 15.62 39.64 46.9 47.44l33.14 7.55c29.6 6.68 47.62 23.27 47.62 50.3.23 11.77-3.67 23.27-11.04 32.56 0-26.97-14.2-41.54-48.45-50.3l-32.54-7.27c-26.06-5.84-46.17-19.48-46.17-48.84-.12-11.34 3.58-22.4 10.54-31.44" class="st2"/>
<path d="M599.68 444.03V331.26h36.4v178.48h-36.4v-65.71zm-359.14 6.5c14.13 8.88 20.33 21.31 20.33 39.14-11.7 14.72-32.26 22.99-56.42 22.99-40.67 0-69.13-19.67-75.45-53.84h39.05c5.03 15.69 18.34 22.96 36.11 22.96 21.69 0 36.11-11.37 36.4-31.32m-75.98-61.76c-6.45-3.77-11.75-9.18-15.33-15.67-3.57-6.49-5.29-13.8-4.98-21.17 11.29-14.6 30.93-23.52 54.87-23.52 41.43 0 65.4 21.5 71.31 51.76h-37.57c-4.14-11.93-14.52-21.22-33.43-21.22-20.21 0-33.99 11.56-34.79 29.82" class="st0"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="104" preserveAspectRatio="xMidYMid" viewBox="0 0 512 104"><path fill="#F37368" d="M381.462 36.986v64.834h-20.886V26.833z"/><path fill="#F7A199" d="m85.865 89.781 15.665 13.634 65.994-34.375-6.817-16.39-74.842 37.131Zm274.71-41.772 53.086-27.558-8.992-15.52-44.093 21.902v21.176Z"/><path fill="#F37368" d="M211.182 31.91v69.91h-20.016V2.176l20.016 29.733ZM85.865 89.78l15.665 13.634 30.169-75.422-9.718-25.817L85.865 89.78Z"/><path fill="#F04939" d="M121.98 2.176h20.597l38.146 99.644h-21.176L121.98 2.176Zm92.248 0L258.176 70.2v31.619l-67.01-99.644h23.062Zm81.659 0h20.74v99.644h-20.74V2.176Zm64.689 18.275h-31.91V2.176h74.407l10.588 18.275H360.576Z"/><path fill="#F7A199" d="M475.014 63.964v37.856h-20.596V63.964"/><path fill="#F04939" d="m489.228 2.176-34.81 61.788h20.596L511.13 2.176z"/><path fill="#F37368" d="m454.418 63.964-35.97-61.788h22.626l24.222 42.352z"/><path fill="#F04939" d="M8.558 13.779c0 13.78 8.557 22.046 25.672 26.398l18.13 4.206c16.245 3.771 26.108 13.054 26.108 28.138.145 6.527-2.03 12.909-5.947 18.13 0-15.084-7.832-23.206-26.543-28.138l-17.84-4.06C13.78 55.26 2.756 47.572 2.756 31.183c0-6.237 2.03-12.474 5.802-17.405"/><path fill="#F37368" d="M258.176 65.124V2.176h20.016v99.644h-20.016zM61.353 68.75c7.687 4.932 11.168 11.894 11.168 21.902-6.527 8.267-17.695 12.763-30.894 12.763-22.191 0-38-11.023-41.337-30.023h21.321c2.756 8.702 10.008 12.763 19.871 12.763 11.749.145 19.726-6.237 19.871-17.405M8.558 13.634C14.794 5.512 25.528.58 38.58.58c22.772 0 35.826 12.039 39.162 28.864H57.147c-2.32-6.672-7.978-11.894-18.276-11.894-11.168.145-18.71 6.527-19.145 16.68-7.474-4.122-11.459-12.184-11.168-20.596Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 926.905 321.777">
<path fill="#ffff" d="M53.328 229.809c3.917 10.395 9.34 19.283 16.27 26.664 6.93 7.382 15.14 13.031 24.63 16.948 9.491 3.917 19.81 5.875 30.958 5.875 10.847 0 21.015-2.034 30.506-6.102s17.776-9.792 24.856-17.173c7.08-7.382 12.579-16.194 16.496-26.438s5.875-21.692 5.875-34.347V0h47.453v316.354h-47.001v-29.376c-10.545 11.147-22.974 19.734-37.285 25.761-14.312 6.025-29.752 9.038-46.323 9.038-16.873 0-32.615-2.938-47.228-8.813-14.612-5.875-27.267-14.235-37.962-25.082S15.441 264.006 9.265 248.79C3.088 233.575 0 216.628 0 197.947V0h47.453v195.236c0 12.655 1.958 24.178 5.875 34.573zM332.168 0v115.243c10.545-10.545 22.748-18.905 36.607-25.082s28.924-9.265 45.193-9.265c16.873 0 32.689 3.163 47.453 9.49 14.763 6.327 27.567 14.914 38.414 25.761s19.434 23.651 25.761 38.414c6.327 14.764 9.49 30.431 9.49 47.002 0 16.57-3.163 32.162-9.49 46.774-6.327 14.613-14.914 27.343-25.761 38.188-10.847 10.847-23.651 19.434-38.414 25.761-14.764 6.327-30.581 9.49-47.453 9.49-16.27 0-31.409-3.088-45.419-9.265-14.01-6.176-26.288-14.537-36.833-25.082v28.924h-45.193V0zm5.197 232.746c4.067 9.642 9.717 18.078 16.948 25.309s15.667 12.956 25.308 17.174c9.642 4.218 20.036 6.327 31.184 6.327 10.847 0 21.09-2.109 30.731-6.327s18.001-9.942 25.083-17.174c7.08-7.23 12.729-15.667 16.947-25.309 4.218-9.641 6.327-20.035 6.327-31.183s-2.109-21.618-6.327-31.41-9.867-18.303-16.947-25.534c-7.081-7.23-15.441-12.88-25.083-16.947s-19.885-6.102-30.731-6.102-21.09 2.034-30.731 6.102-18.077 9.717-25.309 16.947c-7.23 7.231-12.955 15.742-17.173 25.534s-6.327 20.262-6.327 31.41c-.001 11.148 2.033 21.542 6.1 31.183zm223.477-77.732c6.025-14.462 14.312-27.191 24.856-38.188s23.049-19.659 37.511-25.986 30.129-9.49 47.001-9.49c16.571 0 31.937 3.013 46.098 9.038 14.16 6.026 26.362 14.387 36.606 25.083 10.244 10.695 18.229 23.35 23.952 37.962 5.725 14.613 8.587 30.506 8.587 47.68v14.914H597.901c1.507 9.34 4.52 18.002 9.039 25.985 4.52 7.984 10.168 14.914 16.947 20.789 6.779 5.876 14.462 10.471 23.049 13.784 8.587 3.314 17.7 4.972 27.342 4.972 27.418 0 49.563-11.299 66.435-33.896l32.991 24.404c-11.449 15.366-25.609 27.418-42.481 36.155-16.873 8.737-35.854 13.106-56.944 13.106-17.174 0-33.217-3.014-48.131-9.039s-27.869-14.462-38.866-25.309-19.659-23.576-25.986-38.188-9.491-30.506-9.491-47.679c-.002-16.269 3.012-31.635 9.037-46.097zm63.497-17.852c-12.805 10.696-21.316 24.932-25.534 42.708h140.552c-3.917-17.776-12.278-32.012-25.083-42.708-12.805-10.695-27.794-16.043-44.967-16.043-17.174 0-32.163 5.348-44.968 16.043zm246.527 5.197c-9.641 10.545-14.462 24.856-14.462 42.934v131.062h-45.646V85.868h45.193v28.472c5.725-9.34 13.182-16.722 22.371-22.145 9.189-5.424 20.111-8.136 32.766-8.136h15.817v42.482h-18.981c-15.064.001-27.417 5.273-37.058 15.818z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,10 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.0" viewBox="0 0 841.89 595.28">
<path fill="#146ef5" fill-rule="evenodd" d="M255.81 238.27 195.3 356.55h-56.83l25.32-49.02h-1.14c-20.89 27.12-52.06 44.97-96.47 49.02v-48.34s28.41-1.68 45.11-19.24h-45.1v-50.7h50.7v41.7h1.14l20.72-41.7h38.34v41.44h1.14l21.5-41.44h56.08z" clip-rule="evenodd"/>
<path d="M585.75 343.5h16.33v-93.73h-16.33v93.73z" class="st1"/>
<path d="M495.74 342.54c3.55 1.48 7.16 2.21 10.83 2.21 6.06 0 11.48-1.48 16.27-4.43 4.78-2.95 8.49-7.02 11.13-12.2 2.63-5.22 3.95-11.15 3.95-17.76 0-6.62-1.36-12.54-4.07-17.76-2.71-5.22-6.48-9.27-11.31-12.14-4.82-2.91-10.31-4.35-16.45-4.31-3.91 0-7.66.76-11.24 2.27-3.59 1.52-6.58 3.67-8.97 6.46-.18.21-.36.43-.54.64v-35.69h-16.39v93.67h16.27l-.03-8.75c.42.52.87 1.02 1.35 1.51 2.58 2.67 5.65 4.76 9.2 6.28zm16.74-15.13c-2.67 1.63-5.72 2.45-9.15 2.45-3.39 0-6.5-.84-9.33-2.51-2.83-1.72-5.08-4.05-6.76-7-1.63-2.95-2.45-6.3-2.45-10.05-.04-3.75.76-7.1 2.39-10.05 1.67-2.99 3.93-5.3 6.76-6.94 2.83-1.67 5.96-2.49 9.39-2.45 3.43-.04 6.48.76 9.15 2.39 2.71 1.59 4.78 3.89 6.22 6.88 1.48 2.95 2.21 6.34 2.21 10.17s-.74 7.22-2.21 10.17c-1.43 2.95-3.5 5.26-6.22 6.94z" class="st2"/>
<path d="M279.47 255.45h18.66l16.69 60.97 17.76-60.97h15.55l19.26 59.74 16.03-59.74h17.11l-25.24 88.04H359.2l-19.58-58.36-17.98 58.36h-16.27l-25.9-88.04z" class="st1"/>
<path d="M428.09 345.05c-6.5.04-12.36-1.4-17.59-4.31-5.18-2.95-9.27-7.04-12.26-12.26-2.95-5.22-4.43-11.18-4.43-17.88 0-6.5 1.52-12.38 4.55-17.64s7.14-9.37 12.32-12.32c5.18-2.95 10.97-4.43 17.35-4.43 7.18 0 13.46 1.59 18.84 4.78 5.42 3.19 9.47 7.72 12.14 13.58 2.71 5.82 3.69 12.5 2.93 20.04h-51.23c.14 3 .89 5.73 2.25 8.19 1.52 2.71 3.63 4.82 6.34 6.34 2.71 1.52 5.74 2.27 9.09 2.27 2.55-.04 4.92-.48 7.12-1.32 2.19-.88 4.05-2.05 5.56-3.53 1.56-1.48 2.65-3.15 3.29-5.02h17.11c-1.04 4.59-3.11 8.67-6.22 12.26-3.11 3.55-7.02 6.32-11.72 8.31-4.71 2-9.86 2.98-15.44 2.94zm-15.07-46.89c-.96 1.67-1.62 3.46-1.99 5.38h33.96c-.25-2.43-1-4.64-2.25-6.64-1.44-2.35-3.39-4.17-5.86-5.44-2.47-1.32-5.26-1.97-8.37-1.97-3.31 0-6.32.76-9.03 2.27-2.72 1.51-4.87 3.65-6.46 6.4z" class="st2"/>
<path d="M549.93 277.58c0-5.34 1.22-10.09 3.65-14.24 2.43-4.19 5.84-7.44 10.23-9.75 4.43-2.35 9.59-3.57 15.49-3.65v14.53c-2.75.04-5.1.62-7.06 1.73-1.91 1.08-3.39 2.65-4.43 4.73-.95 1.91-1.47 4.12-1.54 6.64h12.67v13.82h-12.68v52.1h-16.33v-52.1H539.4v-13.82h10.53z" class="st1"/>
<path d="M643.59 344.93c-6.66 0-12.62-1.46-17.88-4.37-5.22-2.95-9.33-7.02-12.32-12.2-2.95-5.22-4.43-11.14-4.43-17.76 0-6.66 1.48-12.6 4.43-17.82 2.99-5.26 7.1-9.35 12.32-12.26 5.26-2.91 11.22-4.37 17.88-4.37 6.7 0 12.68 1.46 17.94 4.37 5.3 2.91 9.43 6.98 12.38 12.2 2.95 5.22 4.45 11.18 4.49 17.88-.04 6.62-1.54 12.54-4.49 17.76-2.91 5.18-7.02 9.25-12.32 12.2-5.3 2.92-11.3 4.37-18 4.37zm0-15.01c3.51 0 6.62-.8 9.33-2.39 2.71-1.63 4.8-3.91 6.28-6.82 1.48-2.95 2.21-6.32 2.21-10.11 0-3.83-.74-7.22-2.21-10.17-1.48-2.95-3.57-5.22-6.28-6.82-2.71-1.63-5.82-2.45-9.33-2.45-3.47 0-6.56.82-9.27 2.45-2.67 1.6-4.75 3.87-6.22 6.82-1.48 2.95-2.19 6.34-2.15 10.17 0 3.79.74 7.16 2.21 10.11 1.52 2.91 3.59 5.18 6.22 6.82 2.67 1.59 5.74 2.39 9.21 2.39z" class="st2"/>
<path d="M696.05 277.58h-18.18l19.68 65.91h15.91l12.94-42.1 13.97 42.1h15.67l19.74-65.91h-16.45l-11.2 41.03-12.37-41.03h-15.91l-12.31 41.93-11.49-41.93z" class="st1"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="129" preserveAspectRatio="xMidYMid" viewBox="0 0 512 129"><path fill="#4353FF" d="M165.325 50.358c0-9.185-8.932-18.94-24.387-18.94-17.356 0-36.422 12.732-39.336 38.132-2.977 25.654 12.985 37.056 29.074 37.056 16.09 0 24.514-6.271 33.129-14.632-7.412-9.312-16.976-5.004-18.813-4.054-2.027 1.013-4.624 2.407-9.945 2.407-6.208 0-12.542-2.787-12.542-14.379 39.78-3.927 42.82-16.406 42.82-25.59Zm-19.7 1.52c-.253 2.85-1.393 7.728-21.536 10.451 4.244-15.075 12.351-16.215 16.089-16.215 3.484 0 5.7 2.723 5.447 5.764Zm-67.397 2.47s-8.55 26.857-9.248 29.074c-.253-2.28-6.524-50.484-6.524-50.484-14.569 0-22.36 10.388-26.477 21.347 0 0-10.389 26.92-11.275 29.2-.064-2.09-1.584-28.883-1.584-28.883-.887-13.43-13.175-21.6-23.12-21.6l12.035 73.034c15.266-.063 23.5-10.388 27.808-21.347 0 0 9.184-23.753 9.564-24.83.064 1.013 6.588 46.177 6.588 46.177 15.329 0 23.564-9.692 27.998-20.27l21.473-52.764c-15.14 0-23.12 10.324-27.238 21.346Zm143.345-23.057c-9.438 0-16.659 5.131-22.74 12.669v-.063L204.281 0c-12.542 0-22.74 10.895-24.704 27.11l-9.502 78.356c7.222 0 14.886-2.09 19.003-7.411 3.674 4.75 9.185 8.551 17.356 8.551 21.157 0 35.662-24.577 35.662-47.634-.126-21.03-10.325-27.68-20.523-27.68Zm-1.963 37.69c-2.217 12.858-9.375 21.6-16.28 21.6-6.967 0-9.944-3.105-9.944-3.105 1.33-11.275 2.153-18.179 4.687-24.133 2.534-5.954 8.551-15.456 14.822-15.456 6.144 0 8.932 8.171 6.715 21.093ZM294.924 33h-14.759l.064-.76c1.013-9.628 3.293-14.695 10.831-15.518 5.131-.507 7.411-3.168 7.981-6.081.444-2.28 1.837-10.199 1.837-10.199-29.644-.19-38.955 12.606-41.362 32.115l-.064.444h-.317c-4.814 0-10.134 5.447-11.021 12.351l-.317 2.534h9.882l-8.298 68.537-2.534 12.289c.317 0 .697.063 1.013.063 13.873-.507 22.74-11.465 24.704-27.364l6.461-53.525h4.624c4.56 0 9.882-4.56 10.832-12.162l.443-2.723Zm76.772-1.266c-17.04 0-33.129 12.542-38.07 32.241-4.94 19.7 2.534 43.01 27.618 43.01 25.02 0 39.463-24.26 39.463-44.467 0-20.08-13.619-30.784-29.011-30.784Zm6.904 36.612c-.887 8.931-4.814 22.487-15.582 22.487-10.832 0-9.312-15.836-8.235-23.374 1.14-8.044 5.638-19.51 15.33-19.51 8.677 0 9.5 10.325 8.487 20.397Zm106.29-13.999s-8.552 26.857-9.249 29.074c-.253-2.28-6.524-50.484-6.524-50.484-14.569 0-22.36 10.388-26.477 21.347 0 0-10.389 26.92-11.275 29.2-.064-2.09-1.584-28.883-1.584-28.883-.887-13.43-13.175-21.6-23.12-21.6l11.972 73.034c15.265-.063 23.5-10.388 27.807-21.347 0 0 9.185-23.753 9.502-24.83.063 1.013 6.587 46.177 6.587 46.177 15.33 0 23.564-9.692 27.998-20.27L512 33.002c-15.076 0-23.057 10.324-27.11 21.346ZM308.86.443l-12.416 100.145-2.533 12.352c.316 0 .696.064 1.013.064 13.365-.19 22.867-11.909 24.64-26.668l7.158-57.452c2.154-17.546-8.298-28.44-17.862-28.44Z"/></svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB