chore: port assets, set up basic seo

This commit is contained in:
limes
2026-08-14 15:21:57 +02:00
parent b373f4c310
commit 975fac1c8c
162 changed files with 767 additions and 815 deletions

View File

@@ -1,5 +1,16 @@
<script setup lang="ts">
useHead({
titleTemplate: (titleChunk) => {
return titleChunk ? `${titleChunk} | Pretendo Network` : 'Pretendo Network';
}
});
</script>
<template>
<div id="root" class="main-body">
<div
id="root"
class="main-body"
>
<Navbar />
<div class="wrapper">
<slot />

View File

@@ -9,20 +9,12 @@ if (!post.value) {
}
useHead({
title: `${post.value.title} | Pretendo Network Blog`,
title: `${post.value.title} | Blog`,
meta: [
{ property: 'description', content: post.value.caption },
{ property: 'og:title', content: `${post.value.title} | Pretendo Network Blog` },
{ property: 'og:description', content: post.value.caption },
{ property: 'og:type', content: 'website' },
{ property: 'og:url', content: 'https://pretendo.network/' },
{ property: 'og:image', content: post.value.cover_image },
{ property: 'og:image:alt', content: 'Pretendo Network' },
{ property: 'og:site_name', content: 'Pretendo Network' },
{ name: 'twitter:url', content: 'https://pretendo.network/' },
{ name: 'twitter:card', content: 'summary_large_image' },
{ name: 'twitter:site', content: '@PretendoNetwork' },
{ name: 'twitter:title', content: `${post.value.title} | Pretendo Network Blog` },
{ property: 'og:image:alt', content: '' },
{ name: 'twitter:description', content: post.value.caption },
{ name: 'twitter:image', content: post.value.cover_image }
]

View File

@@ -1,4 +1,7 @@
<script setup lang="ts">
useHead({
title: 'Blog'
});
/* eslint-disable vue/no-v-html -- we might wanna avoid this by rewriting the locales to use variables */
const { data: allPosts } = await useAsyncData('blog', () => queryCollection('blog').all());

View File

@@ -25,391 +25,390 @@ function titleSuffixHandler(path: string) {
</script>
<template>
<NuxtRouteAnnouncer />
<NuxtRouteAnnouncer />
<section class="hero">
<div class="hero-meta">
<h3 class="subtitle">
{{ $t("hero.subtitle") }}
</h3>
<h1
class="title dot"
:data-title-suffix="titleSuffixHandler('hero.titlesuffix')"
<section class="hero">
<div class="hero-meta">
<h3 class="subtitle">
{{ $t("hero.subtitle") }}
</h3>
<h1
class="title dot"
:data-title-suffix="titleSuffixHandler('hero.titlesuffix')"
>
{{ $t("hero.title") }}
</h1>
<p class="text">
{{ $t("hero.text") }}
</p>
<div class="buttons">
<a
href="/#about"
class="do-button-margin"
>
{{ $t("hero.title") }}
</h1>
<p class="text">
{{ $t("hero.text") }}
<button class="button primary">
{{ $t("hero.buttons.readMore") }}
</button>
</a>
<a
href="https://discord.gg/pretendo"
class="do-button-margin"
target="_blank"
aria-label="Open Discord"
>
<button
class="button secondary discord icon-btn"
focusable="false"
>
<Icon
name="fa7-brands:discord"
size="32"
/>
</button>
</a>
<a
href="https://github.com/PretendoNetwork/"
class="do-button-margin"
target="_blank"
aria-label="Open Github"
>
<button
class="button secondary github icon-btn"
focusable="false"
>
<Icon
name="fa7-brands:github"
size="32"
/>
</button>
</a>
<a
href="/account/upgrade"
target="_blank"
aria-label="Upgrade account"
>
<button
class="button secondary github icon-btn"
focusable="false"
>
<Icon
name="ph:heart-fill"
size="32"
/>
</button>
</a>
</div>
</div>
<div class="hero-image">
<div class="light-purple-circle">
<img
class="n2ds"
src="/assets/images/n2ds.png"
alt=""
>
<div class="deco">
<HeroDeco />
</div>
</div>
</div>
<div class="misc">
<div class="purple-circle" />
</div>
</section>
<section class="progress column-2">
<div class="left sect">
<div class="left-meta">
<h2
id="about"
class="dot title"
:data-title-suffix="titleSuffixHandler('aboutUs.titleSuffix')"
>
{{ $t("aboutUs.title") }}
</h2>
<p
v-for="i in computed(() => tm<string>('aboutUs.paragraphs') as string[]).value.length - 1"
:key="i"
class="text"
>
{{ $t(`aboutUs.paragraphs[${i}]`) }}
</p>
<div class="buttons">
<a
href="/#about"
class="do-button-margin"
</div>
</div>
<div class="right sect">
<h2 class="title">
<a href="/progress">{{ $t("progress.title") }} ({{ progress.data.value?.completion ?? 0 }}%)</a>
</h2>
<div
v-for="project of progress.data.value?.items ?? []"
:key="project.title"
>
<p>{{ project.title }} [{{ project.completion }}%]</p>
</div>
<p v-if="(progress.data.value?.items ?? []).length === 0">
No projects
</p>
</div>
</section>
<section class="faq">
<div class="sect-top sect">
<h2
id="faq"
class="dot title"
:data-title-suffix="titleSuffixHandler('faq.titleSuffix')"
>
{{ $t("faq.title") }}
</h2>
<p class="text">
{{ $t("faq.text") }}
</p>
</div>
<div class="questions column-2">
<div class="left questions-left">
<details
v-for="i in even(nOfQAs)"
:key="i"
class="question-and-answer"
>
<summary>
{{ $t(`faq.QAs[${i}].question`) }}
</summary>
<p
class="text"
v-html="$t(`faq.QAs[${i}].answer`)"
/>
</details>
</div>
<div class="right questions-right">
<details
v-for="i in odd(nOfQAs)"
:key="i"
class="question-and-answer"
>
<summary>
{{ $t(`faq.QAs[${i}].question`) }}
</summary>
<p
class="text"
v-html="$t(`faq.QAs[${i}].answer`)"
/>
</details>
</div>
</div>
</section>
<section class="showcase">
<div class="sect-top sect">
<h2
id="showcase"
class="dot title"
:data-title-suffix="titleSuffixHandler('showcase.titleSuffix')"
>
{{ $t("showcase.title") }}
</h2>
<p class="text">
{{ $t("showcase.text") }}
</p>
</div>
<div class="grid">
<div class="item highlight">
<Icon
name="ph:hard-drives-fill"
size="48"
mode="svg"
/>
<h1>{{ $t("showcase.cards.0.title") }}</h1>
<p>{{ $t("showcase.cards.0.caption") }}</p>
</div>
<div class="item">
<Icon
name="ph:users-fill"
size="48"
mode="svg"
/>
<h1>{{ $t("showcase.cards.1.title") }}</h1>
<p>{{ $t("showcase.cards.1.caption") }}</p>
</div>
<div class="item">
<Icon
name="ph:game-controller-fill"
size="48"
mode="svg"
/>
<h1>{{ $t("showcase.cards.2.title") }}</h1>
<p>{{ $t("showcase.cards.2.caption") }}</p>
</div>
</div>
</section>
<section class="team">
<div class="sect-top sect team-top">
<h2
id="credits"
class="dot title"
:data-title-suffix="titleSuffixHandler('credits.titleSuffix')"
>
{{ $t("credits.title") }}
</h2>
<p class="text">
{{ $t("credits.text") }}
</p>
</div>
<div class="team-cards">
<div
v-for="i in array(maxCoreStaffIndex)"
:key="i"
class="card"
>
<div class="card-left">
<img
:src="$t(`credits.people[${i}].picture`)"
class="pfp"
alt=""
>
<button class="button primary">
{{ $t("hero.buttons.readMore") }}
</button>
</a>
<a
href="https://discord.gg/pretendo"
class="do-button-margin"
target="_blank"
aria-label="Open Discord"
>
<button
class="button secondary discord icon-btn"
focusable="false"
>
<Icon
name="fa7-brands:discord"
size="32"
/>
</button>
</a>
<a
href="https://github.com/PretendoNetwork/"
class="do-button-margin"
target="_blank"
aria-label="Open Github"
>
<button
class="button secondary github icon-btn"
focusable="false"
</div>
<div class="card-core">
<span
v-if="$te(`credits.people[${i}].special`)"
class="sub"
>{{ $t(`credits.people[${i}].special`) }}</span>
<h3 class="title">
<span>{{ $t(`credits.people[${i}].name`) }}</span>
<a
:href="$t(`credits.people[${i}].github`)"
class="github"
target="_blank"
aria-label="Open Github"
>
<Icon
name="fa7-brands:github"
size="32"
size="24"
/>
</button>
</a>
<a
href="/account/upgrade"
target="_blank"
aria-label="Upgrade account"
>
<button
class="button secondary github icon-btn"
focusable="false"
>
<Icon
name="ph:heart-fill"
size="32"
/>
</button>
</a>
</div>
</div>
<div class="hero-image">
<div class="light-purple-circle">
<img
class="n2ds"
src="/assets/images/n2ds.png"
alt=""
>
<div class="deco">
<HeroDeco />
</div>
</div>
</div>
<div class="misc">
<div class="purple-circle" />
</div>
</section>
<section class="progress column-2">
<div class="left sect">
<div class="left-meta">
<h2
id="about"
class="dot title"
:data-title-suffix="titleSuffixHandler('aboutUs.titleSuffix')"
>
{{ $t("aboutUs.title") }}
</h2>
<p
v-for="i in computed(() => tm<string>('aboutUs.paragraphs') as string[]).value.length - 1"
:key="i"
class="text"
>
{{ $t(`aboutUs.paragraphs[${i}]`) }}
</a>
</h3>
<p class="text">
{{ $t(`credits.people[${i}].caption`) }}
</p>
</div>
</div>
<div class="right sect">
<h2 class="title">
<a href="/progress">{{ $t("progress.title") }} ({{ progress.data.value?.completion ?? 0 }}%)</a>
</h2>
<div
v-for="project of progress.data.value?.items ?? []"
:key="project.title"
>
<p>{{ project.title }} [{{ project.completion }}%]</p>
</div>
<p v-if="(progress.data.value?.items ?? []).length === 0">
No projects
</p>
</div>
</section>
</div>
</section>
<section class="faq">
<div class="sect-top sect">
<h2
id="faq"
class="dot title"
:data-title-suffix="titleSuffixHandler('faq.titleSuffix')"
>
{{ $t("faq.title") }}
</h2>
<p class="text">
{{ $t("faq.text") }}
</p>
</div>
<div class="questions column-2">
<div class="left questions-left">
<details
v-for="i in even(nOfQAs)"
<section class="team-helpers">
<div class="sect-top sect">
<h2
id="special-thanks"
class="dot title"
:data-title-suffix="titleSuffixHandler('specialThanks.titleSuffix')"
>
{{ $t("specialThanks.title") }}
</h2>
<p class="text">
{{ $t("specialThanks.text") }}
</p>
</div>
<div class="animation-wrapper">
<div class="row first">
<div class="team-helpers-cards">
<a
v-for="i in [...even(maxContributorsIndex), ...even(maxContributorsIndex)]"
:key="i"
class="question-and-answer"
:href="$te(`specialThanks.people[${i}].github`) ? $t(`specialThanks.people[${i}].github`) : undefined"
target="_blank"
:class="{ 'helper-card': true, 'special': $te(`specialThanks.people[${i}].special`) }"
>
<summary>
{{ $t(`faq.QAs[${i}].question`) }}
</summary>
<p
class="text"
v-html="$t(`faq.QAs[${i}].answer`)"
/>
</details>
</div>
<div class="right questions-right">
<details
v-for="i in odd(nOfQAs)"
:key="i"
class="question-and-answer"
>
<summary>
{{ $t(`faq.QAs[${i}].question`) }}
</summary>
<p
class="text"
v-html="$t(`faq.QAs[${i}].answer`)"
/>
</details>
</div>
</div>
</section>
<section class="showcase">
<div class="sect-top sect">
<h2
id="showcase"
class="dot title"
:data-title-suffix="titleSuffixHandler('showcase.titleSuffix')"
>
{{ $t("showcase.title") }}
</h2>
<p class="text">
{{ $t("showcase.text") }}
</p>
</div>
<div class="grid">
<div class="item highlight">
<Icon
name="ph:hard-drives-fill"
size="48"
mode="svg"
/>
<h1>{{ $t("showcase.cards.0.title") }}</h1>
<p>{{ $t("showcase.cards.0.caption") }}</p>
</div>
<div class="item">
<Icon
name="ph:users-fill"
size="48"
mode="svg"
/>
<h1>{{ $t("showcase.cards.1.title") }}</h1>
<p>{{ $t("showcase.cards.1.caption") }}</p>
</div>
<div class="item">
<Icon
name="ph:game-controller-fill"
size="48"
mode="svg"
/>
<h1>{{ $t("showcase.cards.2.title") }}</h1>
<p>{{ $t("showcase.cards.2.caption") }}</p>
</div>
</div>
</section>
<section class="team">
<div class="sect-top sect team-top">
<h2
id="credits"
class="dot title"
:data-title-suffix="titleSuffixHandler('credits.titleSuffix')"
>
{{ $t("credits.title") }}
</h2>
<p class="text">
{{ $t("credits.text") }}
</p>
</div>
<div class="team-cards">
<div
v-for="i in array(maxCoreStaffIndex)"
:key="i"
class="card"
>
<div class="card-left">
<img
:src="$t(`credits.people[${i}].picture`)"
class="pfp"
alt=""
>
</div>
<div class="card-core">
<span
v-if="$te(`credits.people[${i}].special`)"
class="sub"
>{{ $t(`credits.people[${i}].special`) }}</span>
<h3 class="title">
<span>{{ $t(`credits.people[${i}].name`) }}</span>
<a
:href="$t(`credits.people[${i}].github`)"
class="github"
target="_blank"
aria-label="Open Github"
<div class="img-wrapper">
<img
:src="$t(`specialThanks.people[${i}].picture`)"
class="pfp"
alt=""
>
<Icon
name="fa7-brands:github"
size="24"
/>
</a>
</h3>
<p class="text">
{{ $t(`credits.people[${i}].caption`) }}
</p>
</div>
</div>
<span>{{ $t(`specialThanks.people[${i}].name`) }}</span>
<p>{{ $t(`specialThanks.people[${i}].caption`) }}</p>
</a>
</div>
</div>
</section>
<section class="team-helpers">
<div class="sect-top sect">
<h2
id="special-thanks"
class="dot title"
:data-title-suffix="titleSuffixHandler('specialThanks.titleSuffix')"
>
{{ $t("specialThanks.title") }}
</h2>
<p class="text">
{{ $t("specialThanks.text") }}
</p>
</div>
<div class="animation-wrapper">
<div class="row first">
<div class="team-helpers-cards">
<a
v-for="i in [...even(maxContributorsIndex), ...even(maxContributorsIndex)]"
:key="i"
:href="$te(`specialThanks.people[${i}].github`) ? $t(`specialThanks.people[${i}].github`) : undefined"
target="_blank"
:class="{ 'helper-card': true, 'special': $te(`specialThanks.people[${i}].special`) }"
>
<div class="img-wrapper">
<img
:src="$t(`specialThanks.people[${i}].picture`)"
class="pfp"
alt=""
>
</div>
<span>{{ $t(`specialThanks.people[${i}].name`) }}</span>
<p>{{ $t(`specialThanks.people[${i}].caption`) }}</p>
</a>
</div>
</div>
<div class="row second">
<div class="team-helpers-cards">
<a
v-for="i in [...odd(maxContributorsIndex), ...odd(maxContributorsIndex)]"
:key="i"
:href="$te(`specialThanks.people[${i}].github`) ? $t(`specialThanks.people[${i}].github`) : undefined"
target="_blank"
:class="{ 'helper-card': true, 'special': $te(`specialThanks.people[${i}].special`) }"
>
<div class="img-wrapper">
<img
:src="$t(`specialThanks.people[${i}].picture`)"
class="pfp"
alt=""
>
</div>
<span>{{ $t(`specialThanks.people[${i}].name`) }}</span>
<p>{{ $t(`specialThanks.people[${i}].caption`) }}</p>
</a>
</div>
</div>
</div>
</section>
<section class="update-signup">
<div class="sect hero-meta reduced-margin">
<!-- keeping this one as is because i'd fix this using a logotype component and components are out of scope for now -->
<svg
alt=""
xmlns="http://www.w3.org/2000/svg"
width="48.87"
height="71.093"
viewBox="0 0 48.87 71.093"
>
<g
id="XMLID_6_"
transform="translate(0)"
<div class="row second">
<div class="team-helpers-cards">
<a
v-for="i in [...odd(maxContributorsIndex), ...odd(maxContributorsIndex)]"
:key="i"
:href="$te(`specialThanks.people[${i}].github`) ? $t(`specialThanks.people[${i}].github`) : undefined"
target="_blank"
:class="{ 'helper-card': true, 'special': $te(`specialThanks.people[${i}].special`) }"
>
<path
id="XMLID_15_"
d="M69.581,29.593c-2.029,1.068-.249,4.129,1.78,3.061,5.162-2.67,11.463-2.6,16.981-1.1,4.735,1.282,9.5,3.845,12.246,8.045,1.246,1.922,4.307.142,3.061-1.78C96.921,27.386,80.3,24.04,69.581,29.593Z"
transform="translate(-60.112 -20.086)"
fill="#9d6ff3"
/>
<path
id="XMLID_14_"
d="M103.359,21.045c-3.951-6.159-10.751-10-17.657-11.89C77.763,6.948,68.721,7.019,61.281,10.9c-2.029,1.068-.249,4.129,1.78,3.061,6.586-3.453,14.667-3.311,21.644-1.388,5.981,1.638,12.1,4.913,15.521,10.252C101.507,24.783,104.569,23,103.359,21.045Z"
transform="translate(-54.766 -7.693)"
fill="#9d6ff3"
/>
<path
id="XMLID_9_"
d="M65.995,47.8a20.7,20.7,0,0,0-12.958,4.45H47.27a2.579,2.579,0,0,0-2.67,2.456v47.239a2.763,2.763,0,0,0,2.67,2.67h5.838a2.639,2.639,0,0,0,2.528-2.67V87.564A21.228,21.228,0,1,0,65.995,47.8Zm0,33.178a12,12,0,1,1,12-12A12,12,0,0,1,65.995,80.978Z"
transform="translate(-44.6 -33.522)"
fill="#9d6ff3"
/>
</g>
</svg>
<h2
id="discord-join"
class="dot title"
:data-title-suffix="titleSuffixHandler('discordJoin.titleSuffix')"
>
{{ $t("discordJoin.title") }}
</h2>
<p class="text">
{{ $t("discordJoin.text") }}
</p>
<div class="img-wrapper">
<img
:src="$t(`specialThanks.people[${i}].picture`)"
class="pfp"
alt=""
>
</div>
<span>{{ $t(`specialThanks.people[${i}].name`) }}</span>
<p>{{ $t(`specialThanks.people[${i}].caption`) }}</p>
</a>
</div>
</div>
<div class="floating-serverjoin">
<p>{{ $t("discordJoin.widget.text") }}</p>
<a
href="https://discord.gg/pretendo"
target="_blank"
>{{ $t("discordJoin.widget.button") }}</a>
</div>
<div class="circle" />
</section>
</div>
</section>
<section class="update-signup">
<div class="sect hero-meta reduced-margin">
<!-- keeping this one as is because i'd fix this using a logotype component and components are out of scope for now -->
<svg
alt=""
xmlns="http://www.w3.org/2000/svg"
width="48.87"
height="71.093"
viewBox="0 0 48.87 71.093"
>
<g
id="XMLID_6_"
transform="translate(0)"
>
<path
id="XMLID_15_"
d="M69.581,29.593c-2.029,1.068-.249,4.129,1.78,3.061,5.162-2.67,11.463-2.6,16.981-1.1,4.735,1.282,9.5,3.845,12.246,8.045,1.246,1.922,4.307.142,3.061-1.78C96.921,27.386,80.3,24.04,69.581,29.593Z"
transform="translate(-60.112 -20.086)"
fill="#9d6ff3"
/>
<path
id="XMLID_14_"
d="M103.359,21.045c-3.951-6.159-10.751-10-17.657-11.89C77.763,6.948,68.721,7.019,61.281,10.9c-2.029,1.068-.249,4.129,1.78,3.061,6.586-3.453,14.667-3.311,21.644-1.388,5.981,1.638,12.1,4.913,15.521,10.252C101.507,24.783,104.569,23,103.359,21.045Z"
transform="translate(-54.766 -7.693)"
fill="#9d6ff3"
/>
<path
id="XMLID_9_"
d="M65.995,47.8a20.7,20.7,0,0,0-12.958,4.45H47.27a2.579,2.579,0,0,0-2.67,2.456v47.239a2.763,2.763,0,0,0,2.67,2.67h5.838a2.639,2.639,0,0,0,2.528-2.67V87.564A21.228,21.228,0,1,0,65.995,47.8Zm0,33.178a12,12,0,1,1,12-12A12,12,0,0,1,65.995,80.978Z"
transform="translate(-44.6 -33.522)"
fill="#9d6ff3"
/>
</g>
</svg>
<h2
id="discord-join"
class="dot title"
:data-title-suffix="titleSuffixHandler('discordJoin.titleSuffix')"
>
{{ $t("discordJoin.title") }}
</h2>
<p class="text">
{{ $t("discordJoin.text") }}
</p>
</div>
<div class="floating-serverjoin">
<p>{{ $t("discordJoin.widget.text") }}</p>
<a
href="https://discord.gg/pretendo"
target="_blank"
>{{ $t("discordJoin.widget.button") }}</a>
</div>
<div class="circle" />
</section>
</template>
<style lang="scss" scoped>

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 306 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-copy"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>

After

Width:  |  Height:  |  Size: 344 B

View File

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="839.371" height="893.406" viewBox="0 0 839.371 893.406">
<g id="deco" transform="translate(-1064.958 -142.958)">
<g id="Ellipse_12" data-name="Ellipse 12" transform="translate(1314 265)" fill="none" stroke="#9d6ff3" stroke-width="26">
<circle cx="56" cy="56" r="56" stroke="none"/>
<circle cx="56" cy="56" r="69" fill="none"/>
</g>
<g id="Ellipse_22" data-name="Ellipse 22" transform="translate(1361 771)" fill="none" stroke="#59c9a5" stroke-width="26">
<circle cx="77" cy="77" r="77" stroke="none"/>
<circle cx="77" cy="77" r="90" fill="none"/>
</g>
<g id="Ellipse_13" data-name="Ellipse 13" transform="translate(1801.405 273.601) rotate(1)" fill="none" stroke="#9d6ff3" stroke-width="26">
<circle cx="23" cy="23" r="23" stroke="none"/>
<circle cx="23" cy="23" r="36" fill="none"/>
</g>
<g id="Ellipse_23" data-name="Ellipse 23" transform="matrix(0.839, -0.545, 0.545, 0.839, 1651.184, 609.237)" fill="none" stroke="#25224f" stroke-width="26">
<circle cx="78.5" cy="78.5" r="78.5" stroke="none"/>
<circle cx="78.5" cy="78.5" r="91.5" fill="none"/>
</g>
<circle id="Ellipse_15" data-name="Ellipse 15" cx="23" cy="23" r="23" transform="translate(1586.473 353) rotate(-45)" fill="#9d6ff3"/>
<ellipse id="Ellipse_21" data-name="Ellipse 21" cx="11" cy="10.5" rx="11" ry="10.5" transform="translate(1588.958 188.514) rotate(-45)" fill="#9d6ff3"/>
<ellipse id="Ellipse_25" data-name="Ellipse 25" cx="11" cy="10.5" rx="11" ry="10.5" transform="translate(1143.958 1021.514) rotate(-45)" fill="#9d6ff3"/>
<ellipse id="Ellipse_26" data-name="Ellipse 26" cx="11" cy="10.5" rx="11" ry="10.5" transform="translate(1064.958 158.514) rotate(-45)" fill="#9d6ff3"/>
<circle id="Ellipse_16" data-name="Ellipse 16" cx="23" cy="23" r="23" transform="translate(1169.473 524) rotate(-45)" fill="#59c9a5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 679.06 692"><defs><style>.d{stroke-width:2px;}.d,.e,.f,.g,.h,.i,.j,.k,.l{stroke:#673db6;}.d,.e,.f,.g,.h,.i,.j,.k,.l,.m{stroke-miterlimit:10;}.d,.g,.l{fill:none;}.n{fill:#e4d8fd;}.e{stroke-width:5.5px;}.e,.h,.i,.j{fill:#cab1fb;}.f{stroke-width:9px;}.f,.k,.o{fill:#9d6ff3;}.p{fill:#673db6;}.g{stroke-width:4px;}.h{stroke-width:5px;}.i{stroke-width:3px;}.j{stroke-width:6px;}.k{stroke-width:8px;}.l{stroke-width:2.5px;}.m{fill:#fff;stroke:#fff;stroke-width:44px;}</style></defs><g id="a"/><g id="b"><g id="c"><g><path class="m" d="M62.99,346c-22.64,0-40.99,18.35-40.99,40.99v242.03c0,22.64,18.35,40.99,40.99,40.99H616.07c22.64,0,40.99-18.35,40.99-40.99v-242.03c0-22.64-18.35-40.99-40.99-40.99,22.64,0,40.99-18.35,40.99-40.99V62.99c0-22.64-18.35-40.99-40.99-40.99H62.99c-22.64,0-40.99,18.35-40.99,40.99v242.03c0,22.64,18.35,40.99,40.99,40.99Z"/><rect class="p" x="21.99" y="22" width="635.06" height="324" rx="40.99" ry="40.99"/><rect class="n" x="31.6" y="31.24" width="615.84" height="285.52" rx="35.36" ry="35.36"/><rect class="k" x="120.12" y="45.65" width="438.79" height="256.7" rx="5.15" ry="5.15"/><rect class="p" x="21.99" y="346" width="635.06" height="324" rx="40.99" ry="40.99"/><rect class="n" x="31.61" y="355.47" width="615.84" height="303.39" rx="36.45" ry="36.45"/><rect class="f" x="162.85" y="377.21" width="353.36" height="259.91" rx="4.65" ry="4.65" transform="translate(679.06 1014.34) rotate(180)"/><circle class="h" cx="590.1" cy="454.78" r="14.56"/><circle class="h" cx="559.71" cy="485.84" r="14.56"/><circle class="i" cx="559.71" cy="412.09" r="11.66"/><g><path class="e" d="M100.88,555.63v18.05c0,3.56-2.89,6.45-6.45,6.45h-11.28c-3.56,0-6.45-2.89-6.45-6.45v-18.05h-17.73c-3.56,0-6.45-2.89-6.45-6.45v-11.28c0-3.56,2.89-6.45,6.45-6.45h17.73v-18.05c0-3.56,2.89-6.45,6.45-6.45h11.28c3.56,0,6.45,2.89,6.45,6.45v18.05h17.73c3.56,0,6.45,2.89,6.45,6.45v11.28c0,3.56-2.89,6.45-6.45,6.45h-17.73Z"/><line class="l" x1="88.79" y1="531.45" x2="88.79" y2="515.42"/><line class="l" x1="100.88" y1="543.54" x2="116.91" y2="543.54"/><line class="l" x1="88.79" y1="555.63" x2="88.79" y2="571.66"/><line class="l" x1="76.7" y1="543.54" x2="60.67" y2="543.54"/></g><g><circle class="j" cx="88.79" cy="432.53" r="25.94"/><circle class="d" cx="88.79" cy="432.53" r="43.67"/></g><circle class="i" cx="559.71" cy="589.16" r="11.66"/><circle class="h" cx="590.1" cy="518.57" r="14.56"/><circle class="h" cx="620.48" cy="487.51" r="14.56"/><circle class="i" cx="559.71" cy="628.26" r="11.66"/><circle class="i" cx="120.55" cy="628.26" r="11.66"/><rect class="o" x="120.12" y="326.34" width="438.79" height="19.76" rx="9.88" ry="9.88" transform="translate(679.04 672.45) rotate(-180)"/><circle class="g" cx="339.52" cy="336.22" r="5.64"/><circle class="p" cx="381.41" cy="336.22" r="2.39"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 478.83 478.83"><defs><style>.d{fill:#fff;}.e{fill:#9d6ff3;}</style></defs><g id="a"/><g id="b"><g id="c"><g><rect class="d" width="478.83" height="478.83" rx="123.95" ry="123.95"/><rect class="e" x="20.37" y="20.37" width="438.1" height="438.1" rx="111.02" ry="111.02"/><path class="d" d="M342.8,293l44.76,11.3c-9.38,36.76-26.26,64.79-50.64,84.09-24.38,19.3-54.18,28.95-89.4,28.95s-66.1-7.42-88.94-22.26c-22.84-14.84-40.22-36.34-52.14-64.48-11.92-28.15-17.88-58.37-17.88-90.67,0-35.22,6.73-65.94,20.19-92.17,13.46-26.22,32.61-46.14,57.45-59.75,24.84-13.61,52.18-20.42,82.02-20.42,33.83,0,62.29,8.62,85.36,25.84,23.07,17.23,39.14,41.45,48.22,72.67l-44.07,10.38c-7.84-24.61-19.23-42.53-34.14-53.75-14.92-11.23-33.68-16.84-56.29-16.84-25.99,0-47.72,6.23-65.17,18.69-17.46,12.46-29.73,29.18-36.8,50.18-7.08,21-10.61,42.65-10.61,64.94,0,28.76,4.19,53.87,12.57,75.33,8.38,21.46,21.42,37.49,39.1,48.1,17.69,10.61,36.83,15.92,57.45,15.92,25.07,0,46.29-7.23,63.68-21.69,17.38-14.46,29.14-35.91,35.3-64.37Z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 587.02 330.39"><defs><style>.d{stroke-width:2px;}.d,.e,.f,.g,.h,.i,.j,.k,.l,.m,.n{stroke:#673db6;}.d,.e,.f,.g,.h,.i,.j,.k,.l,.m,.n,.o{stroke-miterlimit:10;}.d,.g,.l{fill:none;}.e{stroke-width:5.5px;}.e,.i,.j,.k,.m{fill:#cab1fb;}.f,.h{fill:#9d6ff3;}.f,.n{stroke-width:9px;}.g,.m{stroke-width:4px;}.h,.j{stroke-width:3px;}.i{stroke-width:5px;}.k{stroke-width:6px;}.l{stroke-width:2.5px;}.n{fill:#e4d8fd;}.o{fill:#fff;stroke:#fff;stroke-width:44px;}</style></defs><g id="a"/><g id="b"><g id="c"><g><path class="o" d="M31.65,67.79c-6.16,11.69-9.65,25.01-9.65,39.15v117.38c0,46.43,37.64,84.07,84.07,84.07H480.95c46.43,0,84.07-37.64,84.07-84.07V106.94c0-14-3.42-27.2-9.47-38.81,0,0-.94-22.55-17.86-35.94-18.95-14.99-43.19-8.24-43.19-8.24-4.41-.71-8.93-1.08-13.54-1.08H106.07c-4.59,0-9.09,.37-13.47,1.07h0c-1.92-.6-24.32-7.17-43.26,7.82-16.92,13.39-17.63,33.33-17.68,36.03h0Z"/><rect class="n" x="22.31" y="22.96" width="543.02" height="285.52" rx="84.07" ry="84.07"/><rect class="f" x="145.22" y="81.43" width="296.58" height="168.57" rx="3.43" ry="3.43"/><circle class="k" cx="509.39" cy="99.01" r="26.21"/><circle class="d" cx="509.39" cy="99.01" r="19.14"/><rect class="k" x="215.56" y="42.47" width="155.89" height="19.44" rx="9.72" ry="9.72"/><path class="e" d="M107.41,175.5v12.93c0,2.55-2.07,4.62-4.62,4.62h-8.09c-2.55,0-4.62-2.07-4.62-4.62v-12.93h-12.71c-2.55,0-4.62-2.07-4.62-4.62v-8.09c0-2.55,2.07-4.62,4.62-4.62h12.71v-12.93c0-2.55,2.07-4.62,4.62-4.62h8.09c2.55,0,4.62,2.07,4.62,4.62v12.93h12.71c2.55,0,4.62,2.07,4.62,4.62v8.09c0,2.55-2.07,4.62-4.62,4.62h-12.71Z"/><line class="l" x1="98.74" y1="158.17" x2="98.74" y2="146.69"/><line class="l" x1="107.41" y1="166.84" x2="118.89" y2="166.84"/><line class="l" x1="98.74" y1="175.5" x2="98.74" y2="186.99"/><line class="l" x1="90.08" y1="166.84" x2="78.59" y2="166.84"/><circle class="k" cx="77.94" cy="99.01" r="26.21"/><circle class="d" cx="77.94" cy="99.01" r="19.14"/><circle class="k" cx="293.51" cy="279.24" r="10"/><circle class="g" cx="293.82" cy="52.2" r="5.64"/><circle class="i" cx="493.74" cy="150.72" r="9.55"/><circle class="i" cx="472.63" cy="171.74" r="9.55"/><circle class="i" cx="493.74" cy="192.76" r="9.55"/><circle class="i" cx="514.38" cy="171.74" r="9.55"/><circle class="m" cx="429.25" cy="279.24" r="8.35"/><rect class="m" x="395.94" y="271.34" width="15.81" height="15.81" rx="1.52" ry="1.52"/><line class="g" x1="468.19" y1="279.24" x2="477.74" y2="279.24"/><circle class="j" cx="464.21" cy="215.04" r="7.12"/><circle class="j" cx="464.21" cy="237.48" r="7.12"/><line class="g" x1="119.45" y1="279.24" x2="109.9" y2="279.24"/><rect class="d" x="85.47" y="216.24" width="29.48" height="18.59" rx="4.23" ry="4.23"/><path class="h" d="M31.97,67.88c3.43-6.58,10.34-17.7,22.89-27.42,15.11-11.7,30.44-15.21,38.04-16.42-1.92-.6-24.32-7.17-43.26,7.81-16.92,13.39-17.63,33.33-17.68,36.03Z"/><path class="h" d="M555.67,68.32c-3.43-6.58-10.34-17.7-22.89-27.42-15.11-11.7-30.44-15.21-38.04-16.42,1.92-.6,24.32-7.17,43.26,7.81,16.92,13.39,17.63,33.33,17.68,36.03Z"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Some files were not shown because too many files have changed in this diff Show More